Snapchat Ads Library Scraper: EU Ads & Impressions
Under maintenancePricing
from $1.00 / 1,000 ads
Snapchat Ads Library Scraper: EU Ads & Impressions
Under maintenanceReturns ads from Snapchat's public EU Ads Library (EU-27 + Turkey) by advertiser name: impressions per country, targeting, dates, media and landing URLs, products. No login. Example: advertiserNames=["Nike"]. Pay per event: $0.001 per ad.
Pricing
from $1.00 / 1,000 ads
Rating
0.0
(0)
Developer
Kyungmin Lee
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
What does Snapchat Ads Library Scraper do?
Snapchat Ads Library Scraper pulls every ad a company runs on Snapchat in Europe from the Snapchat Ads Gallery, Snap's EU ad transparency library, using Snap's publicly documented Ads Library API. You get one row per ad. Each row has the paying advertiser, brand profile, headline, call to action, video or image download link, landing page, start date, impressions per country, targeting (age, gender, languages, devices) and, for dynamic product ads, the catalog products shown.
Type one or more advertiser names (Nike, Zalando, Netflix), choose countries and a date range, and click Start. No Snapchat account, no browser, no proxy needed.
The data comes from the EU Digital Services Act (DSA) ad repository. Snap publishes ads shown in the 27 EU countries and Turkey only, so ads shown only in the US, UK or elsewhere are not included.
This is an unofficial tool. It is not affiliated with, endorsed by or sponsored by Snap Inc. It only calls the open Ads Library endpoints that Snap documents for third-party use (adsapi.snapchat.com/v1/ads_library). It never scrapes the adsgallery.snap.com website and never touches creator or personal profiles.
Why use Snapchat Ads Library Scraper?
- Competitor ad intelligence: see which Snapchat ads a competitor runs in Europe, how long each one has been live and how many people saw it in each country.
- Creative research: download the actual MP4 and image files, headlines and calls to action across a whole category.
- Market sizing: compare
impressionsTotalandimpressionsByCountryacross brands and markets. - Agency reporting: schedule a weekly run per client and send new ads to Sheets, Slack or your BI tool.
- Cross-channel view: use it with our Google Ads Transparency Center Scraper to see a brand's Google and Snapchat ads side by side.
Compared with other Snapchat ad scrapers, this one handles several advertisers and several countries in one run. It returns impressions as numbers, flattens targeting into simple fields, includes DPA catalog products and gives media download links for video ads. It runs without residential proxies, so it is fast and cheap.
How to use Snapchat Ads Library Scraper
- Enter one or more Advertiser names. Snap matches them partially:
NikefindsNike, Inc.. Turn on Exact advertiser match to drop other advertisers whose names only contain yours. - Choose Countries (lowercase codes such as
de,fr,it). Leave the list empty to search all 27 EU countries and Turkey. - Optionally set Active from / Active until. The default is the last 90 days. Set Ad status to
ACTIVEorPAUSEDto narrow the results. - Set Max ads per advertiser (default 100) and click Start.
- Download the results from the Dataset tab as JSON, CSV, Excel or HTML, or fetch them through the Apify API.
Input
| Field | Type | Default | Description |
|---|---|---|---|
advertiserNames | array (required) | ["Nike"] (prefill) | Paying advertiser names, partial match |
countries | array | all 28 | at be bg hr cy cz dk ee fi fr de el hu ie it lv lt lu mt nl pl pt ro sk si es se tr (gr is accepted for Greece) |
dateFrom, dateTo | YYYY-MM-DD | last 90 days | Ads running in this window |
status | ALL / ACTIVE / PAUSED | ALL | Delivery status |
maxAdsPerAdvertiser | integer | 100 | Limit per advertiser name (max 5,000) |
exactAdvertiserMatch | boolean | false | Keep only ads whose paying advertiser or brand profile name equals the searched name (ignoring case, punctuation and legal suffixes such as Inc., GmbH, SE). Skipped ads are not charged |
includeProducts | boolean | true | Add the catalog products of dynamic product ads |
proxyConfiguration | object | off | Only needed if Snap throttles you |
{"advertiserNames": ["Zalando", "About You"],"countries": ["de", "at", "nl"],"dateFrom": "2026-07-01","status": "ACTIVE","maxAdsPerAdvertiser": 200}
Quick API example
Minimal input (also the prefill style used in the Apify Console):
{"advertiserNames": ["Nike"], "maxAdsPerAdvertiser": 20}
Run synchronously and get the dataset items in one call (replace <TOKEN> with your Apify API token):
POST https://api.apify.com/v2/acts/kyungminlee~snapchat-ads-library-scraper/run-sync-get-dataset-items?token=<TOKEN>Content-Type: application/json{"advertiserNames": ["Nike"], "maxAdsPerAdvertiser": 20}
AI agents using the Apify MCP server can call this Actor as kyungminlee/snapchat-ads-library-scraper with the same JSON input.
Output
An ad from a search for Zalando (long URLs shortened):
{"adId": "4c97f2f7-f0eb-4946-86a2-46851e9967ea","campaignName": "SA-1-M","adAccountName": "Zalando Marketing Services GmbH","payingAdvertiserName": "Zalando Marketing Services GmbH","brandProfileName": "Zalando","brandLogoUrl": "https://cf-st.sc-cdn.net/aps/bolt/...FMjpeg","status": "ACTIVE","reviewStatus": "APPROVED","creativeType": "WEB_VIEW","adType": "REMOTE_WEBPAGE","mediaType": "VIDEO","headline": "Brandneu: Der Stiefel der Saison","callToAction": "SHOP NOW","mediaDownloadUrl": "https://cf-st.sc-cdn.net/d/5XvNxPigzlfC62EyvNVGW.67?mo=...","landingUrl": "https://www.zalando.de/campaigns/converse-puffed-up/?wmc=...","deepLinkUrl": null,"startDate": "2025-11-20T16:00:22.000Z","endDate": null,"daysActive": 328,"impressionsTotal": 65004,"impressionsByCountry": { "de": 65004 },"topCountry": "de","targeting": {"minAge": 18, "maxAge": 34, "ageGroups": [], "gender": "FEMALE", "languages": [],"advancedDemographics": [], "devices": [], "regulatedContent": false},"languages": ["de"],"isDynamicProductAd": false,"productCount": 0,"products": [],"adDetailApiUrl": "https://adsapi.snapchat.com/v1/ads_library/ads/4c97f2f7-f0eb-4946-86a2-46851e9967ea","searchedName": "Zalando","scrapedAt": "2026-10-15T02:56:16+00:00"}
Dynamic product ads (isDynamicProductAd: true) add a products array, e.g. {"title": "...", "link": "https://www.nike.com/de/t/...", "imageUrl": "https://cf-st.sc-cdn.net/d/...", "brand": "Nike", "availability": "IN STOCK", "condition": "NEW", "productType": ["Kids > Shoes > Casualwear"]}. Story ads (creativeType: COMPOSITE) add storySnaps, one entry per snap with its own headline, media link and landing page.
A SUMMARY record in the run's key-value store lists the ads per name, the names with no ads and any failures.
Data fields
| Field | Description |
|---|---|
adId, adDetailApiUrl | Snap's ad ID and its official Ads Library API URL |
campaignName, adAccountName | Ad name and ad account set by the advertiser |
payingAdvertiserName, brandProfileName, brandLogoUrl | Legal payer, public brand profile and its logo |
status, reviewStatus, rejectionReasons | Delivery and review state |
creativeType, adType, renderType, mediaType | Format, e.g. WEB_VIEW + VIDEO, COLLECTION, COMPOSITE (story ads) |
headline, callToAction | Ad copy shown on the Snap |
mediaDownloadUrl | Direct MP4/image file (not available for dynamic ads) |
landingUrl, deepLinkUrl | Website or app destination |
startDate, endDate, daysActive | When the ad started (and ended, if Snap publishes it). daysActive is the days since the start for active ads (empty for paused ads without an end date) |
impressionsTotal, impressionsByCountry, topCountry | Impressions in the EU and Turkey, per country (zeros removed) |
targeting | minAge, maxAge, ageGroups, gender, languages, advancedDemographics, devices, regulatedContent |
languages | Creative languages |
storySnaps | Each snap of a story (composite) ad |
isDynamicProductAd, productCount, products | Catalog products: title, link, image, brand, availability, condition, type, colour, size, gender, age group, description |
searchedName, scrapedAt | Which input name found the ad, and when |
Pricing
This Actor uses pay per event pricing: $1 per 1,000 ads ($0.001 per ad saved to the dataset). There is no start fee and no subscription. Names that return no ads, failed requests and duplicate ads are never charged. Example: 5 competitors × 100 ads = 500 ads ≈ $0.50. The run stops as soon as your maximum charge per run is reached.
Tips
- Partial matching:
Nikemay also return small advertisers whose name contains "Nike" (e.g. "Oya Nike Botanica"). The final status message shows what each name matched, e.g.Nike → Nike, Inc. (58), Oya Nike Botanica (2). Turn on Exact advertiser match to keep only the company itself (Nike= "Nike, Inc.",Zalando= "Zalando SE" or the "Zalando" brand profile). The other advertisers' ads are then skipped and not charged. - Use the shortest distinctive name (
Zalandorather thanZalando SE Berlin). - One request returns 10 ads, about 1 second each, so 1,000 ads take roughly 2 minutes.
- An ad found by two names is saved once, under the first name.
- For weekly monitoring, schedule a run with
status: ACTIVEand a 7-day date range. - Also check Bing search ads: the same advertiser's Bing ads are in Microsoft Ads Library Scraper.
FAQ
Is this the official Snapchat API? It uses Snap's official, publicly documented Ads Library API, which Snap says is open for third-party use without an OAuth token. The Actor itself is unofficial and not affiliated with Snap Inc.
Why only Europe and Turkey? The Ads Gallery exists because of the EU Digital Services Act. Snap does not publish US or other ads there.
Can I search by keyword or list all ads in a country? No. Snap's API requires an advertiser name.
Does it collect personal data? No. It returns company-level advertising data only. Snap's creator "sponsored content" search is intentionally not used.
Something broke? Open an issue in the Issues tab with your input and run ID.