Snapchat Ads Scraper — Impressions & Share-of-Voice Ranking
Pricing
from $3.99 / 1,000 results
Snapchat Ads Scraper — Impressions & Share-of-Voice Ranking
Pricing
from $3.99 / 1,000 results
Rating
0.0
(0)
Developer
Scrapio
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
5 days ago
Last modified
Categories
Share
Snapchat Ads Scraper — Impressions & Share-of-Voice Ranking
Snapchat Ads Scraper — Impressions & Share-of-Voice Ranking searches Snapchat's public Ads Library by advertiser or brand name and returns every matching ad as typed JSON — each row already carrying a computed impressionsRank, impressionsTier, and shareOfVoicePct. Unlike scraping frameworks that hand back raw HTML, this Actor returns typed JSON ready for your model, your database, or your pipeline without any parsing step. Bulk advertiser input, top-N and minimum-impressions filtering, and EU country / date / status filters are built in, so a raw ad feed becomes a ranked, share-of-voice-aware dataset in a single run. This guide documents every input and output field and how teams deploy the ranking layer for competitive intelligence, monitoring, and AI enrichment.
What Does Snapchat Ads Scraper Do?
Snapchat Ads Scraper — Impressions & Share-of-Voice Ranking queries the same public search endpoint behind Snapchat's Ads Library (adsgallery.snap.com) by advertiser or brand name, then re-processes the results into a ranked dataset. No Snapchat account, login, or API key is required — the endpoint is open and unauthenticated, and the Actor calls it directly over HTTP. Every ad returned is enriched with three computed fields before it is written to the dataset: a rank, a tier, and a share-of-voice percentage, all derived from Snapchat's own totalImpressions figure.
- Searches by one or more advertiser / brand names in a single run (bulk input)
- Ranks every ad by real lifetime impressions, highest first, per advertiser
- Buckets each ad into an impression tier (
nano→mega) - Computes each ad's share of its advertiser's total impressions
- Keeps only the top N ads per advertiser, or drops ads below a minimum impression count
- Filters by EU country, ad status (active/paused), and a start-date range
- Falls back automatically through datacenter and residential proxies if Snapchat rate-limits the request
Features & Capabilities
Snapchat Ads Scraper — Impressions & Share-of-Voice Ranking combines full ad metadata extraction with a ranking layer that no other Snapchat ad scraper on the Apify Store currently documents.
Core features
- Bulk advertiser search —
searchQueriesaccepts an array of brand names; each is scraped and ranked independently and tagged with its search query in the output (searchQueryfield). Pass a single empty string to fetch all ads in the library, filtered only by country / date / status. - Impressions-based ranking — every ad collected for an advertiser is sorted by real
totalImpressions(highest first) and assigned a 1-basedimpressionsRankover the full collected set, before any filtering is applied. - Impression tiers — each ad's
totalImpressionsis bucketed into one of five absolute tiers:mega,macro,mid,micro,nano. - Share of voice —
shareOfVoicePctis each ad's impressions divided by the advertiser's total impressions across the full collected set, rounded to two decimal places. Across one advertiser's ads it sums to roughly 100. - Top-N and minimum-impressions filtering —
topNkeeps only the N highest-ranked ads per advertiser;minImpressionsdrops ads below an impression floor. Both apply after ranking, soshareOfVoicePctalways reflects the full advertiser total, not the filtered subset. - Country, status, and date filters — restrict results to a single EU country,
ACTIVE/PAUSEDads, or astart_datewindow. - Automatic proxy escalation — direct connection → Apify datacenter proxy → Apify residential proxy (up to 3 retries), triggered by Snapchat's own rate-limit signal.
- No browser — the Actor is pure HTTP (
aiohttp), with no headless browser dependency, so runs start faster and use less memory than a browser-based scraper.
How Snapchat Ads Scraper compares to other Snapchat ads scrapers
| Feature | Snapchat Ads Scraper — Impressions & Share-of-Voice Ranking | lexis-solutions/snapchat-ads-scraper | zadexinho/snapchat-ads-scraper |
|---|---|---|---|
| Output format | Typed JSON, stable schema | Typed JSON | Typed JSON |
| Impressions rank per ad | ✅ impressionsRank | ❌ not documented | ❌ not documented |
| Impression tier bucketing | ✅ impressionsTier (5 tiers) | ❌ not documented | ❌ not documented |
| Share-of-voice percentage | ✅ shareOfVoicePct | ❌ not documented | ❌ not documented |
| Top-N / minimum-impressions filter | ✅ topN, minImpressions | ❌ not documented | ❌ not documented |
| Bulk advertiser input in one run | ✅ searchQueries array | Single search string field | Single search string field |
| Automatic proxy fallback | ✅ direct → datacenter → residential | Proxy configuration input, escalation not documented | Proxy configuration input, escalation not documented |
| Extended creative fields (call-to-action, destination URL, targeting) | Not returned — this Actor is impressions/ranking-focused | ✅ documented (call to action, destination URL, targeting, languages, per-country impressions) | Partial (call to action documented) |
| Pricing model (checked 2026-07-08) | Pay-per-event | Flat price per month | Pay-per-event |
If your use case is feeding structured data to an LLM or a dashboard, the output format row is the decision-maker — HTML parsing inside an agent loop is a reliability failure mode, not a feature. This Actor is not the broadest Snapchat ad scraper on the fields it returns; it is the only one that turns raw impressions into a rank, a tier, and a share-of-voice figure without a manual post-processing step.
When another tool might suit you better
If your workflow needs creative-level metadata this Actor does not return — call-to-action text, destination URL, review status, per-country impression breakdowns, or audience-targeting demographics — lexis-solutions/snapchat-ads-scraper documents a wider field set on its listing. That scraper is the better fit for creative and targeting research. This Actor is purpose-built for the opposite question: which ads, out of everything an advertiser is running, are actually getting reach — and it answers that with a computed rank and share-of-voice figure the wider-field scrapers don't provide.
Snapchat Ads Scraper within the Scrapio data stack
Snapchat Ads Scraper — Impressions & Share-of-Voice Ranking covers Snapchat ad campaigns. For Snapchat creator profiles and outreach data instead of ad campaigns, use Snapchat Profile Scraper With Email & Phone Leads, which reads public profile pages for emails, phone numbers, location, and linked social handles. For cross-platform brand-monitoring workflows that pair with ad tracking, Instagram Hashtag Analytics Scraper covers the organic side of the same campaigns.
Why do developers and data teams scrape the Snapchat Ads Library?
Snapchat's Ads Library data serves a narrower, more commercial set of users than a general social platform — mostly people who need to know what a brand is spending impressions on, not who follows it.
🏢 Media buyers and brand marketing teams
A media buyer tracking a competitor enters the competitor's brand name into searchQueries, sets topN to a small number, and gets back exactly the ads getting the most reach — ranked, not just listed. impressionsTier gives an instant read on scale (a mega ad is a different story than a nano one), and shareOfVoicePct shows whether a competitor is running one dominant creative or spreading impressions across many. The output drops straight into a media-planning spreadsheet or a BI tool via CSV export.
📊 AI training data and RAG indexing
headline, adName, and brandName are the high-information text fields — short, consistent, and well-suited to embedding for a RAG index of ad copy by brand or industry. totalImpressions, impressionsTier, and shareOfVoicePct are the structurally consistent numeric fields: every row has them, in the same shape, making them reliable inputs for training a "what makes an ad perform" classifier or for feeding an LLM agent a normalized reach signal instead of a raw impression count it has to bucket itself.
📱 Competitive and market intelligence
Track startDate across repeated runs to see exactly when a brand launches or refreshes a campaign, and adStatus to see when it pauses one. Because ranking is recomputed on every run from the current totalImpressions, a re-run a week later shows whether a specific ad's impressionsRank moved — the clearest signal that a campaign is being pushed harder or wound down.
🔬 Research and academic use
The Snapchat Ads Library is public data — no login is required to view it, and this Actor collects nothing behind an account or inquiry wall. Researchers studying digital advertising volume, reach distribution, or campaign timing across the EU can build a dataset from searchQueries covering an industry's major brands without any credentialed access.
🎥 Product and SaaS development
Ad-intelligence dashboards, competitor-monitoring tools, and agency reporting products can use this Actor as their Snapchat data source — the impressionsRank / impressionsTier / shareOfVoicePct fields are already the aggregation layer a product would otherwise have to build itself on top of a raw ad feed.
🍚 Input Parameters
All parameters are read directly from the Actor's input schema — names, types, and defaults below match it exactly.
| Parameter | Required | Type | Default | Description |
|---|---|---|---|---|
searchQueries | ✅ Yes | array of strings | ["Ikea"] | Advertiser / brand names to search for. Bulk input supported — every keyword is processed independently. Use "" as a single entry to fetch all ads in the library. |
maxItems | No | integer | 10 (min 1, max 10000) | Maximum ads collected per search keyword. Snapchat paginates internally; the Actor follows the cursor until this limit is reached or no more ads are available. |
topN | No | integer | 0 (min 0) | After ranking, keep only the top N ads per advertiser. 0 keeps all ranked ads. |
sortBy | No | string, enum | "impressions" | Output ordering: "impressions" (highest first, matches impressionsRank) or "startDate" (newest first). Does not change the computed rank, tier, or share-of-voice values. |
minImpressions | No | integer | 0 (min 0) | Drop ads whose lifetime impressions are below this number. Applied after ranking, so shareOfVoicePct still reflects the full advertiser total. |
country | No | string, enum | "" (all countries) | Restrict results to one EU country by ISO code. Full list below. |
status | No | string, enum | "" (any) | "ACTIVE", "PAUSED", or "" for both. |
startDate | No | string (YYYY-MM-DD) | none | Only ads with start_date on or after this date. |
endDate | No | string (YYYY-MM-DD) | none | Only ads with start_date on or before this date. |
proxyConfiguration | No | object | {"useApifyProxy": false} | Standard Apify proxy editor. The Actor runs without a proxy by default and escalates automatically if rate-limited — see Proxy handling below. |
⚠️ The country filter covers EU markets only. Supported codes are the 27 EU member states below; anything else is logged as a warning and ignored, and the run proceeds with no country filter applied.
| Code | Country | Code | Country | Code | Country |
|---|---|---|---|---|---|
AT | Austria | FR | France | MT | Malta |
BE | Belgium | DE | Germany | NL | Netherlands |
BG | Bulgaria | GR | Greece | PL | Poland |
HR | Croatia | HU | Hungary | PT | Portugal |
CY | Cyprus | IE | Ireland | RO | Romania |
CZ | Czech Republic | IT | Italy | SK | Slovakia |
DK | Denmark | LV | Latvia | SI | Slovenia |
EE | Estonia | LT | Lithuania | ES | Spain |
FI | Finland | LU | Luxembourg | SE | Sweden |
Invalid status values, malformed startDate / endDate values (anything not YYYY-MM-DD), and an invalid sortBy value are all handled the same way: the Actor logs a warning and falls back to the default rather than failing the run.
Example input
{"searchQueries": ["Nike", "Adidas"],"maxItems": 200,"topN": 10,"sortBy": "impressions","minImpressions": 0,"country": "FR","status": "ACTIVE","startDate": "2025-01-01","endDate": "2026-07-01","proxyConfiguration": { "useApifyProxy": false }}
Supported input formats
Three input patterns cover the common use cases:
- Single advertiser, ranked:
"searchQueries": ["Ikea"]with"topN": 10returns only Ikea's 10 highest-impression ads. - All ads in a market:
"searchQueries": [""]with"country": "DE"returns every ad the Ads Library has for Germany, unfiltered by advertiser. - Bulk competitive set:
"searchQueries": ["Nike", "Adidas", "Puma"]runs all three brands in one job; each brand's ads are ranked independently and each row is tagged with thesearchQueryit came from.
For compatibility with the input shape used by other Snapchat ad scrapers, the Actor also reads the same list from an urls or search key if searchQueries is omitted from the input. Brand-name matching is exact against Snapchat's own advertiser index — if a search returns nothing, see What happens if a search query returns zero ads? below.
📦 Output Format
Every dataset row is one Snapchat ad, enriched with the three ranking fields. The Actor's dataset view exposes all 18 fields the Actor writes — there is no hidden or additional data beyond what is shown here.
Output for each ad
{"searchQuery": "Nike","id": "ded3fe4b-8326-4423-bdfb-8d956de682b5","adName": "Offre_food_1_v2","adType": "STORY","payingAdName": "Nike France","accountName": "Nike Global","profileLogoUrl": "https://cf-st.sc-cdn.net/d/nike-logo.png","profileName": "Nike France","brandName": "Nike","headline": "Just Do It","totalImpressions": 999232,"impressionsRank": 1,"impressionsTier": "macro","shareOfVoicePct": 42.51,"adStatus": "PAUSED","snapMediaDownloadLink": "https://cf-st.sc-cdn.net/d/nike-media.mp4","snapMediaType": "VIDEO","startDate": "2025-07-16T12:00:57.000Z"}
| Field | Description |
|---|---|
searchQuery | The advertiser / brand keyword this row was collected for |
id | Snapchat ad UUID |
adName | Internal ad name set by the advertiser |
adType | Ad format as reported by Snapchat, e.g. SNAP_AD, STORY, REMOTE_WEBPAGE |
payingAdName | Paying advertiser entity name |
accountName | Ad account name on Snapchat |
profileLogoUrl | Logo URL of the Snapchat profile that owns the ad (null if not set) |
profileName | Display name of the profile running the ad |
brandName | Brand name; falls back to the first word of accountName when Snapchat does not set a brand name directly (only certain creative types, such as AR lenses, carry an explicit brand name) |
headline | Ad headline shown to viewers |
totalImpressions | Lifetime impressions, as reported by Snapchat |
impressionsRank | 1-based rank within the advertiser's full collected set (1 = most impressions) |
impressionsTier | mega / macro / mid / micro / nano — see thresholds below |
shareOfVoicePct | This ad's percentage of the advertiser's total impressions across the full collected set |
adStatus | ACTIVE or PAUSED |
snapMediaDownloadLink | Direct download link for the ad's top-Snap media (null if unavailable) |
snapMediaType | IMAGE or VIDEO |
startDate | First-served timestamp, ISO 8601 |
Impression tier thresholds (checked against totalImpressions, high to low):
| Tier | Lifetime impressions |
|---|---|
mega | ≥ 10,000,000 |
macro | ≥ 1,000,000 |
mid | ≥ 100,000 |
micro | ≥ 10,000 |
nano | < 10,000, or missing/null |
An ad with a missing or non-numeric totalImpressions value is treated as 0 for ranking: it sorts last, is tiered nano, and gets a shareOfVoicePct of 0.
How the ranking is computed — exact order of operations
- All ads collected for one
searchQuery(up tomaxItems) are sorted bytotalImpressions, descending. impressionsRankis assigned 1-based over that full sorted set, before any filter is applied.impressionsTieris assigned from the thresholds table above.shareOfVoicePctis computed asad impressions ÷ sum of all collected ads' impressions × 100, rounded to 2 decimal places — the denominator is the full collected set, not the post-filter set.minImpressionsis applied: rows below the threshold are dropped, but the surviving rows keep their original rank, tier, and share-of-voice values.topNis applied: only rows whose originalimpressionsRankis≤ topNsurvive. Because this uses the rank assigned in step 2,topNalways returns the true top ads, not a re-ranked subset of whatever survived step 5.- The surviving rows are ordered for output according to
sortBy— either byimpressionsRankascending, or bystartDatedescending.
sortBy only changes the order rows are written in; it never changes which ads survive filtering or what their rank, tier, or share-of-voice values are.
Schema stability and export options
Field names are the Actor's own camelCase mapping over Snapchat's raw response — a stable layer that does not change if Snapchat renames its internal API fields. Every dataset row is charged under a single pay-per-event name, row_result — there are no free or uncharged accounting rows mixed into the dataset to filter out; every row you see is a row you were charged for. Download results as JSON, CSV, Excel, or HTML from the Storage tab, or read the dataset directly through the Apify API.
💡 Snapchat Ads Scraper Strategy Guide
The ranking fields are computed the same way on every run, which makes them safe to diff, alert on, or feed into a downstream pipeline without re-deriving anything yourself.
🎯 Strategy 1: Real-time enrichment pipeline
Trigger a run whenever a new brand is added to a watchlist: pass the brand name as a single-entry searchQueries array, set topN to the number of top ads you care about, and read the run's dataset via the Apify API. Append impressionsRank, impressionsTier, and shareOfVoicePct to the watchlist record in your CRM or internal tool — the enrichment fields arrive pre-computed, with no post-processing step required before they're usable.
🎯 Strategy 2: Scheduled monitoring and alerting
Use an Apify Schedule to re-run the same searchQueries list daily or weekly. Diff each run's dataset against the previous one, keyed on id: a drop in impressionsRank for an ad that used to be #1, a jump in impressionsTier, or an adStatus change from ACTIVE to PAUSED are the deltas worth alerting on — each is a direct read from Snapchat's own numbers, not an inference.
🎯 Strategy 3: Bulk dataset build
For a market-wide dataset, pass every advertiser in an industry as one searchQueries array — bulk input is native, so this runs as a single job rather than one run per brand. Set maxItems high enough to capture each advertiser's full ad set, leave topN at 0 to keep everything, and export the combined dataset to CSV for a cross-brand share-of-voice comparison. No concurrency limit is documented for this Actor beyond the schema's maxItems ceiling of 10,000 ads per search keyword.
Strategy comparison at a glance
| Strategy | Best for | Run pattern | Output format |
|---|---|---|---|
| Real-time enrichment | Watchlist / CRM enrichment on demand | Single-brand run, triggered on event | Live dataset read via API |
| Scheduled monitoring | Tracking campaign changes over time | Apify Schedule, recurring | Dataset diffed run-over-run |
| Bulk dataset build | Market-wide or industry-wide research | One run, bulk searchQueries array | CSV / database export |
🌴 Related Snapchat Scrapers & Tools
| Scraper Name | What it extracts |
|---|---|
| Snapchat Profile Scraper With Email & Phone Leads | Public Snapchat creator profiles — email, phone, location, and linked social handles for outreach |
| Instagram Hashtag Analytics Scraper | Instagram hashtag posts/reels with a per-hashtag analytics roll-up — complements ad tracking with organic-content data |
Snapchat Ads Scraper — Impressions & Share-of-Voice Ranking covers ad campaigns specifically; for creator-level Snapchat data, the Profile Scraper above is the counterpart within the same account.
How to integrate Snapchat Ads Scraper with your stack
Snapchat Ads Scraper — Impressions & Share-of-Voice Ranking works with any language or tool that can make an HTTP request, since it runs as a standard Apify Actor behind the Apify API.
Python
from apify_client import ApifyClientimport csvclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("<YOUR_USERNAME>/snapchat-ads-impressions-ranker").call(run_input={"searchQueries": ["Nike", "Adidas", "Puma"],"maxItems": 100,"topN": 10,"sortBy": "impressions",})rows = list(client.dataset(run["defaultDatasetId"]).iterate_items())with open("snapchat_ads_ranked.csv", "w", newline="", encoding="utf-8") as f:writer = csv.DictWriter(f, fieldnames=rows[0].keys())writer.writeheader()writer.writerows(rows)print(f"Saved {len(rows)} ranked ads across {len(set(r['searchQuery'] for r in rows))} advertisers")
Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });const run = await client.actor('<YOUR_USERNAME>/snapchat-ads-impressions-ranker').call({searchQueries: ['Nike', 'Adidas'],maxItems: 100,topN: 10,});const { items } = await client.dataset(run.defaultDatasetId).listItems();for (const ad of items) {console.log(`#${ad.impressionsRank} [${ad.impressionsTier}] ${ad.brandName}: ${ad.headline} — ${ad.totalImpressions} impressions`);}
Async and scheduled pipelines
For fire-and-forget large jobs, call the Actor with client.actor(...).start() instead of .call() and poll client.run(runId).get() for status, or use waitForFinish in the Apify API. For recurring jobs, set up an Apify Schedule (cron syntax) in the Apify Console to run the same input automatically — no code required to keep a watchlist current. Apify webhooks can notify your own endpoint when a scheduled run finishes, so you can trigger a downstream diff or alert step without polling.
Who Needs Snapchat Ads Scraper? (Use Cases & Industries)
🏢 Media buyers and brand marketing teams
A brand team preparing a Snapchat campaign pitch pulls a competitor's top 10 ads by impressionsRank, reads impressionsTier to gauge scale, and uses shareOfVoicePct to show whether the competitor's reach is concentrated in one creative or spread thin — a specific, sourced argument instead of a guess.
📊 AI / data engineering teams
Teams building an ad-intelligence tool or LLM-based creative analyzer pull headline and brandName as descriptive text and totalImpressions / impressionsTier as structured signal, without writing any impression-bucketing logic themselves — it's already computed the same way on every row.
📱 Competitive intelligence analysts
An analyst tracking five competing brands runs all five as one searchQueries array weekly, diffs impressionsRank and adStatus per ad id, and flags exactly which ads moved and which stopped running — no manual cross-referencing of raw impression numbers.
🔬 Researchers
Academic or market researchers studying EU digital ad spend or reach distribution across brands can build a dataset directly from public searchQueries results — no account, login, or paid API access required, since the Ads Library itself is publicly viewable.
🎥 Agencies and reporting tools
Agencies producing client reports on Snapchat ad performance use the ranked, tiered output directly in a client deck or dashboard — the rank and share-of-voice numbers are already client-presentable without an internal analytics pass.
Is it legal to scrape the Snapchat Ads Library?
Yes — scraping publicly accessible data is broadly permitted, and Snapchat Ads Scraper — Impressions & Share-of-Voice Ranking collects only what Snapchat's own public Ads Library already exposes to any anonymous visitor, without logging in or bypassing any access control.
Three separate questions are worth distinguishing. Scraping public data is generally treated as lawful where the data carries no access restriction. Violating a platform's terms of service is a contractual/civil-risk question, not a criminal one, and using this Actor at scale may implicate Snapchat's ToS depending on your use. Data protection law is the third question, and it does not attach here in the way it would to a scraper of personal profiles: ad campaign records — advertiser names, ad account names, headlines, impression counts — are commercial business records tied to brands, not to identifiable individuals, so GDPR/CCPA-style personal-data obligations do not govern this output the way they would govern, say, a reviewer or profile scraper.
Snapchat Ads Scraper — Impressions & Share-of-Voice Ranking returns only publicly accessible data. What you do with that data is your responsibility — consult legal counsel for commercial applications.
❓ Frequently asked questions
Does Snapchat Ads Scraper work without a Snapchat account?
Yes. The Ads Library search endpoint the Actor calls is open and does not require authentication — no Snapchat login, cookie, or API key is needed anywhere in the input schema.
How does Snapchat Ads Scraper handle Snapchat's anti-scraping measures?
Snapchat rate-limits aggressively per source IP, signaled by an error_code: E1009 response or an HTTP 429/5xx. Each request retries up to 3 times with exponential backoff (2s, 4s, 8s, capped at 30s) before the Actor escalates its network path: direct connection → Apify datacenter proxy → Apify residential proxy, with up to 3 further retries on residential. Once residential is engaged, the Actor stays on it — including across subsequent searchQueries in the same run — rather than dropping back down.
Can I run Snapchat Ads Scraper at scale without getting blocked?
The Actor's proxy escalation and retry logic are designed to recover from Snapchat's rate limiting automatically, and maxItems accepts up to 10,000 ads per search keyword. No uptime or success-rate figure is published for this behavior, so treat proxy escalation as a resilience mechanism, not a guarantee.
How fresh is the data Snapchat Ads Scraper returns?
Every run performs a live fetch against Snapchat's Ads Library at the moment it runs — nothing is cached or served from a prior run. totalImpressions reflects the ad's lifetime impression count as Snapchat reports it at request time.
What happens if a search query returns zero ads?
The Actor logs that no ads were found for that keyword and moves on to the next query in searchQueries without failing the run. Brand-name matching is exact against Snapchat's advertiser index, so a zero-result search is usually a naming mismatch — try the legal entity name (e.g., a holding company name) or a shorter/alternate spelling of the brand.
Which Snapchat ad fields work best for AI training and RAG indexing?
For RAG indexing, headline, adName, and brandName carry the most descriptive text per ad and chunk cleanly. For training data, totalImpressions, impressionsRank, impressionsTier, and shareOfVoicePct are the most structurally consistent numeric fields across every row. All fields return as typed primitives, so no normalization pass is needed before indexing.
Does Snapchat Ads Scraper work with Claude, ChatGPT, and other AI agent tools?
Yes, as a standard HTTP endpoint through the Apify API — any agent framework that can make a request (LangChain, CrewAI, a custom tool definition, or a direct API call) can invoke it and receive typed JSON directly, with no HTML parsing step. This Actor is not currently reachable through an MCP server.
How does Snapchat Ads Scraper compare to other Snapchat ad scrapers?
Checked on the Apify Store on 2026-07-08, lexis-solutions/snapchat-ads-scraper and zadexinho/snapchat-ads-scraper both document a wider raw field set — call-to-action text, destination URLs, review status, and (for lexis-solutions) per-country impression breakdowns and audience targeting. Neither documents computed ranking, tiering, or share-of-voice. Snapchat Ads Scraper — Impressions & Share-of-Voice Ranking trades some of that field breadth for a ranking layer computed on every run: if your workflow needs the widest raw field set, one of those two is the better fit; if it needs to know which ads are actually winning reach, this Actor answers that directly.
Are impressionsRank, impressionsTier, and shareOfVoicePct computed the same way regardless of sortBy or filters?
Yes. All three are computed once, over the full set of ads collected for a searchQuery, before minImpressions or topN are applied and before sortBy determines the output order. Changing sortBy only reorders the rows written to the dataset — it never recomputes rank, tier, or share-of-voice, and neither does topN or minImpressions.
Disclaimer
Snapchat Ads Scraper — Impressions & Share-of-Voice Ranking extracts only publicly available data from Snapchat's Ads Library. This tool is intended for lawful use cases only. Users are responsible for complying with Snapchat's terms of service and applicable data protection laws in their jurisdiction.