Snapchat Ads Scraper: Creative Analysis
Pricing
Pay per usage
Snapchat Ads Scraper: Creative Analysis
Snapchat Ads Scraper: Extract ad creatives, copy, advertisers, formats, landing pages, and campaign details. Analyze creative patterns, messaging, offers, and ad strategies to compare competitors, identify trends, and improve Snapchat advertising performance.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
API Empire
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
5 days ago
Last modified
Share
๐ป Snapchat Ads Creative Analyzer
Scrape the Snapchat Ads Library by advertiser / brand name and get a full creative-analysis breakdown for every ad โ headline length, call-to-action detection, media presence, creative format, and brand-in-headline โ plus impression / media / CTA filters and automatic de-duplication of identical creatives.
Built on the Snapchat Ads Library scraper engine (pure HTTP, no browser, no login), this variant adds a creative-intelligence layer on top of every row.
What's New vs. the Base Scraper
- ๐จ Per-ad creative analysis โ each row is enriched with
creativeFormat,headlineWordCount,headlineCharCount,headlineHasCta,detectedCtaKeywords,hasMedia, andbrandInHeadline. Every value is computed from the real ad data (headline text, ad type, media type, brand). - ๐งน Row-reducing filters โ
minImpressions,requireMedia, andctaOnlydrop non-matching creatives before they are saved, and the run log reports exactly how many rows each filter removed. - โป๏ธ Creative de-duplication โ ads with the same
headline+adType+brandNameare collapsed to a single row (dropped-duplicate count logged).
Core Features (from the base engine)
- ๐ Bulk search by advertiser / brand name (
paying_advertiser_name) - ๐ฌ Ad ID, name, ad type, brand, headline, impressions, media download URL, media type, status, and start date
- โฌ๏ธ Direct download links to top-Snap media (image or video)
- ๐ข Filter by ACTIVE / PAUSED
- ๐ Filter by EU country code
- ๐ Filter by date range
- ๐ก๏ธ Built-in rate-limit handling with proxy escalation (direct โ datacenter โ residential, 3 retries)
- ๐พ Live saving โ every qualifying ad is pushed the moment it is analyzed
- ๐ Per-search-query tagging in every output row
Input
{"searchQueries": ["McDonald's", "Nike"],"maxItems": 20,"country": "FR","status": "ACTIVE","startDate": "2025-01-01","endDate": "2026-05-16","minImpressions": 1000,"requireMedia": false,"ctaOnly": false,"proxyConfiguration": { "useApifyProxy": false }}
| Field | Type | Required | Description |
|---|---|---|---|
searchQueries | array of strings | โ | Advertiser / brand names. Bulk supported. Use "" to fetch all ads. |
maxItems | integer | โ | Max ads retrieved per query. Filters/dedup are applied afterward, so saved rows may be fewer. Default 10. |
country | string | โ | EU ISO-2 country code (e.g. FR, DE). Empty = all countries. |
status | string | โ | ACTIVE, PAUSED, or empty for both. |
startDate | string | โ | YYYY-MM-DD โ only ads whose start_date is โฅ this. |
endDate | string | โ | YYYY-MM-DD โ only ads whose start_date is โค this. |
minImpressions | integer | โ | Only save ads with totalImpressions โฅ this. Missing = 0. Default 0. |
requireMedia | boolean | โ | Only save ads that have a downloadable media link. Default false. |
ctaOnly | boolean | โ | Only save ads whose headline contains a CTA keyword. Default false. |
proxyConfiguration | object | โ | Standard Apify proxy editor. Defaults to no proxy. |
Output
Each row preserves every base field and adds the creative-analysis fields:
{"searchQuery": "McDonald's","id": "ded3fe4b-8326-4423-bdfb-8d956de682b5","adName": "Offre food 1 v2","adType": "STORY","payingAdName": "McDonald's France","accountName": "McDonald's Global","profileLogoUrl": "https://cf-st.sc-cdn.net/...","profileName": "McDonald's France","brandName": "McDonald's","headline": "Get the McSmart menu โ order now","totalImpressions": 999232,"adStatus": "PAUSED","snapMediaDownloadLink": null,"snapMediaType": null,"startDate": "2025-07-16T12:00:57.000Z","creativeFormat": "story_ad","headlineWordCount": 6,"headlineCharCount": 32,"headlineHasCta": true,"detectedCtaKeywords": ["get", "order"],"hasMedia": false,"brandInHeadline": false}
Base fields
| Field | Description |
|---|---|
searchQuery | The advertiser / brand keyword you searched for |
id | Snapchat ad UUID |
adName | Internal ad name from the advertiser |
adType | SNAP_AD, STORY, REMOTE_WEBPAGE, DEEP_LINK, โฆ |
payingAdName | Paying advertiser entity |
accountName | Ad account name on Snapchat |
profileLogoUrl | Logo of the Snapchat profile that owns the ad |
profileName | Display name of the profile |
brandName | Brand string (falls back to first word of account name) |
headline | Ad headline shown to viewers |
totalImpressions | Lifetime impressions |
adStatus | ACTIVE or PAUSED |
snapMediaDownloadLink | Direct download link for the top-Snap media |
snapMediaType | IMAGE or VIDEO |
startDate | First-served timestamp (ISO 8601) |
Creative-analysis fields (new)
| Field | Description |
|---|---|
creativeFormat | Derived format: story_ad, video_snap, image_snap, ar_lens, collection, commercial, or the lower-cased ad type |
headlineWordCount | Number of words in the headline |
headlineCharCount | Number of characters in the headline |
headlineHasCta | true if the headline contains a CTA keyword |
detectedCtaKeywords | The CTA keywords actually found (shop, buy, learn more, sign up, download, get, order, discover) |
hasMedia | true if snapMediaDownloadLink is present |
brandInHeadline | true if a brand-name token appears in the headline |
๐ How to Use (Apify Console)
- Log in at https://console.apify.com โ Actors.
- Open ๐ป Snapchat Ads Creative Analyzer.
- Enter one or more advertiser names in Search Queries.
- (Optional) Pick a country, status, or date range, and set the creative
filters (
minImpressions,requireMedia,ctaOnly). - Click Start.
- Watch the logs โ every ad is logged, and a filter summary reports how many rows each filter removed.
- Open the Output tab when the run completes and export to JSON/CSV/XLSX.
๐ค Use via API
curl -X POST "https://api.apify.com/v2/acts/<ACTOR_ID>/run-sync-get-dataset-items?token=$APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"searchQueries": ["Nike"],"maxItems": 50,"minImpressions": 1000,"ctaOnly": true}'
Best Use Cases
- ๐ต๏ธ Competitor creative intelligence on Snapchat
- ๐จ Studying which CTA phrasing and creative formats a brand actually runs
- ๐ Filtering to only high-impression creatives for benchmarking
- ๐งช Building clean, de-duplicated ad-creative datasets for ML / analytics
Pricing
This actor uses Apify Pay-per-event. You pay per ad row pushed to the dataset plus the small actor-start event. No platform usage is passed on by default.
Frequently Asked Questions
Do I need to be logged in to Snapchat? No. The Snapchat Ads Library is public and the actor calls it without auth.
Why did I get fewer rows than maxItems?
maxItems bounds how many ads are retrieved per query. The creative filters
(minImpressions, requireMedia, ctaOnly) and de-duplication then reduce the
rows that are actually saved. The run log shows the exact counts removed.
How is headlineHasCta computed?
The headline text is scanned for the CTA keywords listed above. Single-word
keywords require a whole-word match (so "getaway" does not trigger "get").
What happens if I get rate-limited?
Snapchat returns error_code: E1009 when an IP is throttled. The actor detects
this, falls back to a datacenter proxy, then to a residential proxy (retrying up
to 3 times), and once residential is engaged it stays engaged.
Are EU-only results a hard limit? Yes โ the Snapchat Ads Library currently only exposes ads served in the EU.
Cautions / Legal
- Data is collected only from the publicly available Snapchat Ads Library.
- The end user is responsible for legal compliance (GDPR, CCPA, target-site ToS, etc.).
- Be a good citizen โ keep
maxItemsreasonable to avoid hammering Snap's infrastructure.