Ads
Shapiro side · ads
74 running now
Garrity side · ads
20 running now
Shapiro reach
impressions
Garrity reach
impressions
Libraries pulled Oct 25. Spend and reach are the ranges the libraries publish, summed. TV, cable, radio and mail are not in any public library.
Spend by platform
- Shapiro side (navy showing = his lead)
- Garrity side
Meta
$2.5M–3M vs $116K–161.8KSnapchat
$1.3K–1.3K vs $0New ads per week
- Shapiro side
- Garrity side
TV, by market
FCC political files: orders and invoices filed by station, not dollars.
| Market | Shapiro | Garrity |
|---|---|---|
| Wilkes Barre-Scranton 6 stations | 417 | 33 |
| Pittsburgh 6 stations | 346 | 50 |
| Harrisburg-Lancaster-Lebanon-York 5 stations | 286 | 46 |
| Philadelphia 11 stations | 277 | 19 |
| Erie 4 stations | 99 | 30 |
| Johnstown-Altoona-State College 4 stations | 76 | 29 |
Reported spending
$30M · Shapiro for PA · cumulative TV + digital to Oct. 6, 2026 (fragment)
$3M · Shapiro for PA · one week (week before Oct. 6, 2026); 'nearly'
$2.1K · Garrity for PA · one week (week before Oct. 6, 2026)
$19M · Shapiro for PA · June 9-Sept. 14, 2026, TV + digital; 'more than'
$13.5M · Shapiro for PA · June 9-Sept. 14, 2026, TV only
$1.3M · DGA · contribution to Shapiro campaign, June 9-Sept. 14, 2026 (not DGA ad spending)
$440K · Garrity for PA · June 9-Sept. 14, 2026, all advertising ($204,000 of it TV)
$27M · Shapiro for PA · 2026 to Sept. 24 (TV + streaming); 'top' = more than
What each side is saying
Nobody is running ads on: skill games, vapes, Israel/Gaza
| Topic | Shapiro ads | Garrity ads |
|---|---|---|
| taxes | 8 | 34 |
| economy/costs | 35 | 14 |
| schools | 39 | 6 |
| Trump | 44 | 1 |
| get-out-the-vote | 15 | 4 |
| energy/data centers | 8 | 5 |
| biography | 2 | 4 |
| abortion | 0 | 1 |
| crime | 3 | 0 |
| skill games | 0 | 0 |
| vapes | 0 | 0 |
| Israel/Gaza | 0 | 0 |
| Attacks the other side | 4 | 48 |
Share of each side’s ads with published text (190 Shapiro, 55 Garrity) that mention the topic. Google video ads carry no text.
Who is paying
| Advertiser | Helps | Where | Ads | Running | Spend |
|---|---|---|---|---|---|
| SHAPIRO FOR PENNSYLVANIA | Shapiro | 176 | 38 | $3.8M–4.5M | |
| Josh Shapiro | Shapiro | Meta | 149 | 30 | $2.2M–2.7M |
| Garrity for PA | Garrity | 31 | 14 | $317.5K–384.3K | |
| SHAPIRO, JOSH FOR PENNSYLVANIA | Shapiro | 4 | 1 | $284K–341K | |
| Better PA | Shapiro | Meta | 14 | 0 | $116.4K–144.2K |
| America Works USA | Shapiro | Meta | 4 | 0 | $83K–109K |
| Commonwealth Foundation | Garrity | Meta | 26 | 1 | $41.7K–64.6K |
| Jobs and Democracy PAC | Other | Meta | 1 | 0 | $40K–45K |
| Clean Jobs for PA | Other | Meta | 1 | 0 | $33.5K–45K |
| Pennsylvania's Megaphone | Shapiro | Meta | 5 | 0 | $32.7K–42.1K |
| Commonwealth Action | Garrity | Meta | 1 | 0 | $35K–40.6K |
| Stacy Garrity for Pennsylvania | Garrity | Meta | 8 | 2 | $26.9K–39.7K |
Every ad
74 ads, largest spend first.
Gov. Josh Shapiro | Donate Now — Hey, Josh Shapiro here. I know you don't have a lot of time, so I'll be quick. Can you chip in just five bucks to my campaign today? Thanks!
$276,500–318,500text ad, no text published by the library
$250,000–300,000Gov. Josh Shapiro | Donate Now — Hey – It's Gov. Josh Shapiro here. I'm standing with my friend Gov. Gretchen Whitmer to talk about what's at stake here in Pennsylvania. I'm one of the last statewide Democrats left in this Commonwealth, and they're throwing everything they've got at us. Will you rush $1 or whatever you
$154,500–177,099text ad, no text published by the library
$125,000–150,000video ad, no text published by the library
$125,000–150,000A Governor on Your Side — You work hard to make your dreams come true. You deserve a governor on your side.
$110,000–140,000video ad, no text published by the library
$100,000–125,000Gov. Josh Shapiro | Donate Now — Josh Shapiro here. Donald Trump and his enablers like my opponent, they're doing everything they can to undermine our freedom and undermine our democracy. And I'm standing up for you. I'm standing up for our Constitution. I'm standing up for all Pennsylvanians. I need your help. If you
$97,300–127,692Gov. Josh Shapiro | Donate Now — Hey you! Yes, you! Before you scroll away: I'm running for reelection in the most competitive swing state in the country, and he can’t pull off a victory without the help of grassroots supporters like you. Will you chip in right now to help us reach thousands of undecided voters and win
$81,500–92,698video ad, no text published by the library
$80,000–90,000video ad, no text published by the library
$70,000–80,000video ad, no text published by the library
$50,000–60,000Every day, we're working to get stuff done and deliver results for every Pennsylvanian.
$30,600–40,167We have your back — We know times are tough. That’s why we've cut taxes 10 times and fought back against utility rate hikes. All to keep more money in your pockets.
$30,000–35,000video ad, no text published by the library
$25,000–30,000video ad, no text published by the library
$20,000–25,000video ad, no text published by the library
$15,000–20,000video ad, no text published by the library
$15,000–20,000video ad, no text published by the library
$15,000–20,000video ad, no text published by the library
$10,000–15,000
Sources and gaps
- Meta (Facebook, Instagram): 368 ads. Apify curious_coder~facebook-ads-library-scraper; 13 keyword searches + 2 pages, ads started since 2026-01-01. Apify cost $3.35. The actor does not return the regional or demographic breakdowns, so pa_share and demographics are null.
- Google (Search, YouTube, Display): 214 ads. BigQuery bigquery-public-data.google_political_ads.creative_stats, creatives served since 2026-01-01 targeted at PA or from the named advertisers (2.7 GB scanned). Google publishes no ad text in this dataset, so headline/text/topics are empty for Google ads. SerpAPI google_ads_transparency_center returns the same fields, so it is not used.
- Snapchat: 3 ads. https://storage.googleapis.com/ad-manager-political-ads-dump/political/2026/PoliticalAds.zip (Snap updates it daily). Filtered in build_ads.py to ads naming Shapiro or Garrity.
- TV/radio: FCC public inspection files: 0 ads. shapiro_docs / garrity_docs = documents (PDFs) in the station's 2026 political file under a folder named for the candidate (State, Local or Issue-ad categories, including Governor / General Election sub-containers), plus documents filed loose whose file name has the candidate's name. They are NAB PB-18 forms, orders, revisions, invoices and cancellations, not ad or spot counts. *_joint_docs = folders whose names also carry another candidate (e.g. 'Shapiro-Albillar-Thomas', 'Shapiro-Wrightson', or files in a 'GovernorSenate' folder); kept out of the main count because the buyer is not clearly the governor campaign. Dollars: not available. The OPIF API metadata exposes only file name, size, status and timestamps; amounts are inside the PDFs. doc_kinds is a rough guess from file names; many stations name files only by order number ('other'). other_governor_folders are matched by folder name only (RGA/DGA/'Governor') or anything filed inside a Governor container folder. Issue-ad groups that don't say so in the name are listed unclassified in issue_ad_folders. search_crosscheck = hits from the OPIF search endpoint (matches folder paths; misses loose files), for spotting folders the walk missed.
- TV: press-reported spending (AdImpact etc.): 0 ads. hand-collected press figures in this folder
- Reddit: partial. 0 matching posts. control_new: 25 entries, newest 2026-08-12T17:35:17+00:00 Reddit policy post (2024-07-22T21:42:36+00:00, https://www.reddit.com/r/RedditPoliticalAds/comments/1e9qcvw/updating_our_approach_to_political_ads/) says: 'We only accept political ads in the US at the federal level' - a state governor race is not eligible. Shapiro: <HTTPError 429: 'Too Many Requests'> Garrity: 0 entries Pennsylvania governor: <HTTPError 429: 'Too Many Requests'>
- TikTok: unavailable. Bans political ads (paid political content is not allowed), so there is no library to check.
- X (Twitter): unavailable. Allows US political ads again but publishes no public political ad library with spend; not tracked.
- Streaming / CTV / mail / radio: unavailable. No public ad library. Only visible through FCC broadcast filings or press reports.
Not covered: Reddit; TikTok; X (Twitter); Streaming / CTV / mail / radio.