Snapchat Spotlight Scraper With Engagement Data
Pricing
from $5.99 / 1,000 results
Snapchat Spotlight Scraper With Engagement Data
Snapchat Spotlight Scraper with Engagement Data extracts Spotlight videos, creators, views, likes, shares, comments, captions, timestamps, and other public metadata. Analyze content performance, discover trending creators, track engagement, and research Snapchat trends at scale.
Pricing
from $5.99 / 1,000 results
Rating
0.0
(0)
Developer
Scrapier
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
0
Monthly active users
4 days ago
Last modified
Categories
Share
Snapchat Spotlight Scraper — Engagement Data and Batch Video Rankings
Snapchat Spotlight Scraper With Engagement Data takes a list of Spotlight video links and returns the full engagement block Snapchat publishes for each one — views, boosts, comments, recommends and shares — plus how every video ranks against the others submitted in the same run. Every response is structured JSON, ready to pass directly to an LLM, index into a vector store, or feed a monitoring pipeline. Instead of stopping at raw counts, it computes derived rates, a batch-wide percentile, and a rank for every video, then adds one summary row benchmarking the whole run. Point it at your own videos, a competitor's, or a creator shortlist, and the numbers come back comparable, not just collected.
What is Snapchat Spotlight Scraper With Engagement Data?
Snapchat Spotlight Scraper With Engagement Data reads one or more Snapchat Spotlight video pages and returns each video's public engagement counters, caption, hashtags, creator info, thumbnail, duration and upload date as structured JSON. It also computes batch-relative rankings — every video is scored against the others in the same run, not against Snapchat as a whole. No Snapchat account or login is required: the Actor reads the same public Spotlight page any visitor's browser would load.
- Full engagement block per video:
viewCount,boostCount,commentCount,recommendCount,shareCount - Derived rate fields:
engagementRate,boostRate,commentRate,shareRate,viewsPerHour - Batch-relative ranking:
viewsRank,viewsPercentile,boostsRank,engagementRateRank,primaryRank - One run-level benchmark row with median/percentile figures for the batch
- Creator identity (
creatorUsername,creatorDisplayName, nestedcreatorobject) and Snapchat's own AI-generatedllmTitle/llmDescription/llmKeywordswhere published - Query controls: minimum-threshold filters (
minViews,minBoosts,minComments), an upload-date filter (publishedAfter), a rank metric (rankBy), and duplicate-link dedupe
What data can you get with Snapchat Spotlight Scraper With Engagement Data?
The Actor returns two result types per run: one row per video, and one run-level benchmark row.
| Result Type | Extracted Fields | Primary Use Case |
|---|---|---|
| Spotlight video row | spotlightId, spotlightUrl, creatorUsername, creatorDisplayName, description, viewCount, boostCount, commentCount, recommendCount, shareCount, engagementRate, boostRate, commentRate, shareRate, viewsPerHour, ageHours, dateUploaded, durationSeconds, thumbnailUrl, contentUrl, hashtagsFromCaption | Per-video engagement analysis |
| Batch benchmark row | videosAnalyzed, videosExcludedAsUnmeasurable, totalViews, medianViews, meanViews, viewsP25, viewsP75, medianBoostRate, medianEngagementRate, topVideoSpotlightId, topVideoViews, oldestPublishedAt, newestPublishedAt, spanDays | Run-level comparison and reporting |
Batch video rankings and benchmarking
When includeBatchStats is on (default), the Actor doesn't just fetch counters — it ranks every video in the run against the others. Each video row carries viewsRank, viewsPercentile, boostsRank, engagementRateRank and a primaryRank set by whichever metric rankBy names. Because ranking is a whole-batch computation, these rows are written once every video in the run has finished fetching, rather than streamed one at a time. A separate summary row ("type": "batchStats", also mirrored to its own <runId>-batchStats dataset) reports videosAnalyzed, medianViews, viewsP25/viewsP75, medianBoostRate, medianEngagementRate and the batch's top video:
{"type": "batchStats","rankBy": "views","videosAnalyzed": 24,"videosExcludedAsUnmeasurable": 1,"medianViews": 84210,"viewsP25": 21044.5,"viewsP75": 310558.75,"medianEngagementRate": 0.03217,"topVideoSpotlightId": "W7_EDlXWTBiXAEEniNoMPwAAYdW94bXd5dmF5AYv9OiSkAYv9OiP4AAAAAQ","topVideoViews": 3136652,"oldestPublishedAt": "2023-09-02T08:14:12.000Z","newestPublishedAt": "2026-08-09T21:03:44.000Z","spanDays": 1072.535}
Creator and AI-generated metadata
Every video row also carries the creator's public identity (creatorUsername, creatorDisplayName, a nested creator object with thumbnailUrl and snapcodeUrl) and, where Snapchat has published them for that specific video, its own AI-generated llmTitle, llmDescription and llmKeywords — otherwise those three fields come back null.
Why not build this yourself?
Snapchat's public developer surface (the Snap Marketing API, Snap Kit) is built for ad partners and app integrations, not for reading an arbitrary Spotlight video's public engagement counters by URL (verified via Snap's own developer documentation and third-party analysis, 2026-08-15) — there is no official endpoint that returns viewCount, boostCount or commentCount for a Spotlight video you don't own. Getting those numbers means parsing the embedded JSON payload Snapchat's Spotlight page ships in a <script id="__NEXT_DATA__"> block, a structure that shifts without notice and carries a real -1 sentinel on viewCount for videos still accumulating views rather than omitting the field. Building and maintaining that parser, plus the retry logic, proxy rotation and sentinel handling to keep it honest, is the ongoing work this Actor already does. Point it at a link list instead and get typed, ranked JSON back.
How to scrape Snapchat Spotlight videos with Snapchat Spotlight Scraper With Engagement Data?
- Open Snapchat Spotlight Scraper With Engagement Data on its Apify Store page and click Try for free (or Run, if you already have it saved).
- Paste one or more Spotlight video links into
spotlightVideos— the plain URL, a URL with extra query parameters, or a bare video id, one per line. - Set the query controls you need:
rankByto choose the ranking metric,minViews/minBoosts/minCommentsto drop videos under a threshold,publishedAfterfor an upload-date cutoff. - Click Start to run the Actor.
- Download the results as JSON, CSV, Excel or the other formats Apify's dataset export supports, or read them via the API.
{"spotlightVideos": ["https://www.snapchat.com/spotlight/W7_EDlXWTBiXAEEniNoMPwAAYdW94bXd5dmF5AYv9OiSkAYv9OiP4AAAAAQ"],"rankBy": "views","minViews": 1000}
How to measure multiple Spotlight videos in one run
spotlightVideos accepts any number of links, one per line, in the same run — that's how batch ranking becomes possible, since viewsRank, viewsPercentile and the benchmark row are all computed against whatever list you submit. Use maxItems (default 0, meaning no cap) to bound how many of those links are actually processed, and leave skipDuplicateSpotlights on (its default) so the same video submitted under two different link shapes is only fetched once.
⬇️ Input
Every field is optional, but you need at least one video link in spotlightVideos or its legacy alias urls for the run to produce anything.
| Parameter | Required | Type | Description | Example Value |
|---|---|---|---|---|
spotlightVideos | No | array of strings | One Snapchat Spotlight video per line. Accepts the plain video URL, a URL with extra query parameters, or a bare video id. | ["https://www.snapchat.com/spotlight/W7_..."] |
urls | No | array of strings | Kept for compatibility with input built for the earlier Spotlight Scraper. Used only if spotlightVideos is left empty. | [] |
maxItems | No | integer (default 0, minimum 0) | Stop after this many links have been processed. 0 processes every link. | 100 |
skipDuplicateSpotlights | No | boolean (default true) | When two input links point at the same Spotlight video, fetch and save it only once. | true |
includeEngagementMetrics | No | boolean (default true) | Adds boostCount, commentCount, recommendCount and the derived rate fields (engagementRate, boostRate, commentRate, shareRate, viewsPerHour) to every video row. | true |
includeBatchStats | No | boolean (default true) | Ranks every video in this run against the others (viewsRank, viewsPercentile, boostsRank, engagementRateRank) and adds one extra summary row with median/percentile figures for the batch. Requires every video to finish fetching first, so rows are written once the run's fetches complete rather than one by one. | true |
rankBy | No | string, enum: views, boosts, engagementRate, viewsPerHour (default views) | Which measure sets each video's primaryRank and the run's top video. | "engagementRate" |
minViews | No | integer (minimum 0) | Drop videos with fewer views than this. Leave empty for no minimum. | 1000 |
minBoosts | No | integer (minimum 0) | Drop videos with fewer boosts than this. Leave empty for no minimum. | 50 |
minComments | No | integer (minimum 0) | Drop videos with fewer comments than this. Leave empty for no minimum. | 10 |
publishedAfter | No | string (date, absolute or relative) | Drop videos uploaded before this date. Accepts an absolute date or a relative window such as "7 days". Leave empty for no date filter. | "7 days" |
proxyConfiguration | No | object | Use Apify Proxy or run without a proxy. Leave empty to start with a direct connection. | {"useApifyProxy": false} |
{"spotlightVideos": ["https://www.snapchat.com/spotlight/W7_EDlXWTBiXAEEniNoMPwAAYdW94bXd5dmF5AYv9OiSkAYv9OiP4AAAAAQ","https://www.snapchat.com/spotlight/W7_EDlXWTBiXAEEniNoMPwAAYZWZ2ZWF1dWdtAZ-LsAARAZ-Lro7qAAAAAQ"],"maxItems": 50,"skipDuplicateSpotlights": true,"includeEngagementMetrics": true,"includeBatchStats": true,"rankBy": "views","minViews": 1000,"publishedAfter": "30 days","proxyConfiguration": {"useApifyProxy": false}}
Common pitfall: publishedAfter filters on the video's own dateUploaded, which Snapchat sometimes omits entirely — a video with no readable upload date is dropped by any publishedAfter filter rather than treated as recent. Leave publishedAfter empty if you need every video regardless of date.
⬆️ Output
Results are typed, normalized JSON with a consistent schema across runs. Export as JSON, CSV, Excel, XML, RSS or HTML directly from the dataset, or pull them through the Apify API or apify-client.
Scraped results
A run with includeBatchStats on writes one row per successfully-read video, followed by one benchmark row. A video that couldn't be read gets a short status row instead — status: "NOT_FOUND" or "ERROR" — with no engagement fields, so a bad link never silently shows up as a zero-engagement video.
[{"type": "video","isChild": false,"outcome": "ok","spotlightId": "W7_EDlXWTBiXAEEniNoMPwAAYdW94bXd5dmF5AYv9OiSkAYv9OiP4AAAAAQ","spotlightUrl": "https://www.snapchat.com/spotlight/W7_EDlXWTBiXAEEniNoMPwAAYdW94bXd5dmF5AYv9OiSkAYv9OiP4AAAAAQ?sc_referrer=web","url": "https://www.snapchat.com/spotlight/W7_EDlXWTBiXAEEniNoMPwAAYdW94bXd5dmF5AYv9OiSkAYv9OiP4AAAAAQ?sc_referrer=web","creator": {"name": "Mike Tyson","username": "miketyson","url": "https://www.snapchat.com/add/miketyson","thumbnailUrl": "https://cf-st.sc-cdn.net/i/thumbnail1.jpg","snapcodeUrl": "https://app.snapchat.com/web/deeplink/snapcode?..."},"creatorUsername": "miketyson","creatorDisplayName": "Mike Tyson","creatorProfileUrl": "https://www.snapchat.com/add/miketyson","description": "Training camp highlight #boxing #miketyson","hashtags": ["boxing", "miketyson"],"hashtagsFromCaption": ["#boxing", "#miketyson"],"viewCount": 3136652,"shareCount": 1373,"boostCount": 140908,"commentCount": 1184,"recommendCount": 192,"isUnmeasurable": false,"engagementRate": 0.047886,"boostRate": 44.93,"commentRate": 0.3775,"shareRate": 0.4377,"ageHours": 12.4,"viewsPerHour": 252954.2,"dateUploaded": "2026-08-09T21:03:44.000Z","durationMs": 15650,"durationSeconds": 15.65,"width": 1080,"height": 1920,"thumbnailUrl": "https://cf-st.sc-cdn.net/i/thumbnail2.jpg","contentUrl": "https://cf-st.sc-cdn.net/v/video1.mp4","llmTitle": "Mike Tyson training camp highlight","llmDescription": "A short clip of a Mike Tyson training session.","llmKeywords": ["boxing", "mike tyson", "training"],"scrapedAt": "2026-08-10T09:12:00Z","status": "OK","error": null,"viewsRank": 1,"viewsPercentile": 100.0,"boostsRank": 1,"engagementRateRank": 3,"viewsPerHourRank": 1,"primaryRank": 1},{"type": "video","isChild": false,"outcome": "ok","spotlightId": "W7_EDlXWTBiXAEEniNoMPwAAYZWZ2ZWF1dWdtAZ-LsAARAZ-Lro7qAAAAAQ","spotlightUrl": "https://www.snapchat.com/spotlight/W7_EDlXWTBiXAEEniNoMPwAAYZWZ2ZWF1dWdtAZ-LsAARAZ-Lro7qAAAAAQ?sc_referrer=web","url": "https://www.snapchat.com/spotlight/W7_EDlXWTBiXAEEniNoMPwAAYZWZ2ZWF1dWdtAZ-LsAARAZ-Lro7qAAAAAQ?sc_referrer=web","creator": {"name": "Jane Creator","username": "janecreator","url": "https://www.snapchat.com/add/janecreator","thumbnailUrl": "https://cf-st.sc-cdn.net/i/thumbnail3.jpg","snapcodeUrl": "https://app.snapchat.com/web/deeplink/snapcode?..."},"creatorUsername": "janecreator","creatorDisplayName": "Jane Creator","creatorProfileUrl": "https://www.snapchat.com/add/janecreator","description": "Recipe of the week #foodtok","hashtags": ["foodtok"],"hashtagsFromCaption": ["#foodtok"],"viewCount": 84210,"shareCount": 220,"boostCount": 3011,"commentCount": 96,"recommendCount": 18,"isUnmeasurable": false,"engagementRate": 0.03974,"boostRate": 35.76,"commentRate": 1.14,"shareRate": 2.6127,"ageHours": 340.2,"viewsPerHour": 247.53,"dateUploaded": "2026-07-26T08:54:12.000Z","durationMs": 22800,"durationSeconds": 22.8,"width": 1080,"height": 1920,"thumbnailUrl": "https://cf-st.sc-cdn.net/i/thumbnail4.jpg","contentUrl": "https://cf-st.sc-cdn.net/v/video2.mp4","llmTitle": null,"llmDescription": null,"llmKeywords": null,"scrapedAt": "2026-08-10T09:12:05Z","status": "OK","error": null,"viewsRank": 2,"viewsPercentile": 50.0,"boostsRank": 2,"engagementRateRank": 2,"viewsPerHourRank": 2,"primaryRank": 2},{"type": "video","isChild": false,"outcome": "ok","spotlightId": "W7_EDlXWTBiXAEEniNoMPwAAYc1LmNsaXAyAZ-LsAARAZ-Lro8rAAAAAQ","spotlightUrl": "https://www.snapchat.com/spotlight/W7_EDlXWTBiXAEEniNoMPwAAYc1LmNsaXAyAZ-LsAARAZ-Lro8rAAAAAQ?sc_referrer=web","url": "https://www.snapchat.com/spotlight/W7_EDlXWTBiXAEEniNoMPwAAYc1LmNsaXAyAZ-LsAARAZ-Lro8rAAAAAQ?sc_referrer=web","creator": {"name": "Studio Clip","username": "studioclip","url": "https://www.snapchat.com/add/studioclip","thumbnailUrl": "https://cf-st.sc-cdn.net/i/thumbnail5.jpg","snapcodeUrl": "https://app.snapchat.com/web/deeplink/snapcode?..."},"creatorUsername": "studioclip","creatorDisplayName": "Studio Clip","creatorProfileUrl": "https://www.snapchat.com/add/studioclip","description": "Behind the scenes","hashtags": [],"hashtagsFromCaption": [],"viewCount": null,"shareCount": 4,"boostCount": 12,"commentCount": 0,"recommendCount": 1,"isUnmeasurable": true,"engagementRate": null,"boostRate": null,"commentRate": null,"shareRate": null,"ageHours": 0.8,"viewsPerHour": null,"dateUploaded": "2026-08-10T08:20:00.000Z","durationMs": 9400,"durationSeconds": 9.4,"width": 1080,"height": 1920,"thumbnailUrl": "https://cf-st.sc-cdn.net/i/thumbnail6.jpg","contentUrl": "https://cf-st.sc-cdn.net/v/video3.mp4","llmTitle": null,"llmDescription": null,"llmKeywords": null,"scrapedAt": "2026-08-10T09:12:09Z","status": "OK","error": null,"viewsRank": null,"viewsPercentile": null,"boostsRank": null,"engagementRateRank": null,"viewsPerHourRank": null,"primaryRank": null},{"type": "batchStats","isChild": true,"rankBy": "views","videosAnalyzed": 2,"videosExcludedAsUnmeasurable": 1,"totalViews": 3220862,"medianViews": 1610431,"meanViews": 1610431,"viewsP25": 863315.5,"viewsP75": 2357546.5,"medianBoostRate": 40.345,"medianEngagementRate": 0.04381,"topVideoSpotlightId": "W7_EDlXWTBiXAEEniNoMPwAAYdW94bXd5dmF5AYv9OiSkAYv9OiP4AAAAAQ","topVideoViews": 3136652,"oldestPublishedAt": "2026-07-26T08:54:12.000Z","newestPublishedAt": "2026-08-09T21:03:44.000Z","spanDays": 14.507,"scrapedAt": "2026-08-10T09:12:10Z"}]
isUnmeasurable: true (third row above) marks a video where Snapchat itself returned the -1 sentinel for viewCount instead of a real number — that video's viewCount is null, it is excluded from every rate, median and rank, and videosExcludedAsUnmeasurable on the batch row reports exactly how many videos in the run that happened to.
A link that couldn't be resolved at all gets a status row with only three keys:
{"url": "https://www.snapchat.com/spotlight/invalid-or-removed-id","status": "NOT_FOUND","error": "This Spotlight video is unavailable."}
⚠️ Which rows are billed: the charged event is row_result, applied only to successfully-read video rows (type: "video", status: "OK"). Status rows (NOT_FOUND / ERROR) and the batchStats benchmark row are written to the dataset for your convenience but are pushed uncharged. To isolate only the billed rows in downstream processing, filter on item.type === "video".
How can I use the data extracted with Snapchat Spotlight Scraper With Engagement Data?
- 🎥 Creator and campaign managers: compare a batch of Spotlight videos — your own, a competitor's, or an influencer shortlist — in one run so every
viewsRankandviewsPercentileis apples-to-apples against the same benchmark. - 🤖 AI engineers and LLM developers: feed a link list in, get typed JSON out, and pass
engagementRate,viewsPerHourand the batch row straight to an LLM as grounded context for a creator-performance agent. - 📊 Market researchers and analysts: track
medianViews,medianEngagementRateandspanDaysfrom the batch row across categories or hashtag-based shortlists to gauge relative content performance. - 📈 Content and growth teams: use
minViews/minBoosts/minCommentsto shortlist only the videos worth a closer look before spending time reviewing them manually.
How do you monitor batch video rankings over time?
Because every row carries scrapedAt and the batch row reports videosAnalyzed, medianViews and medianEngagementRate for that exact run, re-running the same link list on a schedule turns a one-off snapshot into a trend line. Each run's viewsRank, viewsPercentile and primaryRank describe the videos submitted that run, so tracking a video's rank across runs shows whether it's gaining or losing ground against the rest of your shortlist — not just whether its raw view count went up.
To monitor a shortlist: keep the same spotlightVideos list, set rankBy to the metric you care about, and diff viewCount, boostCount, engagementRate, viewsPerHour and primaryRank against the previous run's output for the same spotlightId. A video whose primaryRank worsens while viewCount still climbs tells you the rest of the batch is growing faster — a signal raw counts alone don't surface.
Schedule the re-runs from the Apify Console's Schedules feature (cron-based, no code required), or trigger runs from your own pipeline via the Apify API and diff each run's dataset against the last.
Integrate Snapchat Spotlight Scraper With Engagement Data and automate your workflow
Snapchat Spotlight Scraper With Engagement Data works with any language or tool that can send an HTTP request.
REST API with Python
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_API_TOKEN>")run_input = {"spotlightVideos": ["https://www.snapchat.com/spotlight/W7_EDlXWTBiXAEEniNoMPwAAYdW94bXd5dmF5AYv9OiSkAYv9OiP4AAAAAQ",],"rankBy": "views",}run = client.actor("scrapier/snapchat-spotlight-scraper-with-engagement-data").call(run_input=run_input)for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["spotlightId"], item.get("viewCount"), item.get("primaryRank"))
Scheduled monitoring and delivery
The Actor has no built-in webhook sender, but Apify's platform-level Schedules run it on a cron cycle without code, and Webhooks on the run can notify your endpoint (Slack, email, a custom URL) when a run succeeds or fails, or trigger a follow-up Actor or integration. Both are configured from the Actor's page in Apify Console, not from an input field on this Actor.
Is it legal to scrape Snapchat Spotlight results?
Yes — scraping publicly accessible Snapchat Spotlight pages is legal in most jurisdictions, and this Actor returns only what any visitor's browser already loads: the same public video page, parsed into structured fields. In hiQ Labs, Inc. v. LinkedIn Corp. (9th Cir. 2019, reaffirmed 2022), the Ninth Circuit held that scraping data from publicly accessible web pages does not violate the U.S. Computer Fraud and Abuse Act. Because this Actor returns public creator identifiers alongside public content (creatorUsername, creatorDisplayName), personal-data regimes such as GDPR and CCPA can still apply depending on how you store and use the data — build in a retention and deletion policy if you keep results long-term. Scraping for AI training and scraping for operational monitoring carry different risk profiles under those regimes. Consult your legal team for commercial use cases involving bulk data storage.
Frequently asked questions
Does the scraper support languages or regions other than English?
No. Every request is fetched with locale=en-US appended automatically, and there is no input parameter to change it — captions and creator names come back in whatever language the creator originally published them in, but Snapchat's own page chrome is always requested in English.
Can I rank videos by something other than views?
Yes — set rankBy to boosts, engagementRate or viewsPerHour. Every video still carries all five rank fields (viewsRank, boostsRank, engagementRateRank, viewsPerHourRank, primaryRank) regardless of which one you pick; rankBy only decides which one is copied into primaryRank. ⚠️ The batch row's topVideoSpotlightId/topVideoViews are always the video with viewsRank == 1 — they are not affected by rankBy, even when you rank the run by boosts or engagement rate.
How does the scraper handle Snapchat's anti-bot measures?
It sends a browser-matching User-Agent and Accept-Language header on every request, retries a failed fetch up to 3 times with a capped backoff (2 seconds × attempt number, up to 10 seconds), and supports routing requests through Apify Proxy or a custom proxy URL via proxyConfiguration. It does not use a headless browser — it reads the same server-rendered embedded JSON payload the page ships to any visitor.
Does the scraper extract batch-relative rankings and percentiles?
Yes — when includeBatchStats is on (default), every video row carries viewsRank, viewsPercentile, boostsRank and engagementRateRank, and one extra batchStats row summarizes the whole run. These fields are absent (null) for videos Snapchat marked unmeasurable (isUnmeasurable: true) and for any run where includeBatchStats is turned off.
How many Spotlight videos does the scraper process per run?
As many as you list in spotlightVideos, bounded by maxItems if you set one (default 0, meaning no cap — every link submitted is processed). There is no separate platform-imposed result cap documented for this Actor beyond the links you supply.
How do I track a Spotlight video's engagement over time?
Re-run the same spotlightVideos list on a schedule (Apify Console's Schedules feature) and diff each run's viewCount, engagementRate, viewsPerHour and primaryRank for the same spotlightId against the previous run's dataset. scrapedAt on every row tells you exactly when each reading was taken.
Does this work with Claude, ChatGPT and AI agent frameworks?
It's callable as an HTTP endpoint by any agent framework via the Apify API or apify-client — an agent can trigger a run, poll or stream the dataset, and use the returned engagement fields as grounded context before answering. No dedicated MCP server is documented for this Actor.
Can I use this scraper without managing proxies or a Snapchat account?
Yes. No Snapchat login is used — the Actor reads the same public page a browser would. proxyConfiguration defaults to a direct connection (no proxy); turn on Apify Proxy through that field only if you're processing enough links to want IP rotation.
What happens if I submit the same video link twice?
By default (skipDuplicateSpotlights: true) the video is fetched and saved only once, however many times its link appears in your input, deduplicated by the video's canonical Spotlight id before any fetch happens. Turn skipDuplicateSpotlights off to get one row per submitted link instead.
Why does a video sometimes have no engagement fields?
If a link couldn't be resolved to a real Spotlight video, the row is a status row (status: "NOT_FOUND" or "ERROR") with only url, status and error — never a video row with zero-filled counters, so a broken link never silently looks like a real, unpopular video.
Does this download the Spotlight video itself?
No. It returns metadata and engagement numbers only — a contentUrl field points to the video file, but nothing is downloaded on your behalf.
💬 Your feedback
Found a bug or a field that doesn't match what Snapchat's page shows? Open an issue from the Issues tab on this Actor's Apify Console page, or reach out through the Apify Store listing — reports like this keep the Actor accurate as Snapchat's page changes.