Snapchat Ads Library Scraper: EU Ads & Impressions avatar

Snapchat Ads Library Scraper: EU Ads & Impressions

Under maintenance

Pricing

from $1.00 / 1,000 ads

Go to Apify Store
Snapchat Ads Library Scraper: EU Ads & Impressions

Snapchat Ads Library Scraper: EU Ads & Impressions

Under maintenance

Returns 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

Kyungmin Lee

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

a day ago

Last modified

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 impressionsTotal and impressionsByCountry across 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

  1. Enter one or more Advertiser names. Snap matches them partially: Nike finds Nike, Inc.. Turn on Exact advertiser match to drop other advertisers whose names only contain yours.
  2. Choose Countries (lowercase codes such as de, fr, it). Leave the list empty to search all 27 EU countries and Turkey.
  3. Optionally set Active from / Active until. The default is the last 90 days. Set Ad status to ACTIVE or PAUSED to narrow the results.
  4. Set Max ads per advertiser (default 100) and click Start.
  5. Download the results from the Dataset tab as JSON, CSV, Excel or HTML, or fetch them through the Apify API.

Input

FieldTypeDefaultDescription
advertiserNamesarray (required)["Nike"] (prefill)Paying advertiser names, partial match
countriesarrayall 28at 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, dateToYYYY-MM-DDlast 90 daysAds running in this window
statusALL / ACTIVE / PAUSEDALLDelivery status
maxAdsPerAdvertiserinteger100Limit per advertiser name (max 5,000)
exactAdvertiserMatchbooleanfalseKeep 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
includeProductsbooleantrueAdd the catalog products of dynamic product ads
proxyConfigurationobjectoffOnly 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

FieldDescription
adId, adDetailApiUrlSnap's ad ID and its official Ads Library API URL
campaignName, adAccountNameAd name and ad account set by the advertiser
payingAdvertiserName, brandProfileName, brandLogoUrlLegal payer, public brand profile and its logo
status, reviewStatus, rejectionReasonsDelivery and review state
creativeType, adType, renderType, mediaTypeFormat, e.g. WEB_VIEW + VIDEO, COLLECTION, COMPOSITE (story ads)
headline, callToActionAd copy shown on the Snap
mediaDownloadUrlDirect MP4/image file (not available for dynamic ads)
landingUrl, deepLinkUrlWebsite or app destination
startDate, endDate, daysActiveWhen 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, topCountryImpressions in the EU and Turkey, per country (zeros removed)
targetingminAge, maxAge, ageGroups, gender, languages, advancedDemographics, devices, regulatedContent
languagesCreative languages
storySnapsEach snap of a story (composite) ad
isDynamicProductAd, productCount, productsCatalog products: title, link, image, brand, availability, condition, type, colour, size, gender, age group, description
searchedName, scrapedAtWhich 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: Nike may 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 (Zalando rather than Zalando 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: ACTIVE and 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.