Snapchat Ads Scraper | Ad Library, Impressions & Targeting avatar

Snapchat Ads Scraper | Ad Library, Impressions & Targeting

Pricing

from $1.28 / 1,000 ads

Go to Apify Store
Snapchat Ads Scraper | Ad Library, Impressions & Targeting

Snapchat Ads Scraper | Ad Library, Impressions & Targeting

Snapchat ads scraper for the Snap Ads Library (Ads Gallery). Search a brand, paste a Gallery link or an ad id and get headline, creative, landing page, catalog products, impressions by country, age and gender targeting, status and dates. 20 ads in 9 seconds, 32 fields each, no Snapchat account.

Pricing

from $1.28 / 1,000 ads

Rating

0.0

(0)

Developer

SilentFlow

SilentFlow

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

10 hours ago

Last modified

Share

Snapchat Ads Scraper | Ad Library, Impressions & Targeting (2026)

1 search. 20 Snapchat ads. 32 fields per ad.

From SilentFlow. Creators of Pinterest Scraper (#1 for โ€œpinterest pins scraperโ€ in Apify Store search) and Leboncoin Scraper Ppe, with 250,000+ combined lifetime runs.

Every Snapchat ad a brand ran in Europe, in one table: headline, creative, landing page, catalog products, impressions by country and the audience it was bought for. Type a brand, paste an Ads Gallery link or an ad id, and get rows you can sort, filter and join. 20 Nike ads in 29 seconds on the prefilled run, no Snapchat account.

Why choose this actor?

Scrolling the Snap Ads Gallery one ad at a time and copying headlines into a spreadsheet? Running one brand and one country per run, then stitching the files together? Getting a media link for one ad format and nothing for the others, with no idea who the ad was aimed at?

  • 30 fields filled on a typical row, against the 19 the most used Snapchat ads scraper shows. On a measured run of 100 Nike ads (4 Oct 2026), 30 of the 38 fields of a row carry a value on at least half of the rows: the landing page and its domain, the brand, the ad account, total and per-country impressions, the targeted minimum age and gender, the media link of single snaps, story ads, collections and catalog ads alike, how the media is framed, and more. Catalog ads also list the products they show, with title, link, image and availability.
  • Three ways in, all in the same run: advertiser names, Ads Gallery links and ad ids. The most used Snapchat ads scraper takes a brand name and nothing else. Here you can also paste a search you built in the Gallery (with its country, status and dates) or the link of one ad, and refresh a watchlist of ad ids. On a test run, one Gallery link plus one ad id returned 12 ads in 7 seconds.
  • Nothing to fill in before you press Start. The most used Snapchat ads scraper makes its search field mandatory. Here no field is required: any one of a brand, a link or an id is enough, and the form comes prefilled with Nike, so the first run returns rows right away.

Try Snapchat Ads Scraper

Paste this input into the Input tab (JSON view) and press Start. It is the prefilled input of the form: 20 Nike ads from the Snapchat Ads Library, all markets, active and paused.

{
"searchQueries": ["Nike"],
"country": "all",
"status": "all",
"maxItems": 20
}

The Apify Free plan is enough to run it and to test the actor on your own brands: no credit card, no Snapchat account, no setup. Each ad becomes one row of the dataset, which you can export as JSON, CSV or Excel, or read from the API.

How it works

Copy to your AI assistant

Paste this block into Claude, ChatGPT or Cursor to give it the full context of this actor:

You have access to the Snapchat Ads Scraper on Apify: silentflow/snapchat-ads-scraper
It reads Snap's public Ads Library (the Snap Ads Gallery, adsgallery.snap.com):
ads shown in the 27 EU countries and Turkey. One dataset row per ad.
Input (no field is required, give at least one of the first three):
- searchQueries (array of strings): advertiser or brand names, e.g. ["Nike", "Zalando"]. Matched anywhere in the paying advertiser's name.
- startUrls (array of {url}): Ads Gallery links. Search links keep their own filters
(https://adsgallery.snap.com/?advertiser=Nike&country=DE&status=ACTIVE), ad links give one ad
(https://adsgallery.snap.com/?adId=<id>).
- adIds (array of strings): ad ids, 36 characters, e.g. "a9e36555-f1e4-4cda-a548-fc3c82c1d096".
- country (string, default "all"): one market or several separated by commas. Codes (de), three-letter codes (deu) or English names (Germany). Greece is gr.
- startDate (string YYYY-MM-DD): keep ads that ran on or after this day.
- endDate (string YYYY-MM-DD): keep ads that ran on or before this day.
- status (string, default "all"): "all", "active" or "paused".
- maxItems (integer, default 100): stop after this many ads in total.
Output per ad (38 fields, null when Snapchat has no value):
- id (string), url (string, permanent Ads Gallery page), adName (string)
- headline, callToAction, adType, creativeType, adRenderType, mediaType, mediaCropPosition (strings)
- languages (array), destinationUrl (string), destinationDomain (string)
- products (array of {title, brand, url, imageUrl, availability, category}, catalog ads only)
- advertiserName, brandName, profileName, adAccountName, profileLogoUrl (strings)
- impressionsTotal (integer), impressionsByCountry (object, ISO code to impressions), countries (array of ISO codes, most impressions first)
- targetingAgeMin, targetingAgeMax (integers), targetingGender ("MALE", "FEMALE" or "ALL"),
targetingLanguages (array), targetingDevices (array such as "iOS 11.0+"), isRegulatedContent (boolean)
- status ("ACTIVE" or "PAUSED"), reviewStatus, rejectionReasons (array), startDate, endDate (RFC 3339)
- mediaUrl (string), mediaUrls (array), mediaCropPosition (string, how the media is framed)
- foundBy ("keyword", "url" or "id"), searchQuery (string), scrapedAt (RFC 3339)
Use apify-client for Python or JavaScript to call it and read the dataset items.

How to scrape Snapchat ads from the Ads Library

Get every recent ad of one brand

The simplest run: a brand name. The actor reads the Ads Library page by page, 10 ads at a time, until it reaches your cap or the last ad of the brand.

{
"searchQueries": ["Zalando"],
"maxItems": 50
}

See what a competitor runs today in one country

Add a country and keep the active ads only: these are the campaigns the brand pays for right now. On a test run, 25 active Zalando ads in Germany came back in 23 seconds.

{
"searchQueries": ["Zalando"],
"country": "de",
"status": "active",
"maxItems": 25
}

Compare several brands over one month

Several brands, a date window and a common cap. An ad that started before the window and still ran in it is kept. On a test run, Lidl and Temu for September 2026 returned 20 ads in 15 seconds.

{
"searchQueries": ["Lidl", "Temu"],
"startDate": "2026-09-01",
"endDate": "2026-09-30",
"maxItems": 30
}

Input parameters

ParameterTypeDefaultWhat it does
searchQueriesarray of stringsprefilled ["Nike"]Brands or companies that paid for the ads. One search per entry, matched anywhere in the paying advertiser's legal name.
startUrlsarray of linksnoneAds Gallery links: a search with its filters, or one ad.
adIdsarray of stringsnoneAd ids, from the Gallery or from the id field of an earlier run.
countrystringallOne market, several separated by commas, or all 28 markets.
startDatedatenoneKeep the ads that ran on or after this day.
endDatedatenoneKeep the ads that ran on or before this day. With a start day and no end day, the window runs to today.
statusall, active, pausedallKeep the running ads, the stopped ones, or both.
maxItemsinteger100Stop after this many ads in total, across brands, links and ids.

Accepted formats

  • Brands: any part of the advertiser's name. nike finds Nike, Inc., zalando finds both Zalando SE and Zalando Marketing Services GmbH. If a brand gives nothing, try its legal name or the name of its agency.
  • Ads Gallery search links: open adsgallery.snap.com, search a brand, set the country, status and dates you want, and copy the address. https://adsgallery.snap.com/?advertiser=adidas&country=FR&status=ACTIVE keeps the active adidas ads in France, whatever the form says.
  • Ads Gallery ad links: open one ad in the Gallery and copy the address, which ends with ?adId= and the ad id.
  • Ad ids: 36 characters in five groups, such as a9e36555-f1e4-4cda-a548-fc3c82c1d096, upper or lower case.
  • Countries: the two-letter code (de), the three-letter code (deu), or the English name (Germany), alone or several at once (de, fr, nl). Greece is gr (or el, the code Snapchat uses). The library covers Austria, Belgium, Bulgaria, Croatia, Cyprus, Czechia, Denmark, Estonia, Finland, France, Germany, Greece, Hungary, Ireland, Italy, Latvia, Lithuania, Luxembourg, Malta, the Netherlands, Poland, Portugal, Romania, Slovakia, Slovenia, Spain, Sweden and Turkey.
  • Dates: YYYY-MM-DD, such as 2026-09-01.

What data can you extract from the Snapchat Ads Library?

Each row is one ad, with 38 fields in a fixed order. A field Snapchat has no value for is null, never an empty string, so a column means the same thing on every row.

  • Identity: id (the ad id, stable), url (its permanent Ads Gallery page), adName (the name the advertiser gave the ad, often with campaign codes, market and format in it).
  • Creative: headline, callToAction (SHOP NOW, MORE, VIEW, WATCH, ORDER NOW...), adType (REMOTE_WEBPAGE, STORY, COLLECTION, DEEP_LINK), creativeType, adRenderType (static or dynamic), mediaType (image, video, dynamic), mediaCropPosition (how the media is framed), languages of the ad.
  • Landing page: destinationUrl as the ad carries it, with its tracking parameters, and destinationDomain, the site it lands on, read through click trackers, so a link wrapped by an ad server still shows adidas.de.
  • Catalog products: for dynamic product ads, products lists the items the ad shows, about ten per ad, each with title, brand, url, imageUrl, availability and category.
  • Advertiser: advertiserName (the paying legal entity), brandName (the brand shown on the ad), profileName and profileLogoUrl (the public Snapchat profile), adAccountName (the ad account, which often names the agency, the region or the team).
  • Reach: impressionsTotal, impressionsByCountry (ISO country code to impressions, countries with impressions only) and countries, sorted by impressions.
  • Audience: targetingAgeMin, targetingAgeMax, targetingGender (ALL when the ad is not limited to one gender), targetingLanguages, targetingDevices (such as iOS 11.0+ or Android 6.0+) and isRegulatedContent.
  • Status and time: status (ACTIVE or PAUSED), reviewStatus, rejectionReasons, startDate and endDate in RFC 3339 UTC.
  • Media: mediaUrl (the main image or video of the ad), mediaUrls (every media of the ad: story snaps, collection tiles, product images) and mediaCropPosition (how the media is framed, filled on every format).
  • Run: foundBy (keyword, url or id), searchQuery (the brand searched) and scrapedAt.

On the measured 100-row Nike run, 30 of the 38 fields were filled on at least half of the rows. The others depend on the ad: products exists on catalog ads only, targetingAgeMax, targetingLanguages and targetingDevices only when the advertiser set them, rejectionReasons only on rejected ads, and endDate only when the library publishes one.

Output example

One real row from a run on 4 Oct 2026, a catalog ad. products and mediaUrls are cut to two of their ten entries here.

{
"id": "9aa52b40-2580-4dc2-8331-964e0078de82",
"url": "https://adsgallery.snap.com/?adId=9aa52b40-2580-4dc2-8331-964e0078de82",
"adName": "CRQKIS1C5QD0_Cyber Monday_Cyber Monday_Mixed_Unisex_EMEA_Mixed_Mixed_X_X_DPA_FR_Cyber_Sale",
"headline": "Jusqu'ร  -50 %, dรฉpรชche-toi",
"callToAction": "SHOP NOW",
"adType": "REMOTE_WEBPAGE",
"creativeType": "WEB_VIEW",
"adRenderType": "DYNAMIC",
"mediaType": "DYNAMIC",
"languages": null,
"destinationUrl": "https://www.nike.com/fr/t/sweat-a-capuche-et-motif-jordan-brooklyn-fleece-pour-OwzNNcWK/HV0544-010&dplnk=member",
"destinationDomain": "nike.com",
"products": [
{
"title": "Jordan Brooklyn Fleece",
"brand": "Nike",
"url": "https://www.nike.com/fr/t/sweat-a-capuche-et-motif-jordan-brooklyn-fleece-pour-OwzNNcWK/HV0544-010&dplnk=member",
"imageUrl": "https://cf-st.sc-cdn.net/d/P2uV4ETGuzVxd07WuoACB.1023?mo=GhUaCTIBBEgCUAZgAaIBBwj_ByICEgA%3D&uc=6",
"availability": "IN STOCK",
"category": "Brooklyn Nets > Men > Clothes > Hoodies & Sweatshirts"
},
{
"title": "Inter Milan Strike",
"brand": "Nike",
"url": "https://www.nike.com/fr/t/veste-de-foot-nationale-dri-fit-inter-milan-strike-pour-pBK1F6so/HJ6395-438&dplnk=member",
"imageUrl": "https://cf-st.sc-cdn.net/d/rIsgpA4mzyCLeswDjeazc.1023?mo=GhUaCTIBBEgCUAZgAaIBBwj_ByICEgA%3D&uc=6",
"availability": "IN STOCK",
"category": "Inter Milan > Men > Clothes > Jackets & Gilets"
}
],
"advertiserName": "Nike, Inc.",
"brandName": "Nike",
"profileName": "Nike",
"adAccountName": "Nike EMEA - Initiative - Marketplace",
"profileLogoUrl": "https://cf-st.sc-cdn.net/aps/bolt/aHR0cHM6Ly9jZi1zdC5zYy1jZG4ubmV0L2QvQ0xpSzhleEdEUVA3VDJJek1qOXRmP2JvPUVnMGFBQm9BTWdFRVNBSlFHV0FCJnVjPTI1._RS0,72_FMpng",
"impressionsTotal": 8905514,
"impressionsByCountry": {
"FR": 8905514
},
"countries": ["FR"],
"targetingAgeMin": 18,
"targetingAgeMax": null,
"targetingGender": "ALL",
"targetingLanguages": null,
"targetingDevices": null,
"isRegulatedContent": false,
"status": "PAUSED",
"reviewStatus": "APPROVED",
"rejectionReasons": null,
"startDate": "2025-09-23T07:00:00Z",
"endDate": null,
"mediaUrl": "https://cf-st.sc-cdn.net/d/P2uV4ETGuzVxd07WuoACB.1023?mo=GhUaCTIBBEgCUAZgAaIBBwj_ByICEgA%3D&uc=6",
"mediaUrls": [
"https://cf-st.sc-cdn.net/d/P2uV4ETGuzVxd07WuoACB.1023?mo=GhUaCTIBBEgCUAZgAaIBBwj_ByICEgA%3D&uc=6",
"https://cf-st.sc-cdn.net/d/rIsgpA4mzyCLeswDjeazc.1023?mo=GhUaCTIBBEgCUAZgAaIBBwj_ByICEgA%3D&uc=6"
],
"mediaCropPosition": "MIDDLE",
"foundBy": "keyword",
"searchQuery": "Nike",
"scrapedAt": "2026-10-04T21:23:13Z"
}

The dataset has three views: Ads (headline, advertiser, ad type, impressions, countries, start date, status, Gallery link), Creative and landing page, and Reach and targeting.

Advanced usage

Track a watchlist of competitor ads every week

Keep the ids of the ads you care about and refresh them on a schedule: each id gives one row with its current status and impressions, so you see the day a campaign is paused and how far it went.

{
"adIds": [
"a9e36555-f1e4-4cda-a548-fc3c82c1d096",
"9aa52b40-2580-4dc2-8331-964e0078de82"
]
}

Save it as a task, add a weekly schedule in Apify, and compare impressionsTotal and status from one run to the next.

Already set up the right filters in the Gallery? Paste its address. The country, status and dates of the link are used as they are, and the form's filters apply only to the brands you type.

{
"startUrls": [
{ "url": "https://adsgallery.snap.com/?advertiser=adidas&country=FR&status=ACTIVE" }
],
"maxItems": 100
}

Map who advertises in a region

List the brands of a category and keep the markets you sell in: the result tells you which of them advertise on Snapchat there, with what message and how much reach. country accepts one market or several at once.

{
"searchQueries": ["Zalando", "Shein", "Temu", "H&M", "Primark", "Zara"],
"country": "nl, be",
"status": "active",
"maxItems": 300
}

Pull the products a retailer pushes in catalog ads

Catalog ads carry the products they show. Run a retailer, then filter the rows that have products: each one lists titles, links, images, availability and categories, a direct read of what the brand chose to promote.

{
"searchQueries": ["Zalando"],
"country": "de",
"startDate": "2026-09-01",
"maxItems": 200
}

Feed a creative library or a dashboard

Run several brands with a high cap, then read the dataset from your own tool. destinationDomain, countries and targetingGender make clean pivot columns, and id stays the same from run to run, so new ads are easy to spot.

{
"searchQueries": ["Nike", "adidas", "Puma", "New Balance"],
"maxItems": 1000
}

Read the rows with the Apify API (/v2/datasets/{datasetId}/items), export CSV or Excel from the Storage tab, or connect the dataset to Google Sheets, Make or Zapier.

FAQ

What is the Snapchat Ads Library? It is Snap's public archive of the ads shown on Snapchat in the European Union, also called the Snap Ads Gallery (adsgallery.snap.com). The EU Digital Services Act requires large platforms to publish one. It lists each ad with its creative, its advertiser, its reach by country and the audience it targeted, while it runs and for a year after it last ran.

What does this actor extract? One row per ad with 38 fields: headline, call to action, format, media links, landing page and domain, catalog products, advertiser, brand and ad account, total and per-country impressions, targeted age, gender, languages and devices, status, review status and dates. The output example above is a real row.

Do I need a Snapchat account? No. The library is public. The actor needs no login, no Snapchat account and no API key, only an Apify account.

Which countries are covered? The 27 EU countries and Turkey, the markets the library covers. Ads shown only outside these markets (the United States, the United Kingdom) are not in the library, so they are not in the output.

Can I search several brands, links and ids in one run? Yes. Put several brands in searchQueries, several links in startUrls and several ids in adIds: they all run together and an ad found twice is delivered once. Single ads (ids and ad links) are read first, then the search links, then the brands, until maxItems is reached.

Why does a brand give no ads? The search matches the name of the paying advertiser, the legal entity on the invoice. Most brands match their own name (nike finds Nike, Inc.), but some pay through a group or an agency. Try the legal name, a shorter part of the name, another country, or a wider period. A brand that does not advertise on Snapchat in Europe gives no rows, and the run says so in its status.

How fresh is the data? Each run reads the library live, at the moment you run it: impressions, status and targeting are those Snapchat publishes that day. Nothing is cached between runs.

How long does a run take? Snapchat serves 10 ads per page. On our test runs, 20 ads took 29 seconds, 40 ads 12 seconds, and 100 ads 4 minutes 33 seconds on a busy afternoon. Runs take longer when many people use the library at the same time.

Are the links permanent? url (the Ads Gallery page of the ad) and id are permanent. mediaUrl, mediaUrls, profileLogoUrl and product images are Snapchat media links meant for viewing and downloading: download the files you want to keep rather than storing only the link. destinationUrl is the advertiser's own link and lives as long as the advertiser keeps the page.

Does it give ad spend? No. For commercial ads the library publishes impressions, not spend. impressionsTotal and impressionsByCountry are the reach measures it offers.

Do the filters combine? Yes. country, status, startDate and endDate all apply together: country: "de" with status: "active" and startDate: "2026-09-01" keeps the ads shown in Germany that still run and ran since 1 September.

More SilentFlow scrapers

๐Ÿ›’ E-commerce

๐Ÿ’ผ Jobs

๐Ÿ  Real estate

๐Ÿ“ฃ Social media

๐Ÿข Business data

โœˆ๏ธ Travel

๐ŸŽฏ Lead generation

๐Ÿ”Ž SEO

๐Ÿงฐ More tools

Support

Need something this scraper doesn't do yet? We ship features fast.

  • Feature requests go straight to our backlog
  • Enterprise needs? We do custom integrations and high-volume plans
  • Pricing questions? Check the Monetization tab on the actor page

Response time: usually under 24 hours.

This actor extracts publicly available data from the Snapchat Ads Library, the archive Snap publishes under the EU Digital Services Act. It does not bypass any login, paywall or CAPTCHA. Users are responsible for complying with Snap's terms of service and applicable data protection laws (GDPR, CCPA, and PIPL where relevant). Ads are published by businesses, but some rows can name people, such as a creator's public profile or a person in an ad name: when the output contains personal data, users must handle it accordingly. The data returned is informational; verify accuracy for regulated use cases.

Snapchat Ads Scraper by SilentFlow: the Snapchat Ads Library as a dataset, for the brands, links and ads you choose.