Snapchat Scraper: Profile Spotlight Story Lens Hashtag Email avatar

Snapchat Scraper: Profile Spotlight Story Lens Hashtag Email

Pricing

from $1.75 / 1,000 results

Go to Apify Store
Snapchat Scraper: Profile Spotlight Story Lens Hashtag Email

Snapchat Scraper: Profile Spotlight Story Lens Hashtag Email

Scrape Snapchat profiles, Spotlight clips, Stories, AR Lenses, search/hashtag feeds — all in one actor. Extract emails, phones and social handles from bios. AI titles, scene descriptions, audio transcripts, viewer comments, related-clip feeds. Pure HTTP. 31 fields. JSON + CSV.

Pricing

from $1.75 / 1,000 results

Rating

0.0

(0)

Developer

Muhamed Didovic

Muhamed Didovic

Maintained by Community

Actor stats

0

Bookmarked

7

Total users

3

Monthly active users

a day ago

Last modified

Share

Snapchat Profile, Spotlight, Story, Lens & Hashtag Scraper

Snapchat Scraper

All-in-one Snapchat scraper — paste any mix of URL kinds in the same input list and the actor auto-classifies each one:

InputRow type emitted
Profile URL/@{u}, /add/{u}, or bare usernameprofile row: bio, subscribers, AR Lenses, live 24h story, all Stories, all Spotlights with AI titles + keywords + scene descriptions + detected language + viewer comments, plus a contacts panel (emails, phones, social handles, link aggregators)
Spotlight URL/spotlight/{id}spotlight row: that clip + full audio transcript + 25 "more like this" related clips + the clip's own comment thread
Lens URL/lens/{uuid} or /unlock?uuid={uuid}lens row: AR Lens detail + creator search tags + 12 related Lenses + Spotlight clips that use this Lens
Search / hashtag URL/explore/{query} (or #hashtag)search row: matching Spotlights, creators, Lenses, Discover episodes, places and topics — all in one normalised payload

One row per URL. JSON + CSV.

Pure HTTP. No Puppeteer, no Playwright, no headless Chromium, no third-party CAPTCHA solvers.


How it works

How it works

  1. Input. Paste any mix of:

    • Profile URLs — https://www.snapchat.com/@fcbayern or https://www.snapchat.com/add/fcbayern
    • Spotlight clip URLs — https://www.snapchat.com/spotlight/{shareId} (or the canonical long form /@{username}/spotlight/{shareId})
    • Lens URLs — https://www.snapchat.com/lens/{uuid} or https://www.snapchat.com/unlock?type=SNAPCODE&uuid={uuid}
    • Search / hashtag URLs — https://www.snapchat.com/explore/{query}
    • Bare usernames — fcbayern or @fcbayern
    • Bare hashtags — #UCL
    • Bare lens UUIDs — 8124c89bb79642518622ddebb088ccc0
  2. Process. Server-side resolve, fetch, extract and normalise. No browser overhead.

  3. Output. One row per URL — a profile row, spotlight-clip row, lens row, or search row — written to the Apify dataset.


Input

FieldTypeRequiredNotes
profileUrlsstring[]yesAny mix of profile URLs (/add/{u}, /@{u}, bare usernames), Spotlight URLs (/spotlight/{id}), Lens URLs (/lens/{uuid} or /unlock?uuid=...), and search/hashtag URLs (/explore/{q} or #hashtag). Auto-classified. Default includes a profile, a Spotlight clip, a Lens, and a hashtag search.
maxItemsintegernoSafety cap on how many URLs from the list get processed. One row per URL = one paid output record. Default 1000. Free-tier users are capped at 100.
includeSpotlightCommentsbooleannoInclude the public viewer-comments thread under each Spotlight (default true). Turn OFF for compact rows / CSV-friendly exports / PII-light workflows. Comments typically run 300–500 per profile and are the heaviest field — disabling cuts row size by ~45%. The spotlightComments[][] shape is preserved (empty arrays), so downstream code that indexes by spotlight position keeps working.
maxCommentsPerSpotlightintegernoWhen > 0, keeps only the top-N comments per Spotlight by Snapchat's ranking score. Default 0 (no limit). Useful for sentiment analysis when you only need top engagement.
maxConcurrency / minConcurrencyintegernoPer-actor parallelism. Default 5 / 1.
maxRequestRetriesintegernoRetries before a profile is given up. Default 5.
proxyobjectnoDefault: off (Snapchat profiles aren't gated). Enable a residential pool only if you hit rate limits on a very large input list.

Example input

Mix any URL kinds freely — auto-classified.

{
"profileUrls": [
"https://www.snapchat.com/add/fcbayern",
"@kyliejenner",
"https://www.snapchat.com/spotlight/W7_EDlXWTBiXAEEniNoMPwAAYamRxY2h6Znl4AZ34_8b_AZ34_5HDAAAAAQ",
"https://www.snapchat.com/lens/8124c89bb79642518622ddebb088ccc0",
"https://www.snapchat.com/explore/UCL",
"#fcbarcelona"
],
"maxItems": 50,
"maxConcurrency": 5,
"includeSpotlightComments": true,
"maxCommentsPerSpotlight": 0,
"proxy": { "useApifyProxy": false }
}

Yields 6 rows: 2 profile rows (Bayern + Kylie Jenner, each with a contacts panel), 1 Spotlight clip row (with audio transcript + 25 related clips), 1 Lens row (FC Barcelona AR lens + 12 related lenses), and 2 search rows (one per query — each aggregating ~24 matching Spotlights, ~5 creators and ~24 lenses).

Comment-toggle cheat sheet (measured on fcbayern, 25 spotlights)

includeSpotlightCommentsmaxCommentsPerSpotlightComments keptRow size
true (default)0 (default)all 467~322 KB
true5top 125 by ranking~218 KB
true20top ~400 by ranking~290 KB
false0 (empty threads)~177 KB

Output schema

Four row shapes, distinguished by the rowType field:

  • rowType: "profile" — emitted for profile URLs. Includes a contacts panel.
  • rowType: "spotlight" — emitted for Spotlight clip URLs. Includes audio transcript + related-feed.
  • rowType: "lens" — emitted for Lens URLs. Includes 12 related lenses + clips using this lens.
  • rowType: "search" — emitted for /explore/{query} URLs and bare #hashtags. Aggregates matching spotlights, creators, lenses, episodes, places and topics.

Eats five competitor SKUs. This actor folds the use cases of Profile Scraper, Spotlight Clip Scraper, Email Scraper, Lens Scraper, and Hashtag/Discovery Scraper — five separately-sold sister products on the Apify marketplace — into a single multi-URL-aware actor. And it surfaces fields that none of them expose: Snapchat's AI-generated Spotlight titles & scene descriptions, per-clip detected-language scores, audio-transcription URLs on Story snaps, full WebVTT audio transcripts, 25-clip related-feed, viewer comment threads.

Profile-level (top-level row)

{
"profileUrl": "https://www.snapchat.com/@fcbayern",
"username1": "FC Bayern", // display name
"username2": "fcbayern", // handle
"profileImageUrl": "https://cf-st.sc-cdn.net/…",
"profileDescription": "", // creator bio (when set)
"profileLocation": "Munich, Bavaria, Germany",
"subscribers": 902000, // integer
"category": "Sports Team",
"websiteUrl": "https://fcbayern.com",
"snapcodeImageUrl": "https://app.snapchat.com/…",
"badge": 1, // verified badge code
"sameAsLinks": [], // external profile links
"creationTimestampMs": "1557950746979",
"lastUpdateTimestampMs": "1778352327000",
"hasStory": false, // is a live 24h story posted right now?
"businessProfileId": "f035a3c6-9e43-4a23-a160-…", // UUID for joining datasets
"publisherType": null,
"primaryColor": null, // brand theme hex, if set
"squareHeroImageUrl": null, // wide hero banner, if set
"pageDescription": "FC Bayern is on Snapchat! (@fcbayern) | 902.0k Subscribers | Munich, Bavaria, Germany …",
"oneLinkUrl": "https://click.snapchat.com/aVHG?…", // universal mobile deeplink
"ogImageUrl": "https://us-east1-aws.api.snapchat.com/web-capture/…",
"relatedAccounts": [ // Snapchat's curated affinity list
{ "username": "juventus", "title": "Juventus", "badge": 1, "snapcodeImageUrl": null },
{ "username": "mancityofficial", "title": "Man City", "badge": 1, "snapcodeImageUrl": null },
{ "username": "chelseafc", "title": "Chelsea Football Club", "badge": 1, "snapcodeImageUrl": null }
],
"liveStory": { /* current 24h story — see below */ },
"lenses": [ /* AR Lenses tab — see below */ ],
"stories": [ /* see below */ ],
"spotlights": [ /* see below */ ],
"spotlightComments": [ /* per-spotlight viewer comments — see below */ ],
"contacts": { // see "Contacts" section below
"emails": ["press@example.com"],
"phones": ["+498912345678"],
"socialHandles": {
"instagram": "fcbayern",
"tiktok": "fcbayern",
"youtube": "fcbayerntv",
"twitter": "fcbayern",
"facebook": "FCBayern",
"telegram": null
},
"linktreeUrls": ["https://linktr.ee/…"],
"websiteUrls": ["https://fcbayern.com", "https://linktr.ee/…"]
},
"scrapedAt": "2026-05-11T08:21:09.412Z"
}

contacts — emails, phones, social handles extracted from bio + website

We run the profile's profileDescription, websiteUrl, and sameAsLinks through a contact-detection pass and surface:

  • emails[] — every email address found in the bio
  • phones[] — international-style phone numbers (digits-only, with leading +)
  • socialHandles — Instagram, TikTok, YouTube, Twitter/X, Facebook, Telegram (bare handles, no @). Recognises both full URLs (instagram.com/brand) and bio shorthand (IG: @brand)
  • linktreeUrls[]linktr.ee, linkin.bio, bio.link, beacons.ai, allmylinks.com, carrd.co aggregator URLs
  • websiteUrls[] — every http(s) URL found anywhere in the bio

If a creator hasn't put a given channel in their bio, the corresponding field is null or []. The fields are always present so downstream code can index without null-guarding.

stories[] — curated highlight collections (chronological)

{
"storyType": 3,
"storyId": "",
"storyTitle": "",
"storySubtitle": null,
"emoji": null,
"thumbnailUrl": "https://cf-st.sc-cdn.net/d/BvC2b4GL…",
"canonicalUrlSuffix": null,
"videoTrackUrl": null,
"snapList": [
{
"snapId": "",
"snapMediaType": 1,
"mediaUrl": "https://cf-st.sc-cdn.net/d/…",
"mediaPreviewUrl": "https://cf-st.sc-cdn.net/d/…",
"overlayUrl": null,
"attachmentUrl": null,
"timestampInSec": "1778311147",
"snapTitle": null,
"snapSubtitles": null,
"lat": null, // geo-tag if the snap was tagged with a location
"lng": null,
"isSponsored": null,
"audioTranscriptionUrl": null // Snapchat-hosted WebVTT of the spoken audio, if available
}
// … up to ~15 snaps per story
]
}

spotlights[] — single-clip Spotlight posts with engagement + AI enrichments

{
"storyId": "W7_EDlXWTBiXAEEn…",
"thumbnailUrl": "https://bolt-gcdn.sc-cdn.net/bp/…",
"description": "🟥😤🟥 What we need from our fans against PSG 🤜🤛 #UCL #FCBPSG",
"hashtags": ["#UCL", "#FCBPSG"],
"timestampInSec": "1777998991",
"uploadDateMs": "1777998991811",
"durationMs": "44170",
"width": 540,
"height": 960,
"mediaUrl": "https://bolt-gcdn.sc-cdn.net/bp/…",
"mediaPreviewUrl": "https://bolt-gcdn.sc-cdn.net/bp/…",
"contentUrl": "https://bolt-gcdn.sc-cdn.net/bp/…",
"deeplink": "https://click.snapchat.com/aVHG?…",
// Engagement
"viewCount": "15849",
"shareCount": "94",
"commentCount": "67",
"boostCount": "1455",
"recommendCount": "130",
// On-screen text + AI enrichments — exclusive to this actor
"embeddedTextCaption": null,
"aiTitle": "FC Bayern Players Urge Fans to Wear Red & Bring Energy for Champions League Match",
"aiDescription": "Athletes discussing fan engagement in soccer.",
"aiKeywords": [
"Bayern Munich training", "football fan energy", "Bayern Munich news",
"football motivation", "matchday tips"
// … up to ~25 LLM tags per clip
],
"contentKeywords": ["athlete training", "soccer", "fan engagement", "football", "team support"],
"detectedLanguages": [{ "languageCode": "de", "score": 0.9259 }],
// Linked sounds / business profile cards attached to the clip
"contextCards": [
{ "contextType": 2, "title": "Original Sound", "subtitle": "fcbayern", "url": null, "snapcodeUrl": null, "thumbnailUrl": "https://cf-st.sc-cdn.net/d/…", "hasBadge": false, "id": "108293712385" },
{ "contextType": 3, "title": "FC Bayern", "subtitle": "fcbayern", "url": "https://www.snapchat.com/@fcbayern", "snapcodeUrl": "https://app.snapchat.com/web/deeplink/snapcode?username=fcbayern&type=SVG&bitmoji=enable", "thumbnailUrl": "https://cf-st.sc-cdn.net/aps/bolt/…", "hasBadge": true, "id": "f035a3c6-9e43-4a23-a160-701dec6bb12b" }
]
}

lenses[] — the AR Lenses tab on the profile

{
"lensName": "FC Barcelona",
"lensCreatorDisplayName": "FC Barcelona",
"lensCreatorUsername": null,
"iconUrl": "https://bolt-gcdn.sc-cdn.net/3/RBXv7yxQeo4VeQLNNAJmM?…",
"previewImageUrl": "https://lens-preview-storage.storage.googleapis.com/previewmedia/preview_thumbnail/…webp",
"previewVideoUrl": "https://lens-storage.storage.googleapis.com/previewvideo/…",
"unlockUrl": "https://www.snapchat.com/unlock/?type=SNAPCODE&uuid=8124c89bb79642518622ddebb088ccc0&metadata=01",
"isOfficialSnapLens": false,
"lastUpdatedEpoch": 1777434016
}

liveStory — the creator's currently-live 24-hour ephemeral story (or null)

Same shape as a stories[] entry, but the content disappears 24 hours after posting — scrape it now or lose it. storyType is typically 5 for the live story (vs 3 for curated highlights). FC Barcelona had 32 active snaps within the last 14 hours at the time of writing.

spotlightComments[][] — public viewer comments under each Spotlight clip

A 2-D array indexed by Spotlight position. spotlightComments[i] is the comment thread under spotlights[i].

[
// comments under spotlights[0]:
[
{
"snapId": "W7_EDlXWTBiXAEEniNoMPwAA…",
"text": "Hala madrid",
"authorDisplayName": "Oswald🇮🇪⚽️✝️",
"authorBitmojiAvatarId": "105791014945_7-s5",
"timestampMs": "1778424523857",
"threadedReplyCount": 4,
"rankingScore": 1812,
"reactions": [{ "reactTypeId": "1", "reactCount": "10" }],
"totalReactions": 10
}
// … typically 15–25 top-level comments per spotlight on active profiles
]
]

Real volume from a single FC Barcelona scrape: 331 comments across 16 spotlights. Bayern Munich: 467 comments across 25 spotlights.

Spotlight clip row (rowType: "spotlight")

Emitted when the input URL is a Spotlight clip (/spotlight/{id} or /@{u}/spotlight/{id}).

{
"rowType": "spotlight",
"spotlightUrl": "https://www.snapchat.com/spotlight/W7_EDl…",
"storyId": "W7_EDlXWTBiXAEEniNoMPwAA…",
"shareId": "W7_EDlXWTBiXAEEniNoMPwAA…",
"creator": {
"username": "fcbarcelona",
"displayName": "FC Barcelona",
"followerCount": "0",
"websiteUrl": null
},
// Same clip-level fields as a profile-row's spotlights[] entry:
"thumbnailUrl": "https://bolt-gcdn.sc-cdn.net/bp/…",
"description": "#fcbarcelona",
"hashtags": ["#fcbarcelona"],
"uploadDateMs": "1778418164840",
"durationMs": "9930",
"width": 540,
"height": 960,
"mediaUrl": "https://bolt-gcdn.sc-cdn.net/bp/…",
"mediaPreviewUrl": "https://bolt-gcdn.sc-cdn.net/bp/…",
"contentUrl": "https://bolt-gcdn.sc-cdn.net/bp/…",
"deeplink": "https://click.snapchat.com/aVHG?…",
"viewCount": "16408",
"shareCount": "97",
"commentCount": "93",
"boostCount": "2751",
"recommendCount": "305",
"embeddedTextCaption": null,
// AI enrichments (same shape as in profile-row spotlights):
"aiTitle": "FC Barcelona Players Celebrate Birthday with Teammates",
"aiKeywords": [ /* up to ~25 LLM tags */ ],
"aiDescription": "Athletes discussing fan engagement in soccer.",
"contentKeywords": ["athlete training", "soccer", "fan engagement"],
"detectedLanguages": [{ "languageCode": "en", "score": 0.9921 }],
"contextCards": [ /* linked sound + business profile */ ],
// SPOTLIGHT-URL EXCLUSIVES (not available from the profile page):
"transcriptUrl": "https://bolt-gcdn.sc-cdn.net/3/pLovkAlk…vtt?…",
"transcript": "Hey coolers, it's Olivia Rodrigo and I am wishing the FC Barcelona team a successful El Clasico. Forza Barça!",
"comments": [ /* 22 comments under THIS clip, flat list */ ],
"relatedSpotlights": [
/* up to 25 "more like this" clips, each a full SnapchatSpotlight
object with its own AI title / keywords / detected language
/ engagement stats / context cards. Snapchat ranks them by
relevance to the input clip. */
],
"scrapedAt": "2026-05-11T08:21:09.412Z"
}

Why this is exclusive: the WebVTT audio transcript and the 25-clip related-feed are only present on the Spotlight clip page. Scraping the creator's profile gives you the same clip's metadata + engagement + AI enrichments — but no transcript and no related-feed.

Lens row (rowType: "lens")

Emitted from /lens/{uuid} or /unlock?uuid={uuid} URLs (bare 32-char hex UUIDs are also auto-canonicalised).

{
"rowType": "lens",
"lensUrl": "https://www.snapchat.com/lens/8124c89bb79642518622ddebb088ccc0",
"scannableUuid": "8124c89bb79642518622ddebb088ccc0",
"lensId": "53181080886",
"lensName": "FC Barcelona",
"lensCreatorDisplayName": "FC Barcelona",
"lensCreatorUsername": "fcbarcelona",
"creatorProfileUrl": "https://www.snapchat.com/@fcbarcelona",
"iconUrl": "https://bolt-gcdn.sc-cdn.net/3/…",
"previewImageUrl": "https://lens-preview-storage.storage.googleapis.com/…webp",
"previewVideoUrl": "https://lens-storage.storage.googleapis.com/previewvideo/…",
"unlockUrl": "https://snapchat.com/unlock/?type=SNAPCODE&uuid=…&metadata=01",
"creatorSearchTags": ["event", "football", "game", "sport", "Barcelona", "FCB"],
"isOfficialSnapLens": false,
"lastUpdatedEpoch": 1777434016,
"moreLenses": [ /* up to 12 Snapchat-curated related Lenses */ ],
"spotlightsUsingThisLens":[ /* Spotlight clips that USE this Lens — often empty for brand lenses, populated for trending creator lenses */ ]
}

Search row (rowType: "search")

Emitted from /explore/{query} URLs and bare #hashtags. Aggregates all 6 of Snapchat's search sections into a single normalised payload.

{
"rowType": "search",
"searchUrl": "https://www.snapchat.com/explore/UCL",
"query": "UCL",
"spotlights": [
/* up to 24 Spotlight clips matching the query — same shape as the
per-profile spotlights[] entries (engagement stats, hashtags,
content keywords, media URLs). AI enrichments are not on the search
payload — use the Spotlight URL row type if you need aiTitle etc. */
],
"creators": [
{
"username": "ucl",
"title": "ᴬ ᴼ ᴬ 🌪️",
"badge": null,
"subscriberCount": 805,
"bio": "🐎 …",
"profilePictureUrl": "https://cf-st.sc-cdn.net/aps/bolt/…",
"snapcodeImageUrl": null,
"businessProfileId": "cfa17514-24d6-4e2d-9def-…"
}
],
"lenses": [
{
"lensName": "UCL Final 2020",
"lensCreatorDisplayName": "Nabhan Mohtesham",
"lensCreatorUsername": null,
"iconUrl": "https://lens-storage.storage.googleapis.com/png/…",
"previewImageUrl": null,
"previewVideoUrl": null,
"unlockUrl": "https://www.snapchat.com/unlock/?type=SNAPCODE&uuid=…",
"isOfficialSnapLens": false,
"lastUpdatedEpoch": null
}
],
"episodes": [ { "title": "Beckham pulled this off for his first UCL match with PSG 😳", "publisherName": null } ],
"places": [ { "title": "Champions League Stadium", "subtitle": "London, UK" } ],
"topics": ["ucl"],
"counts": { "spotlights": 24, "creators": 4, "lenses": 24, "episodes": 12, "places": 10, "topics": 1 }
}

What makes this richer than the competition

We surveyed all 17 Snapchat actors on the Apify marketplace (May 2026):

CapabilityCompetitor actorsThis actor
Per-profile top-level fields~1231
Per-Spotlight fields~625
Per-Spotlight-clip-row fieldsn/a (separate SKU)33 (incl. transcript + 25-clip related feed)
Per-Story-snap fields4–513 (incl. geo, on-screen text, audio-transcript URL)
AI-generated aiTitle per Spotlight✅ (15 / 16 clips for active creators)
AI-generated aiKeywords (up to 25)
AI scene aiDescription
Snapchat content-classification keywords
Per-clip detectedLanguages with confidence
Public viewer comments under each Spotlight✅ (300–500 per profile)
Live 24h ephemeral story snapsSeparate sister product✅ (folded into the same row)
AR lenses[] panel1 of 17 actors
Snapchat's "Related Accounts" affinity panel2 of 17 actors
Live-story flag (hasStory)
Business profile UUID (join key)
Universal deeplink + OG share image
Spotlight contextCards (linked sound + biz card)
Single Spotlight clip URL → row (separate product)easyapi/snapchat-spotlight-detail-scraper, crawlerbros/snapchat-spotlight-video-downloader✅ (folded into the same actor)
Full WebVTT audio transcript of a Spotlight clip✅ (transcript + transcriptUrl)
25-clip "more like this" related-feed per Spotlight URL✅ (with full AI enrichment per related clip)
Email / phone / social-handle extraction from profile bioseasyapi/snapchat-email-scraper (740 users — separate product)✅ (folded into every profile row's contacts panel)
Lens URL → row (separate product)✅ (incl. 12 related lenses + clips using the lens)
Search / hashtag URL → row (separate product)crawlerbros/snapchat-hashtag-scraper (7 users), easyapi/snapchat-popular-accounts-scraper (92 users — separate products)✅ (folded into one search row aggregating 6 sections)

Pricing

Two-tier pay-per-event:

EventWhenSuggested rate
outputrecordOnce per dataset row pushed (profile, spotlight-clip, lens, or search row)configured on the actor page
additional-dataOnce per nested item inside a row — see counting rules below$0.75 per 1,000 items ($0.00075 each)

What counts as additional-data

Row typeItems billed
Profile rowevery story + every spotlight clip + every AR Lens + every viewer comment + every related-account entry + every live-24h-story snap
Spotlight-clip rowevery viewer comment under THIS clip + every entry in the 25-clip related-feed
Lens rowevery related lens (moreLenses) + every clip that uses this lens (spotlightsUsingThisLens)
Search / hashtag rowevery matching Spotlight + every matching creator + every matching Lens + every Discover episode + every place + every topic

Real-world cost preview

Measured on the default 4-URL prefill (1 profile + 1 spotlight + 1 lens + 1 search):

RowBase outputrecordAdditional itemsadditional-data cost
profile (@fcbayern)511 (16 stories + 25 spotlights + 467 comments + 3 related)$0.383
spotlight (FC Bayern UCL clip)47 (22 comments + 25 related)$0.035
lens (FC Barcelona AR)12 (12 moreLenses)$0.009
search (UCL)75 (24 spotlights + 4 creators + 24 lenses + 12 episodes + 10 places + 1 topic)$0.056
Run total outputrecord645$0.484 + base

Why two tiers

The base outputrecord rate keeps simple per-URL pricing predictable. The additional-data event aligns cost with delivered value — a profile row with 467 viewer comments and 25 AI-tagged Spotlight clips costs more than an empty-bio profile, exactly as it should.

Buyers who want to cap costs can turn includeSpotlightComments off (drops ~300–500 items per profile) or set maxCommentsPerSpotlight: N to keep only the top-N comments per Spotlight. Both knobs reduce the additional-data bill proportionally.

Free-tier users are capped at 100 rows per run (the outputrecord ceiling). The additional-data event has no separate cap.


Pagination & limits

For each profile row, the actor returns the first batch of items per tab — the same set Snapchat itself shows on the anonymous profile landing page:

TabTypical first-batch size
Stories (curated highlights)up to 16
Spotlight clipsup to ~25
Lenses (AR)typically 0–12 — full list
Live 24h storyall snaps in the active window
Related accounts3 (Snapchat's hard cap)
Spotlight comments per clipall top-level comments (~15–30)

Why first-batch only: Snapchat's profile page is server-rendered. The pagination cursors that would load older content (curatedHighlightsCursor, spotlightHighlightsCursor, lensCursor) point to an internal backend (ingress-us-east1-aws.api.snapchat.com/web-stories-api) that requires a server-side SC-LCA-1 token Snapchat does not expose publicly. Loading deeper history would require an authenticated Snapchat account — out of scope for a public-data scraper.

This is the same ceiling every other Snapchat scraper on the Apify marketplace hits — none paginate. For most accounts the first batch covers all recent activity; for heavily-active creators with 50+ archived stories, older content is not retrievable without auth.

Notes & limitations

  • Public profiles only. Private accounts, age-gated content, and deactivated users are skipped and logged.
  • Stories vs spotlights. stories[] are chronological collections of snaps a creator pinned to their profile. spotlights[] are single-clip TikTok-style snaps with engagement metrics (views, shares, comments).
  • Subscribers are returned as an integer.
  • Category is the human label that Snapchat displays on the profile (e.g. "Sports Team").
  • Anti-bot. A multi-stack fallback layer is wired up so the actor keeps working if Snapchat tightens up over time — no input changes needed on your end.

Support

Issues, feature requests, or custom output shapes? Open a ticket on the actor's Apify page or message the maintainer.