Snapchat Spotlight Scraper By Link, ID Or Share URL
Pricing
from $2.99 / 1,000 results
Snapchat Spotlight Scraper By Link, ID Or Share URL
Snapchat Spotlight Scraper by Link, ID or Share URL extracts Spotlight video details from direct links, video IDs, or share URLs, including captions, creators, views, likes, comments, hashtags, timestamps, and media data. Ideal for content research and engagement analysis.
Pricing
from $2.99 / 1,000 results
Rating
0.0
(0)
Developer
SimpleAPI
Maintained by CommunityActor stats
0
Bookmarked
13
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Snapchat Spotlight Scraper — Videos, Engagement and Creator Data
This Actor resolves any Snapchat Spotlight link, share URL, or bare video id into structured JSON — creator username and display name, caption, hashtags, view/share/boost/comment/recommend counts, upload date, duration, and direct thumbnail and video URLs. It accepts every real-world link shape Snapchat's own "Copy link" button produces, plus profile-scoped and click.snapchat.com one-links, and reports an honest available / not-found / unreadable / unrecognised verdict for each one. Social media analysts, competitive researchers, and AI agents use it to turn a list of Spotlight links into a clean dataset in minutes.
What is the Snapchat Spotlight Scraper By Link, ID Or Share URL?
It's a link-resolution Actor: you give it Snapchat Spotlight links, share URLs, or bare video ids, and it fetches each video's public detail page and returns one typed, normalized row per input — never a blank result for a link that just happened to arrive in an unfamiliar shape. No Snapchat account, login, or API key is required; the Actor reads the same public page a browser would.
Key features:
- 🔗 Six real-world link shapes, one canonical answer — accepts a bare id, a plain Spotlight URL, a share URL with any query string, a trailing-slash URL, a profile-scoped
/@user/spotlight/{id}URL, and aclick.snapchat.comone-link, resolving every one to the same canonical video id and URL. - ✅ Honest per-link verdicts — every input gets exactly one of four outcomes:
available,notFound,unreadable, orunrecognised, with a plain-language reason. - 🧹 Duplicate collapsing — inputs that resolve to the same video (even in different formats) are fetched once; every extra input is marked as a duplicate and never billed again.
- 🧪 Verify-only mode — check link health across a large batch without pulling the full caption, counts, and media URLs for every link.
- 📊 Run-level link audit — one summary row with the submitted / resolved / available / not-found / unreadable / unrecognised counts for the whole run.
- 🌐 Proxy support — run direct, through Apify Proxy, or with your own proxy URLs.
What data can I extract with the Snapchat Spotlight Scraper?
For every link, id, or share URL you submit, the Actor returns identity fields, an availability verdict, creator details, video metadata, and engagement counts:
| Field | Example Value | Use Case |
|---|---|---|
type | "video" | Row-type flag; distinguishes per-link rows from the run summary row |
isChild | false | true only on the one run-level summary row |
inputValue | "W7_EDlX…AAAAAQ" | The original value you submitted, unmodified |
inputFormat | "shareUrl" | Which of the six accepted link shapes was detected |
spotlightId | "W7_EDlX…AAAAAQ" | Canonical video id every input format resolves to |
spotlightUrl | "https://www.snapchat.com/spotlight/W7_EDlX…" | Canonical, tracking-free URL for the video |
wasNormalised | true | Whether the input had to be transformed to reach the canonical id |
duplicateOfInput | null | Set to the earlier input's value when this one resolved to a video already fetched |
outcome | "available" | Typed verdict: available / notFound / unreadable / unrecognised |
outcomeReason | "Video data retrieved successfully." | Plain-language reason behind the verdict |
httpStatusClass | "ok" | Coarse class: ok / clientError / serverError — raw status codes are never exposed |
checkedAt | "2026-08-10T12:00:00Z" | When the availability check ran |
restricted | false | Passed through exactly as Snapchat reports it on the page |
scrapedAt | "2026-08-10T12:00:01Z" | When the row was written |
url | "https://www.snapchat.com/spotlight/W7_EDlX…" | Legacy alias for spotlightUrl, kept for base-shape compatibility |
status | "OK" | Legacy alias: "OK" when outcome is available, else "ERROR" |
error | null | Legacy alias: outcomeReason when not available, else null |
creator | {"name":"Mike Tyson","username":"miketyson","url":"…","thumbnailUrl":"…","snapcodeUrl":"…"} | Nested creator object, populated on available rows unless verifyOnly is on |
creatorUsername | "miketyson" | Flat creator handle, for filtering and joins |
creatorDisplayName | "Mike Tyson" | Flat creator display name |
creatorProfileUrl | "https://www.snapchat.com/add/miketyson" | Flat creator profile URL |
description | "…" | Video caption text |
hashtags | ["#birdvideos","#birds"] | Snapchat's own tagged-hashtags field (lower coverage) |
hashtagsFromCaption | ["#birdvideos","#birds","#viral"] | Hashtags parsed out of the caption text itself (higher coverage) |
viewCount | 3136652 | View count |
shareCount | 1373 | Share count |
boostCount | 210 | Boost count |
commentCount | 84 | Comment count |
recommendCount | 512 | Recommend count |
dateUploaded | "2023-11-23T17:28:47Z" | Upload date |
durationMs | 15650 | Video duration in milliseconds |
width | 540 | Video width in pixels |
height | 960 | Video height in pixels |
thumbnailUrl | "https://…" | Direct thumbnail image URL |
contentUrl | "https://…" | Direct video URL — a URL only, no video file is ever downloaded or stored |
llmTitle | "…" | AI-generated title, where Snapchat's own page supplies one |
llmDescription | "…" | AI-generated description |
llmKeywords | "…" | AI-generated keywords |
A separate summary row (type: "linkAudit", isChild: true) is pushed once per run with linksSubmitted, linksResolved, available, notFound, unreadable, unrecognised, and duplicatesCollapsed.
Engagement and creator data
Each available video carries five engagement counters — viewCount, shareCount, boostCount, commentCount, and recommendCount — alongside the flat creatorUsername, creatorDisplayName, and creatorProfileUrl fields and the nested creator object (which adds a thumbnail and Snapcode URL). This is the block analysts pull to rank a set of videos by traction or to attribute a batch of links back to their creators without a second lookup.
Link identity and verdict data
inputFormat, wasNormalised, and duplicateOfInput describe exactly how your raw input was interpreted; outcome, outcomeReason, httpStatusClass, and checkedAt describe what happened when the Actor tried to resolve it. Together these let you segment a batch by "clean" vs. "needs a look" without opening a single link by hand.
How does this Spotlight Scraper differ from the official Snapchat API?
Snapchat's official Public Profile API (part of the Snap Marketing API) only exposes Spotlight data for creators who have registered a Snap Public Profile and explicitly enabled share_authorized_data_with_api_partners — it has no endpoint for resolving an arbitrary Spotlight link, id, or share URL a third party happens to have (source: developers.snap.com/marketing-api/Public-Profile-API, checked 2026-08-15).
| Feature | Snap Public Profile API | Snapchat Spotlight Scraper |
|---|---|---|
| Access requirement | Registered Public Profile + approved Marketing API app | None — just the link, id, or share URL |
| Lookup scope | A claimed profile's own registered content | Any public Spotlight video, by link, id, or share URL |
| Link-format handling | Not applicable — profile-scoped only | Bare id, plain URL, share URL with tracking params, trailing-slash URL, profile-scoped URL, click.snapchat.com one-link |
| Unclaimed/third-party creator coverage | Not accessible | Covered — no profile registration needed |
| Setup | OAuth app registration and review, creator opt-in | Provide links, run the Actor |
| Output shape | Raw partner API JSON per Snap's schema | One normalized row per link, with a typed availability verdict |
Can I look up any Snapchat Spotlight video through Snapchat's own API?
No — the Public Profile API only returns data for a Public Profile that has registered with Snap's Marketing API and opted into partner data sharing. It has no "look up this Spotlight link" endpoint for videos or creators outside that program, which is exactly the gap this Actor fills: any public Spotlight link, id, or share URL resolves without the creator having registered anything.
Use the official API if you manage a registered Snap Public Profile and want its own authorized analytics through an approved app. Use this Actor when you have a list of public Spotlight links or ids — your own or someone else's — and need their data without going through Snap's developer approval process.
How to use data extracted from Snapchat Spotlight
Social media analysts
Feed a list of Spotlight links or ids into spotlightLinksOrIds, then rank the output by viewCount, shareCount, or recommendCount to see which videos are driving engagement. creatorUsername and dateUploaded let you group results by creator or by upload window without a second lookup.
Agencies and monitoring services
Agencies running the same link list on a recurring schedule use outcome and outcomeReason to spot when a client's or competitor's Spotlight video goes from available to notFound — a clean signal for a takedown, deletion, or expired campaign asset — without manually re-checking each link.
Market research and trend analysis
hashtags and hashtagsFromCaption support hashtag-level trend tracking across a batch of videos, while durationMs, width, and height reveal format patterns (vertical full-screen vs. cropped) across a sample of Spotlight content in a niche.
AI agents and automated pipelines
Because every row carries a typed outcome instead of throwing on a dead link, an agent can submit a mixed batch of links — some live, some stale — and branch on outcome programmatically instead of parsing errors. llmTitle, llmDescription, and llmKeywords (where Snapchat's own page supplies them) give an agent ready-made summary text to feed into a RAG index or a recommendation pipeline.
⬇️ Input sample
| Parameter | Required | Type | Description | Example Value |
|---|---|---|---|---|
spotlightLinksOrIds | No | array | 🔗 Links or ids to resolve — one per line. Accepts a bare id, a plain URL, a share URL with any query string, a trailing-slash URL, a profile-scoped /@user/spotlight/{id} URL, or a click.snapchat.com one-link. | ["W7_EDlX…AAAAAQ"] |
urls | No | array | 🔗 Spotlight URLs (legacy field). Kept for compatibility with earlier input files — works exactly like spotlightLinksOrIds; only one of the two fields is needed. | [] |
maxItems | No | integer | 🔢 Max items to process. Default 0 processes every input; a positive number stops after that many inputs have been processed. Minimum 0. | 50 |
dedupeInputs | No | boolean | 🧹 Collapse duplicate links. When on, links resolving to the same video are fetched once and extra inputs are marked as duplicates instead of billed again. Default true. | true |
skipDuplicateSpotlights | No | boolean | 🧹 Skip duplicate spotlights (base field). Same setting as dedupeInputs, kept under its original name for backward compatibility — turning either one off turns duplicate collapsing off. Default true. | true |
rejectUnrecognisedInputs | No | boolean | 🚫 Drop unrecognised inputs silently. When on, an input that isn't a Spotlight link or id is skipped entirely. When off (default), it still appears as its own row with an unrecognised outcome. Default false. | false |
verifyOnly | No | boolean | 🧪 Verify only, skip full video data. When on, every link is still resolved and checked, but the row carries only identity and outcome fields — not caption, counts, or media URLs. Default false. | false |
includeUnavailableLinks | No | boolean | 📋 Include unavailable links in the output. When on (default), a link that couldn't be resolved still gets its own row with an honest outcome. When off, only available rows are written (the summary row still counts everything). Default true. | true |
proxyConfiguration | No | object | 🌐 Proxy configuration. Use Apify Proxy, your own proxy URLs, or run without a proxy. | {"useApifyProxy": false} |
No parameter is required — the Actor validates only that at least one link or id ends up in the combined input list, and fails with a clear message if it doesn't.
{"spotlightLinksOrIds": ["W7_EDlXWTBiXAEEniNoMPwAAYdW94bXd5dmF5AYv9OiSkAYv9OiP4AAAAAQ","https://www.snapchat.com/spotlight/W7_EDlXWTBiXAEEniNoMPwAAYZXl6dXZ2YXdnAZ3_SDG1AZ3_SDGdAAAAAQ?sender_web_id=web123&device_type=desktop&is_copy_url=true"],"maxItems": 0,"dedupeInputs": true,"skipDuplicateSpotlights": true,"rejectUnrecognisedInputs": false,"verifyOnly": false,"includeUnavailableLinks": true}
Common pitfall: dedupeInputs and skipDuplicateSpotlights are two names for the same setting, combined with AND, not OR — turning either one off turns duplicate collapsing off entirely, even if you left the other one at its default true. If you're editing an input file that sets both, flip both together.
⬆️ Output sample
Every row is flat, typed JSON — one row per input link, plus one summary row per run. No CSV/Excel/HTML export logic lives in the Actor code itself; those formats come from Apify's standard dataset export, available for any run from the Console or the API.
{"type": "video","isChild": false,"inputValue": "W7_EDlXWTBiXAEEniNoMPwAAYdW94bXd5dmF5AYv9OiSkAYv9OiP4AAAAAQ","inputFormat": "id","spotlightId": "W7_EDlXWTBiXAEEniNoMPwAAYdW94bXd5dmF5AYv9OiSkAYv9OiP4AAAAAQ","spotlightUrl": "https://www.snapchat.com/spotlight/W7_EDlXWTBiXAEEniNoMPwAAYdW94bXd5dmF5AYv9OiSkAYv9OiP4AAAAAQ","wasNormalised": false,"duplicateOfInput": null,"outcome": "available","outcomeReason": "Video data retrieved successfully.","httpStatusClass": "ok","checkedAt": "2026-08-10T12:00:00Z","restricted": false,"scrapedAt": "2026-08-10T12:00:01Z","url": "https://www.snapchat.com/spotlight/W7_EDlXWTBiXAEEniNoMPwAAYdW94bXd5dmF5AYv9OiSkAYv9OiP4AAAAAQ","status": "OK","error": null,"creator": {"name": "Mike Tyson","username": "miketyson","url": "https://www.snapchat.com/add/miketyson","thumbnailUrl": "https://…","snapcodeUrl": "https://…"},"creatorUsername": "miketyson","creatorDisplayName": "Mike Tyson","creatorProfileUrl": "https://www.snapchat.com/add/miketyson","description": "…","hashtags": ["#birdvideos", "#birds"],"hashtagsFromCaption": ["#birdvideos", "#birds", "#viral"],"viewCount": 3136652,"shareCount": 1373,"boostCount": 210,"commentCount": 84,"recommendCount": 512,"dateUploaded": "2023-11-23T17:28:47Z","durationMs": 15650,"width": 540,"height": 960,"thumbnailUrl": "https://…","contentUrl": "https://…","llmTitle": "…","llmDescription": "…","llmKeywords": "…"}
How do you scope a run precisely?
This Actor resolves the exact links or ids you hand it — it does not browse or search Snapchat, so there's no category, location, or keyword filter to tune. What you do control is which inputs get fetched, which rows get written, and how much detail each row carries: maxItems caps a large batch; dedupeInputs (or its alias skipDuplicateSpotlights) collapses repeat links so you're never billed twice for the same video; rejectUnrecognisedInputs and includeUnavailableLinks decide whether malformed or dead links show up in your dataset at all; and verifyOnly trades full video data for a lighter health check across a much larger link list.
Cap a large batch during testing:
{ "spotlightLinksOrIds": ["…", "…", "…"], "maxItems": 25 }
Health-check a big link list without pulling full data:
{ "spotlightLinksOrIds": ["…", "…"], "verifyOnly": true }
Keep the dataset to clean, live videos only:
{ "spotlightLinksOrIds": ["…", "…"], "rejectUnrecognisedInputs": true, "includeUnavailableLinks": false }
▶️ Want to try other Snapchat scrapers?
| Scraper Name | What it extracts |
|---|---|
| Snapchat User Spotlight Scraper By Keyword & Hashtag | Discovers Spotlight videos by keyword or hashtag search instead of a known link |
| Snapchat Popular Accounts Scraper: Story & Spotlight Content | Popular Snapchat accounts, plus their Story and Spotlight content |
| TikTok Scraper With Repost Insights Data | Comparable short-form video data on TikTok, including repost signals |
| Instagram Post Details Scraper With Engagement Data | Comparable post-level engagement data on Instagram |
How to extract Snapchat Spotlight data programmatically
This Actor runs as a standard Apify Actor: send it JSON input over the Apify API or apify-client SDK, and get structured JSON back from the run's dataset — no separate authentication beyond your Apify API token.
Python example
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_API_TOKEN>")run = client.actor("YOUR_USERNAME/snapchat-spotlight-scraper-by-link-id-or-share-url").call(run_input={"spotlightLinksOrIds": ["https://www.snapchat.com/spotlight/W7_EDlX…AAAAAQ?is_copy_url=true"],"verifyOnly": False,})for item in client.dataset(run["defaultDatasetId"]).iterate_items():if item.get("type") == "video":print(item["spotlightId"], item["outcome"], item.get("viewCount"))
Export to spreadsheets or CRM
Every dataset supports a direct CSV/Excel export from the Apify Console or API. Map creatorUsername → Creator, spotlightUrl → Video Link, viewCount/shareCount/commentCount → engagement columns, and dateUploaded → Upload Date to drop the output straight into a spreadsheet or CRM import template.
⚖️ Is it legal to scrape Snapchat Spotlight?
Yes — this Actor reads Spotlight video pages that Snapchat publishes without a login wall, the same pages any visitor's browser loads. Because the output includes personal data about individual creators — creatorUsername, creatorDisplayName, and creatorProfileUrl — GDPR and CCPA govern how you may store and use it, not database-rights law. You need a lawful basis for processing, should minimize retention to what your use case needs, and must honor deletion or access requests from a creator whose data you hold. Consult legal counsel for commercial applications involving bulk storage of personal data.
❓ FAQ
What does notFound mean, and can I tell if a video was deleted or never existed? Snapchat's dead-link response doesn't distinguish "deleted by the creator" from "never existed" — the Actor reports notFound either way rather than guessing.
What does unreadable mean? A genuine, disclosed "the Actor could not get a clean answer" state — reached only after up to three attempts with a capped backoff, never returned as fabricated data.
Can I get creator info along with the video data? Yes — creatorUsername, creatorDisplayName, creatorProfileUrl, and the nested creator object (adding a thumbnail and Snapcode URL) are included on every available row unless verifyOnly is on.
How accurate are the view, share, and comment counts? They're read directly from Snapchat's own page at the moment the Actor checks the link — as current as the page itself. Re-run the same links later to track how counts change over time.
How many links can I resolve per run? As many as you submit — maxItems (default 0) processes every input unless you set it to a positive number to cap the run.
Does the Actor collapse duplicate links automatically? Yes, by default. If two inputs — even in different formats, like a bare id and its share URL — resolve to the same video, only the first is fetched and billed; the rest are marked duplicateOfInput and never billed again.
Which rows are actually billed? Only the first-time resolution of each link, and only when its outcome is available or unrecognised. Duplicate-of-an-earlier-input rows are never billed, and a first-time notFound or unreadable result is written to the dataset without a charge. Filter on duplicateOfInput == null AND outcome IN ("available", "unrecognised") to isolate billed rows.
Does this Actor work with Claude, ChatGPT, and AI agent frameworks? It's callable as a standard HTTP endpoint through the Apify API from any agent framework that can make a REST call or use the apify-client SDK; no dedicated MCP server is documented for this Actor.
How does this compare to the other Snapchat scrapers in this collection? This Actor takes links, ids, or share URLs you already have — it does not search. The Snapchat User Spotlight Scraper By Keyword & Hashtag exists specifically for discovery when you don't already have a link.
Can I use this without a Snapchat account or API key? Yes — the Actor makes a plain public-page request for each link and needs no Snapchat login, account, or developer key. You only need an Apify account to run it.
Conclusion
The Snapchat Spotlight Scraper By Link, ID Or Share URL turns any mix of Spotlight links, ids, and share URLs into one clean, typed dataset — creator details, captions, hashtags, engagement counts, and media URLs, with an honest verdict on every input instead of a silent blank row. It's built for analysts, agencies, and AI pipelines that already have a list of links and need structured data back, not a browsing tool for discovering new ones. Paste in your links and start a run on Apify to get your first dataset.