Snapchat Ads Library Scraper - Political Ad Spend & Targeting
Pricing
from $1.00 / 1,000 run start fees
Snapchat Ads Library Scraper - Political Ad Spend & Targeting
Search the Snapchat Ads Library for political ads and get one row per ad: exact spend, impressions, computed CPM, paying advertiser, organisation, dates, creative URL and the full targeting spec down to electoral districts. Any year from 2019. For journalists, researchers and media buyers.
Pricing
from $1.00 / 1,000 run start fees
Rating
0.0
(0)
Developer
SR
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
21 days ago
Last modified
Categories
Share
Snapchat Ads Library Scraper
Search the Snapchat Ads Library for political ads and get clean rows for research, reporting and media buying: who paid, how much they actually spent, how many impressions they bought, and exactly who they targeted, down to electoral districts.
What you get from the Snapchat Ads Library
- Exact spend per ad, not a range. Meta's library gives you "$1.000 - $4.999". Snap publishes the number. That single difference is what makes this dataset usable for real spend analysis
- Impressions per ad, and
cpmcomputed from the two, which is the comparison a media buyer or researcher actually wants and which the raw file leaves you to work out - The full targeting spec: gender, age bracket, countries, included and excluded regions, metros, postal codes, interests, languages and electoral districts. This is the part that shows who a campaign was really speaking to
- Both sides of the disclosure:
organizationis who ran the ad,paying_advertiseris who paid, and they are frequently different entities - Any year from 2019, merged into one result and sorted by spend
- Creative URLs, so the actual image or video is one fetch away
Where the data comes from
Snap publishes this itself, as a yearly ZIP on Google Cloud Storage with no key and no login. This actor downloads it, unzips it, normalises twenty-odd inconsistently named CSV columns into stable field names, merges the years you asked for, filters, computes CPM and sorts by spend.
That is worth saying plainly: you are not paying for access here, you are paying for the parsing. The file is public. What it is not is convenient: the column names carry spaces and parentheses and have shifted between years, the dates are in a non-standard format, multi-value targeting is comma-packed into single cells, and nothing is sorted.
Input
Every field is optional. With an empty input the actor searches the current year and returns the 500 ads with the highest spend.
| Field | Type | Required | Default | What it does |
|---|---|---|---|---|
years | array | no | Current UTC year | Which yearly datasets to search. 2019 onward |
search | string | no | – | Matches organization, paying advertiser, committee and ballot information |
country | string | no | – | Country code or name; keeps only ads that targeted it |
min_spend | integer | no | – | Keep only ads at or above this spend |
ad_status | string | no | all | active keeps ads without an end date; inactive keeps the rest |
only_total | boolean | no | false | Return one count row instead of individual ads; no per-ad charge |
limit | integer | no | 500 | Ads to return, highest spend first |
Output
The example below is the first row of a real run with {"years": ["2020"], "search": "biden", "country": "US", "limit": 50}.
{"year": 2020,"ad_id": "fd0d0b097219d2a55c2d5f99a35f812a3753fc543fb8e3dab1027426d3a86544","creative_url": "https://www.snap.com/political-ads/asset/681cfd783a84bf00714ec958caff20973ec9f9756d26c7fefb639ddb963e1e80?mediaType=mp4","currency": "USD","spend": 151724,"impressions": 6082483,"start_date": "2020-11-03","end_date": "2020-11-04","organization": "GMMB, Inc","billing_address": "3050 K Street,Washington,20007,US","candidate_ballot_information": "Biden for President","paying_advertiser": "Biden for President","target_age_bracket": "18+","target_countries": ["united states"],"creative_properties": "web_view_url:https://joebiden.com/joes-vision/","cpm": 24.94,"still_running": false,"position": 1}
A count-only run (only_total: true) returns one summary row instead of ads. Real output for {"years": ["2022"], "search": "republican", "country": "US", "only_total": true}:
{"result_type": "count","query": "republican","country": "united states","ad_status": "all","years": [2022],"total_ads": 8,"still_running": 0,"finished": 8,"matches_per_year": {"2022": 8},"total_spend": 4686,"count_note": "Snap publishes no count endpoint. The yearly archive is still downloaded and filtered; what count-only saves is the per-ad charge and the dataset, not the fetch."}
Besides the fields shown above, ads carry committee_name, committee_id, committee_disclosure_name, jurisdiction, target_gender, the included and excluded regions, districts, metros, postal codes and radius, target_interests, target_languages, target_advanced_demographics, target_connection_type, target_carrier and target_geo_postal, whenever the advertiser disclosed them. You can export the dataset as JSON, CSV, Excel or HTML, or read it through the Apify API.
Use cases
Campaign spend analysis that does not need estimating. Filter to a year and an advertiser and you have the actual money, ad by ad, with impressions beside it. Most political ad research starts by guessing at spend from a range; here you do not have to.
Finding who is really behind a campaign. organization and paying_advertiser differ more often than you would expect, and committee_id ties an ad to a filed committee. That chain is the story in a lot of political ad reporting.
Targeting analysis at district level. target_districts_included shows which electoral districts a campaign bought. Comparing that against results, or against a rival's districts, is a question no other major ad library lets you ask.
Efficiency benchmarking. cpm across advertisers, geographies and years shows who bought attention cheaply and who overpaid. In testing, CPMs on the same platform ranged from about $5 to nearly $40.
Compliance and monitoring. Filter by country and min_spend on a schedule and you have a watch list for large political spend in a market.
How it compares to the Snapchat Ads Library website and other scrapers
| this actor | reading the raw file yourself | |
|---|---|---|
| Per 1,000 ads | $1.00 | free |
| Column names stable across years | yes | no, they shift |
| Dates as ISO | yes | no, 2026/02/18 11:43:43Z |
| Multi-value targeting split into arrays | yes | no, comma-packed cells |
| CPM computed | yes | no |
| Multiple years merged and sorted by spend | yes | no |
Snap's own Snapchat Ads Library web page lets you browse ads one by one; it does not give you a filtered, ranked export across years. Several other Snapchat ad scrapers on the Store focus on the ads gallery and its creatives; this one is built around the spend, impressions and targeting columns, which is what political ad analysis needs.
Being honest about it: the data is public and free. If you want one year and are happy in a spreadsheet, download the ZIP. This exists for when you want it as clean rows in a pipeline, across years, filtered and ranked.
Pricing
Pay per event, two events. run_start costs $0.001 per run. ad costs $0.001 per ad written to the dataset, which is $1.00 per 1,000 ads.
Count-only runs return one summary row with no per-ad charge. The run start fee still applies, including when no ads match. Free users receive at most ten individual ads per run.
Limits and gotchas
- Political ads only. Snap publishes no commercial ad library, so there is nothing here about brand advertising. The run says so rather than returning an empty result that looks like a failure.
totalSpendsums across currencies. A single result can carry USD, GBP, EUR, SEK, NOK and CAD at once, so that total is only meaningful when the summary'scurrenciesshows one code. It is reported with that warning attached rather than presented as a figure.- Spend is what the advertiser had spent when the file was published, not necessarily the final campaign total, and Snap regenerates the files over time.
- Each year is a separate archive. All requested years are searched before filtering. Large results are collected in multiple pages while preserving the spend order.
- Snap's
CountryCodecolumn holds country names, not codes. It containsunited states, notUS. This actor accepts either form and maps it to what the file uses, because filteringUSagainst it directly matches nothing and looks like "no ads targeted the US" rather than a broken comparison. end_dateis empty on ads still running, which is surfaced asstill_runningrather than left as a blank you have to interpret.- Targeting fields are only as complete as the advertiser's disclosure. Many ads set none, and those come back without the field rather than with an empty one.
FAQ
Does this cover normal Snapchat ads? No. Snap only publishes political advertising, so a commercial ad library does not exist to scrape.
Is the spend exact or a range? Exact, in the ad's own currency. This is the main advantage over Meta's library.
How far back does it go? 2019. Every year through the current one is available.
Why is total spend across mixed currencies? Because Snap reports each ad in the currency its account used. The summary lists which currencies are present so you can split before summing.
Is this the same data as the Snapchat political ads library on snap.com? Yes. It is the archive Snap publishes for its political ads library, parsed into stable fields and merged across the years you choose.
What does a run cost if nothing matches? Only the run start fee of $0.001. Ads are charged per row written, so an empty result costs nothing beyond that.
Can I get the creative?
creative_url links straight to the image or video Snap hosts.
Related Actors
- Meta Ads Library — Facebook and Instagram ads
- TikTok Ads Library — TikTok ad research
- Google Ads Transparency — ads across Google, YouTube and Search
- LinkedIn Ads Library — LinkedIn ad research