Snapchat Scraper – Profiles, Stories, Spotlight & Lenses avatar

Snapchat Scraper – Profiles, Stories, Spotlight & Lenses

Pricing

from $2.50 / 1,000 profile results

Go to Apify Store
Snapchat Scraper – Profiles, Stories, Spotlight & Lenses

Snapchat Scraper – Profiles, Stories, Spotlight & Lenses

Scrape public Snapchat profiles, Stories, Highlights, Spotlight videos, comments, Discover, Explore, Lenses, Snapcodes, media, and transcripts.

Pricing

from $2.50 / 1,000 profile results

Rating

0.0

(0)

Developer

ScrapingMonkey

ScrapingMonkey

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

17 days ago

Last modified

Share

Snapchat Scraper - Public Profiles, Stories, Spotlight and Lenses

Collect public Snapchat profiles, current Stories, Highlights, Spotlight videos and initial comments, Discover entities, Explore topics, paginated Lens catalogs, Snapcodes, and public media metadata without a Snapchat account or browser.

  • Extract profile identity, biography, category, subscriber count, public images, and related accounts
  • Turn one username into a profile bundle containing current Story, curated Highlights, Spotlight, Lenses, and initial public comments
  • Process individual Spotlight URLs or the public Spotlight feed
  • Collect public Discover Apollo entities and Explore topic sections/cards
  • Follow real Lens nextCursorId pagination across supported categories
  • Store Snapcode SVG/PNG and optionally download public media or transcripts to key-value storage
  • Monitor public profiles and emit only new or changed records
  • Use Apify Residential Proxy automatically; no Snapchat account, cookies, browser, or proxy setup is required
  • Export the dataset to JSON, CSV, Excel, XML, or access it through the Apify API

What can you do with this Actor?

ModeInputOutputBest for
profileBundlePublic usernamesProfile, Story, Highlights, Spotlight, comments, and LensesComplete public creator snapshots
profilesPublic usernamesProfile metadata onlyLightweight identity enrichment
spotlightDetailsSpotlight URLsVideo, creator, engagement, media, transcript, and initial commentsVideo research and enrichment
spotlightFeedNo target requiredCurrent public Spotlight recordsPublic video discovery
discoverNo target requiredPublic Discover story and Snap cache entitiesPublisher/content discovery
exploreTopic strings or Explore URLsSections and public cardsTopic-based discovery
lensesLens categoriesPaginated Lens and creator rowsAR catalog and creator research
snapcodesUsernamesStored SVG or PNG Snapcode recordsPublic deeplink asset generation
monitorUsernames and stable monitor keyOnly new or changed profile-bundle recordsScheduled creator monitoring
autoMixed public URLs and usernamesAutomatically routed public recordsBatch processing heterogeneous inputs

One run uses one selected mode. Every target in that mode can emit several record types, but all rows appear in one complete Results table and share the same top-level schema.

Quick start

  1. Open the Actor and click Try for free.
  2. Keep profileBundle mode and enter a public username.
  3. Set the maximum number of rows and optional comment/media settings.
  4. Click Start.
  5. Preview the single Results table or download it in your preferred format.

The default input uses the public nba profile and requires no additional configuration.

Input examples

Collect complete public profile bundles

{
"mode": "profileBundle",
"usernames": ["nba", "nfl"],
"includeRelatedAccounts": true,
"includeInitialComments": true,
"maxItems": 1000
}

maxItems applies to each input target after the profile and its public content have been normalized. One dataset row represents one public profile, Story, Snap, Spotlight item, comment, Lens, creator, Discover entity, Explore entity, or Snapcode.

Extract profile metadata only

{
"mode": "profiles",
"usernames": ["nba", "nfl"],
"includeRelatedAccounts": true
}

Extract Spotlight details

{
"mode": "spotlightDetails",
"startUrls": [
{"url": "https://www.snapchat.com/spotlight/example-public-snap-id"}
],
"includeInitialComments": true,
"maxItems": 500
}

Collect the public Spotlight feed

{
"mode": "spotlightFeed",
"maxItems": 100
}

Collect public Discover entities

{
"mode": "discover",
"maxItems": 1000
}

Explore public topics

{
"mode": "explore",
"queries": ["skincare", "basketball"],
"maxItems": 500
}

Paginate Lens categories

{
"mode": "lenses",
"lensCategories": ["for_you", "trending", "face", "creators"],
"maxPages": 10,
"maxItems": 1000
}

Supported category values are for_you, trending, face, world, music, creators, and web_live.

Store Snapcodes

{
"mode": "snapcodes",
"usernames": ["nba"],
"snapcodeFormat": "SVG"
}

Snapcode generation is an asset workflow, not proof that a username exists.

Download selected public media and transcripts

{
"mode": "profileBundle",
"usernames": ["nba"],
"downloadMedia": true,
"downloadTranscripts": true,
"maxDownloads": 10,
"maxAssetBytes": 50000000
}

Downloaded bytes are stored in the default key-value store. Dataset fields contain the corresponding storage keys.

Monitor public profiles

{
"mode": "monitor",
"usernames": ["nba"],
"monitorMode": "newAndChanged",
"monitorKey": "nba-public-snapchat",
"maxItems": 1000
}

Auto-detect mixed public targets

{
"mode": "auto",
"usernames": ["nba"],
"startUrls": [
{"url": "https://www.snapchat.com/@nfl"},
{"url": "https://www.snapchat.com/explore/skincare"},
{"url": "https://www.snapchat.com/lens/category/face"}
],
"maxItems": 500
}

Complete output example

Every record type has the same fixed set of 85 top-level fields. Fields that do not apply to a record are returned as null or empty arrays. The data object preserves the complete public source entity for that row; because Snapchat controls this object, its internal keys vary by recordType and may evolve. Optional raw is a sanitized copy of data and is null by default.

Complete public Snapchat row - 85 top-level fields

{
"recordType": "publicProfile",
"sourceMode": "profileBundle",
"inputTarget": "nba",
"sourceUrl": "https://www.snapchat.com/@nba",
"sourceEndpoints": [
"https://www.snapchat.com/@nba"
],
"id": "public-business-profile-id",
"username": "nba",
"displayName": "NBA",
"title": "NBA",
"description": "The official public NBA profile.",
"bio": "The official public NBA profile.",
"badge": "OFFICIAL",
"category": "SPORTS",
"subcategory": "BASKETBALL",
"subscriberCount": 25000000,
"websiteUrl": "https://www.nba.com/",
"address": null,
"profileImageUrl": "https://cf-st.sc-cdn.net/public-profile.jpg",
"squareHeroImageUrl": "https://cf-st.sc-cdn.net/public-hero.jpg",
"snapcodeImageUrl": "https://cf-st.sc-cdn.net/public-snapcode.svg",
"businessProfileId": "public-business-profile-id",
"hostUserId": "public-host-user-id",
"createdAtMs": 1609459200000,
"updatedAtMs": 1786586400000,
"hasStory": true,
"hasCuratedHighlights": true,
"hasSpotlightHighlights": true,
"relatedAccounts": [
{
"username": "wnba",
"displayName": "WNBA",
"profilePictureUrl": "https://cf-st.sc-cdn.net/related-profile.jpg"
}
],
"storyType": null,
"storyId": null,
"highlightId": null,
"snapId": null,
"snapIndex": null,
"mediaType": null,
"mediaUrl": null,
"previewUrl": null,
"overlayUrl": null,
"attachmentUrl": null,
"transcriptUrl": null,
"timestampInSec": null,
"publishedAt": null,
"durationMs": null,
"width": null,
"height": null,
"hashtags": null,
"mentions": null,
"creator": null,
"engagement": null,
"lens": null,
"contextCards": null,
"replyId": null,
"replyText": null,
"replyTimestampMs": null,
"replyPosterId": null,
"replyPosterDisplayName": null,
"reactionCounts": null,
"threadedReplyCount": null,
"cacheKey": null,
"discoverType": null,
"sectionTitle": null,
"sectionType": null,
"rank": null,
"lensId": null,
"scannableUuid": null,
"lensName": null,
"creatorUsername": null,
"previewImageUrl": null,
"previewVideoUrl": null,
"iconUrl": null,
"unlockUrl": null,
"searchTags": null,
"official": null,
"lastUpdatedEpoch": null,
"hasMore": null,
"nextCursorId": null,
"downloadedSnapcodeKey": null,
"downloadedMediaKey": null,
"downloadedTranscriptKey": null,
"warning": null,
"monitorStatus": null,
"changedFields": null,
"previousCapturedAt": null,
"capturedAt": "2026-08-13T10:30:00.000000+00:00",
"data": {
"businessProfileId": "public-business-profile-id",
"hostUserId": "public-host-user-id",
"username": "nba",
"title": "NBA",
"bio": "The official public NBA profile.",
"badge": "OFFICIAL",
"categoryStringId": "SPORTS",
"subcategoryStringId": "BASKETBALL",
"subscriberCount": 25000000,
"websiteUrl": "https://www.nba.com/",
"address": null,
"profilePictureUrl": "https://cf-st.sc-cdn.net/public-profile.jpg",
"squareHeroImageUrl": "https://cf-st.sc-cdn.net/public-hero.jpg",
"snapcodeImageUrl": "https://cf-st.sc-cdn.net/public-snapcode.svg",
"creationTimestampMs": 1609459200000,
"lastUpdateTimestampMs": 1786586400000,
"relatedAccountsInfo": [
{
"username": "wnba",
"displayName": "WNBA",
"profilePictureUrl": "https://cf-st.sc-cdn.net/related-profile.jpg"
}
]
},
"raw": null
}

Other recordType values are story, snap, spotlight, comment, discoverStory, discoverSnap, exploreSection, exploreCard, lens, lensCreator, and snapcode. They use the same 85 keys: Story/Snap rows populate Story and media fields; Spotlight rows populate media, creator, engagement, Lens, hashtag, mention, transcript, and context fields; comment rows populate reply/reaction fields; Discover and Explore rows populate cache, section, rank, media, and creator fields; Lens rows populate Lens identity, previews, creator, tags, and cursor fields; Snapcode rows populate downloadedSnapcodeKey.

Missing or unavailable targets do not emit error rows and are not charged. Their count or failure category appears in RUN_SUMMARY.

What data can you extract?

CategoryFields
Record and provenancerecordType, sourceMode, inputTarget, sourceUrl, sourceEndpoints, id, capturedAt
Public profileusername, displayName, title, description, bio, badge, category, subcategory, subscriberCount, websiteUrl, address
Profile media and IDsprofileImageUrl, squareHeroImageUrl, snapcodeImageUrl, businessProfileId, hostUserId, createdAtMs, updatedAtMs
Profile availabilityhasStory, hasCuratedHighlights, hasSpotlightHighlights, relatedAccounts
Story and SnapstoryType, storyId, highlightId, snapId, snapIndex
Media and timingmediaType, mediaUrl, previewUrl, overlayUrl, attachmentUrl, transcriptUrl, timestampInSec, publishedAt, durationMs, width, height
Spotlight contexthashtags, mentions, creator, engagement, lens, contextCards
Initial public commentsreplyId, replyText, replyTimestampMs, replyPosterId, replyPosterDisplayName, reactionCounts, threadedReplyCount
Discover and ExplorecacheKey, discoverType, sectionTitle, sectionType, rank
Lens cataloglensId, scannableUuid, lensName, creatorUsername, previewImageUrl, previewVideoUrl, iconUrl, unlockUrl, searchTags, official, lastUpdatedEpoch, hasMore, nextCursorId
Stored assetsdownloadedSnapcodeKey, downloadedMediaKey, downloadedTranscriptKey, warning
MonitoringmonitorStatus, changedFields, previousCapturedAt
Complete entity datadata, raw

Input parameters

ParameterTypeRequiredDefaultDescription
modestringYesprofileBundleprofileBundle, profiles, spotlightDetails, spotlightFeed, discover, explore, lenses, snapcodes, monitor, or auto
usernamesstring[]In profile/snapcode/monitor modes['nba']Public usernames, with or without @
startUrlsrequest[]In detail/auto mode-Public profile, Spotlight, Explore, or Lens URLs
queriesstring[]In explore mode['skincare']Explore topic strings
lensCategoriesstring[]In lenses mode['for_you']Supported public Lens category values
snapcodeFormatstringNoSVGSVG or PNG
maxItemsintegerNo1000Maximum normalized rows per input, from 1 to 100,000
maxPagesintegerNo20Maximum Lens cursor pages per category, from 1 to 1,000
includeRelatedAccountsbooleanNotrueInclude the initial related-account list exposed on profiles
includeInitialCommentsbooleanNotrueDecode initial public Spotlight comment data when exposed
downloadMediabooleanNofalseDownload selected public media to key-value storage
downloadTranscriptsbooleanNofalseDownload selected public transcript files to key-value storage
maxDownloadsintegerNo20Maximum optional downloads per input, from 0 to 1,000
maxAssetBytesintegerNo50000000Maximum bytes per downloaded asset, from 1 MB to 500 MB
monitorModestringNooffoff, onlyNew, or newAndChanged
monitorKeystringNodefaultNamespace for persistent comparison state
maxConcurrencyintegerNo5Concurrent inputs, from 1 to 15
includeRawbooleanNofalseInclude a sanitized copy of the complete public entity data

Use cases

Creator and publisher research

Turn public usernames into structured profile, Story, Spotlight, Lens, and related-account datasets for research or cataloging.

Public Spotlight analysis

Collect video metadata, creator context, engagement fields, hashtags, mentions, Lenses, transcripts, and initial public comments exposed on Spotlight pages.

AR Lens catalog collection

Paginate supported Lens categories and retain stable IDs, creators, previews, tags, unlock URLs, update times, and cursor provenance.

Discover and topic exploration

Use Discover or Explore modes to build public publisher/content datasets and route them into analytics or enrichment systems.

Scheduled public profile monitoring

Run monitor mode on an Apify schedule and send new or changed records to a webhook, Slack workflow, database, or spreadsheet.

Performance and cost

The Actor uses pay-per-event billing when configured on Apify. Event families are profile-result, story-result, spotlight-result, comment-result, discovery-result, lens-result, and snapcode-result. Consult the Actor's Pricing tab for current rates.

Profile metadata and public Next.js JSON are HTTP-only. downloadMedia and downloadTranscripts are off by default because video/audio transfer and key-value storage can dominate platform usage. Lens cost grows with categories and cursor pages. Exact runtime depends on source latency, target breadth, page limits, optional downloads, retries, and public availability.

API usage

Replace YOUR_USERNAME with the published Actor owner name.

curl -X POST \
"https://api.apify.com/v2/acts/YOUR_USERNAME~snapchat-public-data-scraper/runs?token=APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"mode": "profileBundle",
"usernames": ["nba"],
"includeInitialComments": true,
"maxItems": 1000
}'

Results can flow through Apify API clients, schedules, webhooks, Google Sheets, Make, Zapier, n8n, Airbyte, object storage, and data warehouses.

Best for / not for

Best for: public profile research, Story/Highlight snapshots, public Spotlight analysis, Discover/Explore collection, Lens catalogs, Snapcode assets, and scheduled public monitoring.

Not for: chats, friends/following graphs, private profiles, private Stories, authenticated account data, complete deep comment threads, or real-time streaming.

Limits and good to know

  • One mode is selected per run; a profile bundle can emit many record types for each username.
  • Profile Story, Highlight, Spotlight, related-account, and comment arrays are the public initial set unless the source exposes a proven public cursor.
  • maxPages controls Lens cursor pagination; it does not invent pagination for profile content arrays.
  • Snapcode artwork is not account validation. Snapchat can generate an asset for an unavailable username.
  • Media and transcript URLs can expire; enable downloads only when persistent bytes are required.
  • data and optional raw are source-controlled objects, while all 85 normalized top-level keys remain stable.
  • One failed target does not cancel successful targets. Failed and unavailable inputs do not create paid error rows.
  • The Actor uses Apify Residential Proxy automatically and does not expose proxy configuration in the input.

Frequently asked questions

What input should I provide?

Use usernames such as nba, copied public Spotlight URLs, Explore topic strings, or one of the supported Lens category values depending on the selected mode.

How many results can I extract?

You can configure up to 100,000 normalized rows per input and up to 1,000 Lens pages. Actual public content and cursor depth are controlled by Snapchat.

Why are many columns empty on a row?

All record types deliberately share one 85-field table. A profile row does not use comment or Lens fields; a Lens row does not use profile or Story fields. Non-applicable values are null or empty arrays.

Can I process multiple usernames or URLs?

Yes. Add multiple values to usernames, startUrls, queries, or lensCategories. Inputs are isolated and processed concurrently.

Can I schedule recurring runs?

Yes. Use Apify schedules with monitor mode and a stable monitorKey, then connect a webhook for downstream alerts.

Do I need a Snapchat account, API key, or proxy?

No Snapchat account, API key, cookie, or browser is required. Apify Residential Proxy is configured internally and used automatically.

Responsible use

This Actor extracts publicly available Snapchat information. Users are responsible for complying with applicable laws, privacy regulations, contractual obligations, copyright requirements, and Snapchat's terms. Snapchat is a trademark of Snap Inc.; this Actor is not affiliated with or endorsed by Snap Inc.

Support

If you encounter a problem, create an issue in the Actor's Issues tab. Include the run ID, selected mode, and a non-sensitive reproducible public username or URL. Do not include account cookies or credentials.