Snapchat User Stories Scraper & Spotlight Videos Scraper avatar

Snapchat User Stories Scraper & Spotlight Videos Scraper

Pricing

from $4.99 / 1,000 results

Go to Apify Store
Snapchat User Stories Scraper & Spotlight Videos Scraper

Snapchat User Stories Scraper & Spotlight Videos Scraper

Snapchat User Stories & Spotlight Videos Scraper extracts public stories and Spotlight videos, including usernames, captions, video URLs, timestamps, engagement, and creator data. Ideal for content research, trend analysis, competitor monitoring, and social media insights.

Pricing

from $4.99 / 1,000 results

Rating

0.0

(0)

Developer

API Empire

API Empire

Maintained by Community

Actor stats

0

Bookmarked

17

Total users

0

Monthly active users

3 days ago

Last modified

Share

Snapchat Scraper โ€” Extract Stories, Highlights & Spotlight Videos

Snapchat User Stories Scraper & Spotlight Videos Scraper extracts a public Snapchat profile's current Story, every Highlight, and every public Spotlight video in a single run. Give it a username or a profile URL and get back typed JSON rows for stories, highlights, and Spotlight videos โ€” media URLs, engagement counts, hashtags, and timestamps โ€” with no HTML, no CSS selectors, and no manual parsing. It reads Snapchat's own page data directly instead of scraping visible text, so field names stay stable even as the page's markup changes. Point it at a username and start pulling structured Snapchat data in minutes.

๐Ÿ“ธ What is Snapchat User Stories Scraper & Spotlight Videos Scraper?

Snapchat User Stories Scraper & Spotlight Videos Scraper is an Apify Actor that reads a public snapchat.com/@username profile page and returns three entity types in one dataset: the profile's current Story, its Highlights, and its public Spotlight videos. No Snapchat account, login, or official API access is required โ€” the Actor requests only the public profile page.

  • ๐Ÿ“– Scrape the current Story โ€” every snap in order, with media URLs, preview thumbnails, and timestamps
  • โœจ Scrape every public Highlight โ€” the same per-snap detail as the Story, always tagged with isChild: true
  • ๐ŸŽฌ Scrape every public Spotlight video โ€” views, shares, comments, hashtags, duration, dimensions, upload date, and deeplink
  • ๐Ÿงน Typed JSON only โ€” no HTML, no manual parsing, and no video/image downloading (media fields are URLs, not files)
  • ๐ŸŒ No proxy required by default โ€” automatic fallback if Snapchat starts blocking requests

๐Ÿ—‚๏ธ What data does Snapchat User Stories Scraper & Spotlight Videos Scraper collect?

The Actor returns three distinct row types, identified by the type field (story, highlight, spotlight).

Data TypeKey FieldsJSON Field Names
Storytitle, thumbnail, ordered snap list, attribution flagstoryTitle, thumbnailUrl, snapList, isAttributed
Highlighthighlight ID, title, ordered snap list, child flaghighlightId, storyTitle, snapList, isChild
Spotlight Videoviews, shares, comments, duration, dimensions, hashtagsplays, shares, comments, durationMs, width, height, hashtags

๐Ÿงฉ Why not build this yourself?

Snapchat does not publish a public API for reading an arbitrary public user's Story, Highlight, or Spotlight catalogue โ€” its public developer surfaces (Snap Kit, the Marketing/Ads API) are built for logging in, sharing content into Snapchat, or managing ad campaigns, not for reading another user's public content. Building and maintaining that read path yourself means reverse-engineering the profile page's own __NEXT_DATA__ JSON payload (a nested pageProps.story / curatedHighlights / spotlightStoryMetadata structure), handling Snapchat's {"value": X} wrapper convention on scalar fields, and recognizing sentinel values such as -1 for "count not available yet" instead of reporting them as fake zeros. It also means building retry and proxy-fallback logic for when Snapchat starts returning 403/429/503 responses. This Actor already does all of that, and keeps the output schema stable even when the page's internal structure shifts.

๐Ÿ‘ฅ Why do developers and teams scrape Snapchat?

๐Ÿค– For AI engineers and agent builders

Spotlight rows carry stable, typed fields โ€” plays, shares, comments, hashtags, durationMs โ€” that can be indexed into a vector store or fed straight into an agent's tool-call response without an HTML-parsing step. An agent tool wired to startUrls can pull a creator's current content set on demand and reason over spotlightTitle, hashtags, and engagement counts in the same turn, and transcriptUrl (when Snapchat provides one) gives a direct link to spoken-word content for transcription pipelines.

๐Ÿ“ˆ For marketers and brand teams

Track a competitor's or your own brand's Story, Highlights, and Spotlight output on a schedule: uploadedAt timestamps show publishing cadence, plays/shares/comments/boostCount/recommendCount show which videos are landing, and hashtags shows which campaigns or trends a creator is riding. Filtering with minSpotlightViews and minSpotlightShares before the data reaches your dataset keeps a monitoring run focused on content that actually performed.

๐Ÿ”ฌ For researchers and analysts

hashtags, durationMs, width/height, and engagement counts across many public profiles support format and topic studies without needing platform API access. Because the Actor only reads publicly accessible profile pages, this scope stays limited to what any visitor to snapchat.com/@username could already see.

๐Ÿงฑ For developers building data products

row_result events map cleanly onto a dataset schema you can build a product on top of โ€” a Spotlight leaderboard, a hashtag trend tracker, or a scheduled content archive. Since every row carries username and scrapedAt, downstream pipelines can diff runs over time without extra bookkeeping.

๐Ÿš€ How to scrape Snapchat (step by step)

  1. Open the Actor's page on the Apify Store and click Try for free (or find it by name in your Apify Console).
  2. Provide the required input โ€” startUrls, one or more Snapchat usernames or profile URLs.
  3. Set optional filters โ€” maxSnaps to cap snaps per Story/Highlight, includeSpotlight to turn Spotlight collection on or off, and minSpotlightViews / minSpotlightShares / maxSpotlightItems to control which Spotlight videos are saved.
  4. Start the run from the Console, the Apify API, or the apify_client SDK.
  5. Download results as JSON, CSV, or any other format the Apify dataset export supports.

What to do when Snapchat changes its structure

The Actor reads Snapchat's own __NEXT_DATA__ page payload rather than guessing at visible text, and it is maintained against that structure. The dataset's field names and types stay the same on your end even after an update, so downstream integrations built against this schema keep working without changes.

โฌ‡๏ธ Input

ParameterRequiredTypeDescriptionExample Value
startUrlsYesarrayOne or more Snapchat usernames (e.g. fcbarcelona) or profile URLs (e.g. https://www.snapchat.com/@fcbarcelona). Each profile is scanned for its current Story, all Highlights, and all public Spotlight videos.["fcbarcelona", "https://www.snapchat.com/@nba"]
maxSnapsNointegerCap on how many individual snaps to collect per Story or Highlight. Default 100. Minimum 1. No maximum is defined in the schema. Does not affect Spotlight videos โ€” each Spotlight video is always one row.50
includeSpotlightNobooleanWhen true (default), also collect every public Spotlight video for each profile as its own row (type: "spotlight"). When false, only Story/Highlight snaps are collected.true
minSpotlightViewsNointegerSkip Spotlight videos with fewer plays/views than this. Default 0 (no filter). Minimum 0. Only affects Spotlight rows.1000
minSpotlightSharesNointegerSkip Spotlight videos with fewer shares than this. Default 0 (no filter). Minimum 0. Only affects Spotlight rows.10
maxSpotlightItemsNointegerCap on how many Spotlight video rows to save per profile. Default 0 (unlimited โ€” collects every public Spotlight video found on the page). Minimum 0.20
proxyConfigurationNoobjectChoose which proxies to use. By default, no proxy is used. If Snapchat rejects or blocks a request, the Actor automatically falls back to a datacenter proxy, then a residential proxy, with up to 3 retries.{"useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"]}

Example input:

{
"startUrls": ["fcbarcelona", "https://www.snapchat.com/@nba"],
"maxSnaps": 50,
"includeSpotlight": true,
"minSpotlightViews": 1000,
"minSpotlightShares": 10,
"maxSpotlightItems": 20,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
}
}

Common pitfall: minSpotlightViews, minSpotlightShares, and maxSpotlightItems only apply when includeSpotlight is true. With includeSpotlight set to false, no Spotlight rows are produced at all, regardless of what the filter values are set to. A video must clear both the views threshold and the shares threshold to be kept โ€” it is not enough to pass one.

โฌ†๏ธ Output

Every run writes typed JSON rows to the Actor's dataset โ€” one row per Story, per Highlight, and per Spotlight video. Download results as JSON, CSV, Excel, or any other format the Apify dataset export UI/API supports. Story and Highlight rows share the same shape; Spotlight rows have a structurally different shape.

Scraped Story

{
"username": "fcbarcelona",
"type": "story",
"isChild": false,
"storyId": "af52de71-8e3c-4a2b-9f10-2b1c7e4d9a33",
"storyTitle": "Fcbarcelona",
"thumbnailUrl": "https://cf-st.sc-cdn.net/d/dpKzOaB4WEqm/thumbnail.jpg",
"highlightId": null,
"snapList": [
{
"snapIndex": 0,
"isSponsored": false,
"snapTitle": null,
"snapSubtitles": null,
"lat": null,
"lng": null,
"hasAttachment": false,
"intervalStartTimeMs": 1753776000000,
"audioTranscriptionObjectUrl": null,
"createTime": "2026-07-29T14:32:10.000Z",
"mediaPreviewUrl": "https://cf-st.sc-cdn.net/d/dpKzOaB4WEqm/preview.jpg",
"mediaUrl": "https://cf-st.sc-cdn.net/d/dpKzOaB4WEqm/media.mp4"
}
],
"isAttributed": null,
"scrapedAt": "2026-07-30T09:12:44.000Z"
}

Scraped Highlight

{
"username": "fcbarcelona",
"type": "highlight",
"isChild": true,
"storyId": "b8a8f6bc-d373-4dcc-9f06-0690b8c48fb1",
"storyTitle": "NEW KIT",
"thumbnailUrl": "https://cf-st.sc-cdn.net/d/qzPmOaB2WErk/thumbnail.jpg",
"highlightId": "b8a8f6bc-d373-4dcc-9f06-0690b8c48fb1",
"snapList": [
{
"snapIndex": 0,
"isSponsored": false,
"snapTitle": null,
"snapSubtitles": null,
"lat": null,
"lng": null,
"hasAttachment": false,
"intervalStartTimeMs": 1729036800000,
"audioTranscriptionObjectUrl": null,
"createTime": "2025-10-16T10:00:00.000Z",
"mediaPreviewUrl": "https://cf-st.sc-cdn.net/d/qzPmOaB2WErk/preview.jpg",
"mediaUrl": "https://cf-st.sc-cdn.net/d/qzPmOaB2WErk/media.mp4"
}
],
"isAttributed": true,
"scrapedAt": "2026-07-30T09:12:45.000Z"
}

Scraped Spotlight Video

{
"username": "fcbarcelona",
"type": "spotlight",
"isChild": false,
"spotlightId": "W7_EDlXWTBiXAEEniNoMPwAAY",
"spotlightTitle": "Training highlights",
"thumbnailSrc": "https://cf-st.sc-cdn.net/d/vXqLoaB9WEab/thumb.jpg",
"mediaUrl": "https://cf-st.sc-cdn.net/d/vXqLoaB9WEab/video.mp4",
"plays": 284213,
"shares": 1042,
"comments": 87,
"boostCount": 15,
"recommendCount": 302,
"hashtags": ["fcbarcelona", "training"],
"durationMs": 18500,
"width": 1080,
"height": 1920,
"uploadDateMs": 1753142400000,
"uploadedAt": "2025-07-22T00:00:00.000Z",
"deeplink": "https://www.snapchat.com/spotlight/W7_EDlXWTBiXAEEniNoMPwAAY",
"transcriptUrl": null,
"scrapedAt": "2026-07-30T09:12:47.000Z"
}

uploadDateMs (the raw millisecond timestamp uploadedAt is derived from) is written to every Spotlight row but is not part of the dataset's default table view โ€” open the dataset as JSON, or add the column manually, to see it. plays and shares are reported as null, never a faked 0, on the small number of counters Snapchat itself has not populated yet. transcriptUrl is only populated when Snapchat's own page data includes an audio transcription for that video.

๐Ÿ“Š How does Snapchat User Stories Scraper & Spotlight Videos Scraper compare to other Snapchat scrapers?

FeatureThis ActorGeneric/DIY alternative
Entity coverageStory, Highlights, and Spotlight videos in one runUsually needs a separate script or tool per content type
Data sourceReads the profile page's own __NEXT_DATA__ JSONHTML/regex scraping, breaks whenever markup changes
Spotlight filteringBuilt-in minSpotlightViews / minSpotlightShares thresholdsMust be written and maintained by hand
Proxy handlingAutomatic no-proxy โ†’ datacenter โ†’ residential fallback on 403/429/503Must be built, tuned, and monitored manually
Output formatOne typed JSON row per Story/Highlight/Spotlight item, stable field namesRaw HTML or ad-hoc JSON that needs custom parsing

If you're building an AI agent or RAG pipeline, the output format row is the decision-maker โ€” parsing HTML inside an agent loop is a reliability failure mode, not a feature. A stable JSON schema means the same integration keeps working across runs.

๐Ÿ”ข How many results can you scrape with Snapchat User Stories Scraper & Spotlight Videos Scraper?

There is no hard cap on how many usernames you can put in startUrls, and no cap on how many Highlights or Spotlight videos are collected per profile unless you set one. maxSnaps (default 100, minimum 1, no maximum in the schema) limits how many snaps are kept per Story or Highlight; it does not limit the number of Highlights themselves or any Spotlight video. maxSpotlightItems (default 0 = unlimited) limits how many Spotlight rows are saved per profile, counting only videos that already passed the minSpotlightViews/minSpotlightShares filters. The Actor makes one request for the profile's main page, plus one additional request per Highlight only when Snapchat doesn't inline that Highlight's snap list on the main page โ€” there is no further pagination. Any cap on how many Highlights or Spotlight videos a profile itself displays is set by Snapchat, not by this Actor.

Integrate Snapchat User Stories Scraper & Spotlight Videos Scraper and automate your workflow

Snapchat User Stories Scraper & Spotlight Videos Scraper works with any language or tool that can send an HTTP request.

REST API integration

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_API_TOKEN>")
run = client.actor("<your-username>/snapchat-user-stories-scraper-and-spotlight-videos-scraper").call(
run_input={
"startUrls": ["https://www.snapchat.com/@fcbarcelona"],
"includeSpotlight": True,
"minSpotlightViews": 1000,
}
)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["username"], item["type"], item.get("plays"))

Works in Python, Node.js, Go, Ruby, cURL.

Automation platforms (n8n, Make, LangChain)

n8n's Apify node can run this Actor and fetch its dataset items as a step in a workflow, without writing any request code. Make's Apify app exposes "Run an Actor" and "Get Dataset Items" modules that plug the same run into a Make scenario. LangChain's Apify integration (langchain_community.utilities.ApifyWrapper / ApifyDatasetLoader) can call the Actor and load its dataset directly into a document loader or retriever for a RAG pipeline.

Yes โ€” scraping publicly accessible Snapchat content is generally legal, but how you use the data determines your compliance obligations. Snapchat User Stories Scraper & Spotlight Videos Scraper returns only what is already visible on a public snapchat.com/@username page: no login-gated content, no private accounts, no direct-message content. Because rows include a username and content a person or brand chose to publish under that username, storing and using this data at scale may fall under GDPR or CCPA if any of it is personal data โ€” you need a lawful basis for collecting and retaining it, and you should honor deletion or opt-out requests where applicable. Consult legal counsel for commercial use cases involving bulk personal data.

โ“ Frequently asked questions

Does Snapchat User Stories Scraper & Spotlight Videos Scraper work without a Snapchat account?

Yes. The Actor requests only the public snapchat.com/@username page โ€” no login, cookies, or Snapchat API credentials are used or required.

How often is the scraped data updated?

Every run fetches the profile page live at the time it runs; nothing is served from a cache. Running the Actor again returns whatever Story, Highlights, and Spotlight videos are on the profile at that moment.

What happens if a profile has no active Story or no Spotlight videos?

The Actor simply produces no row of that type for that profile. A profile with no currently active Story produces no story row; a profile with no public Spotlight videos produces no spotlight rows. Highlight and other row types for that profile are unaffected.

Can I scrape private Snapchat accounts?

No. Only content visible on a profile's public page is returned. Private accounts and any content behind a login wall are out of scope.

Do I need to install anything to run this Actor?

No. It runs entirely on Apify's platform โ€” start it from the Apify Console, the Apify API, or the apify_client SDK, and download results from the dataset. No local setup is required.

Does Snapchat User Stories Scraper & Spotlight Videos Scraper work for AI agent workflows and LLM pipelines?

Yes. It is callable as an HTTP endpoint through the Apify API or apify_client, by any agent framework that can make a request. Every response is typed JSON โ€” no HTML and no parsing step before passing it to an LLM.

How does Snapchat User Stories Scraper & Spotlight Videos Scraper handle Snapchat's anti-bot system?

By default, no proxy is used. If Snapchat responds with a block or rate-limit status (403, 429, or 503) or a connection error occurs, the Actor automatically retries through a datacenter proxy, then a residential proxy, for up to 3 attempts.

How does Snapchat User Stories Scraper & Spotlight Videos Scraper compare to other Snapchat scrapers?

Compared to a generic or hand-built scraping script, this Actor reads Snapchat's own __NEXT_DATA__ page JSON instead of parsing visible HTML, covers Story, Highlight, and Spotlight content in one run, and includes built-in Spotlight engagement filters and proxy fallback โ€” capabilities that a DIY script would otherwise need to be built and maintained separately.

Does Snapchat User Stories Scraper & Spotlight Videos Scraper return data in a format LLMs can use directly?

Yes. Output is typed, normalized JSON with stable field names โ€” no HTML, no selectors, no parsing. Pass it directly into an LLM context window, index it into a vector store, or route it through an agent tool.

Can I use Snapchat User Stories Scraper & Spotlight Videos Scraper without managing proxies?

Yes. By default no proxy is used at all, and if Snapchat starts blocking requests the Actor manages the datacenter-then-residential fallback itself โ€” you only need to configure proxyConfiguration if you want to override that default behavior.

What happens when Snapchat changes its structure or blocks the scraper?

The Actor is maintained against Snapchat's page structure, and the dataset's field names and types stay the same on your end even after an update โ€” integrations built against this schema keep working without changes.

๐Ÿ’ฌ Your feedback

Found a bug or missing a field? We want to know. Reach out through the Actor's page on the Apify Store or Apify Console to report issues โ€” active maintenance is what keeps this schema stable for you.