Snapchat User Spotlight Scraper avatar

Snapchat User Spotlight Scraper

Pricing

from $2.65 / 1,000 spotlight videos

Go to Apify Store
Snapchat User Spotlight Scraper

Snapchat User Spotlight Scraper

Collect public Snapchat Spotlight videos from usernames, @handles, or profile URLs. Get captions, hashtags, publish times, engagement counts, creator and sound details, media links, and optional public comments.

Pricing

from $2.65 / 1,000 spotlight videos

Rating

0.0

(0)

Developer

Maxime Dupré

Maxime Dupré

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

👻 Snapchat Spotlight videos from public creator profiles

Snapchat User Spotlight Scraper is for social media analysts, creator teams, and developers. It collects public Snapchat Spotlight videos from usernames, @handles, or profile URLs so you can review creator content in structured rows. Each saved row includes the caption, hashtags, publish time, creator and sound details, engagement counts, media links, and optional public comments.

📦 Normalized Snapchat Spotlight rows

Each saved row represents one public Spotlight video found for a submitted profile. The row keeps source links instead of downloading the video file. If you enable comments, the row also includes public comments linked to that video.

What you get

Use the video identity, caption, hashtags, publication time, creator details, sound details, engagement counts, dimensions, duration, source links, and comment data for analysis or downstream work. Values that Snapchat does not expose stay null when the schema allows it.

▶️ Collect public Spotlight videos

Steps

  1. Enter one or more public Snapchat usernames, @handles, or profile URLs.
  2. Set a per-profile video limit when you want to bound the work. Leave it empty to collect all available videos until the source is exhausted.
  3. Turn on public comments when you need them, then set a per-video comment limit if needed. Leave that limit empty to include all available comments until the source is exhausted.
  4. Start the run and open the video dataset or the run summary from the output panel.

Rows become available as profiles are processed. Private, login-gated, and other non-public Snapchat surfaces are not collected.

⚙️ Input

Enter at least one public profile. Use the optional limits and comment settings to control how much data each profile returns.

Input fields

FieldTypeWhat it does
profilesarray of stringsRequired. Add one or more public Snapchat usernames, @handles, or profile URLs. Private and login-gated profiles are reported and skipped.
maxVideosPerProfileintegerOptional per-profile work limit. When set, it must be at least 1. Leave it empty to collect all available videos until the source is exhausted.
commentsobjectChoose whether to add public comments to each Spotlight video and set the optional per-video comment limit.
comments.includeCommentsbooleanAdd available public comments when true. Leave it false to return video records only.
comments.maxCommentsPerVideointegerOptional per-video work limit for comments. When set, it must be at least 1. Leave it empty to include all available comments until the source is exhausted. This applies only when comments are included.

Example input

This small successful run example requests one Spotlight video and one public comment from one profile.

{
"profiles": [
"https://www.snapchat.com/@nba"
],
"maxVideosPerProfile": 1,
"comments": {
"includeComments": true,
"maxCommentsPerVideo": 1
}
}

🧾 Output

The output panel provides videos, which opens the video records in the default dataset, and OUTPUT, which opens the run summary with profile status text and the dataset link.

Video row fields

FieldTypeWhat it does
profileInputstringThe username, handle, or profile URL that produced the video.
videoIdstring or nullStable identifier from the Spotlight video URL, when available.
captionstring or nullVideo caption or title, when available.
hashtagsarray of stringsHashtags found in the video text.
publishedAtstring or nullPublication time, when available, in ISO 8601 format.
durationSecondsnumber or nullVideo duration in seconds, when available.
dimensionsobjectVideo size in pixels.
dimensions.widthinteger or nullVideo width in pixels.
dimensions.heightinteger or nullVideo height in pixels.
creatorobjectCreator identity linked to the video, when available.
creator.usernamestring or nullCreator username, when available.
creator.displayNamestring or nullCreator display name, when available.
creator.profileUrlstring or nullLink to the creator profile, when available.
creator.avatarUrlstring or nullLink to the creator avatar, when available.
engagementobjectAvailable interaction counts for the video.
engagement.viewsinteger or nullNumber of views, when available.
engagement.sharesinteger or nullNumber of shares, when available.
engagement.commentsinteger or nullNumber of comments, when available.
engagement.boostsinteger or nullNumber of boosts, when available.
engagement.recommendationsinteger or nullNumber of recommendations, when available.
mediaobjectSource links for the video and thumbnail.
media.videoUrlstring or nullDirect source link to the video, when available.
media.thumbnailUrlstring or nullDirect source link to the thumbnail, when available.
media.spotlightUrlstring or nullLink to the Spotlight video page, when available.
soundobjectSound details linked to the video, when available.
sound.titlestring or nullSound title, when available.
sound.artiststring or nullSound artist, when available.
sound.urlstring or nullLink to the sound, when available.
publicCommentsarray of objectsPublic comments returned when comment collection is enabled. This is an empty array when no comments are returned.
publicComments[].commentIdstring or nullStable comment identifier, when available.
publicComments[].textstringText of the public comment.
publicComments[].commenterobjectIdentity linked to the public comment.
publicComments[].commenter.displayNamestringCommenter display name.
publicComments[].commenter.usernamestring or nullCommenter username, when available.
publicComments[].commenter.profileUrlstring or nullLink to the commenter profile, when available.
publicComments[].commenter.avatarUrlstring or nullLink to the commenter avatar, when available.
publicComments[].reactionCountinteger or nullNumber of reactions, when available.
publicComments[].postedAtstring or nullComment time, when available, in ISO 8601 format.
publicComments[].rankingScorenumber or nullSource ranking score, when available.
publicComments[].replyCountinteger or nullNumber of replies, when available.

Example row from a current beta run

{
"profileInput": "https://www.snapchat.com/@nba",
"videoId": "W7_EDlXWTBiXAEEniNoMPwAAYeG5ibmV4b2JwAaA0EKODAaA0EHsYAAAAAQ",
"caption": "THEY PRANKED JJJ 🤣",
"hashtags": [
"#jazz",
"#nba"
],
"publishedAt": "2026-08-24T13:58:10.456Z",
"durationSeconds": 19.1,
"dimensions": {
"width": 540,
"height": 960
},
"creator": {
"username": "nba",
"displayName": "NBA",
"profileUrl": "https://www.snapchat.com/@nba",
"avatarUrl": null
},
"engagement": {
"views": 13430,
"shares": 5,
"comments": 11,
"boosts": 1709,
"recommendations": 108
},
"media": {
"videoUrl": "https://cf-st.sc-cdn.net/d/fS5MkUGkP1ic75raXoI2i.27.IRZXSOY?mo=GmEaCTIBBEgCUC5gAVCiAVoQU3BvdGxpZ2h0U2hhcmluZ6IBOQgbEigKJgjLoIsBIAEwnAQ4wAdAAUoPCgqAATQ1NSwkJzQsEPQDUJyVAWgCIgsSACoHSVJaWFNPWZADnJUB&uc=46",
"thumbnailUrl": "https://cf-st.sc-cdn.net/d/fS5MkUGkP1ic75raXoI2i.256.IRZXSOY?mo=GkYaCTIBBEgCUC5gAVCgAVoQRGZMYXJnZVRodW1ibmFpbKIBEAiAAiILEgAqB0lSWlhTT1miARAImgoiCxIAKgdJUlpYU09Z&uc=46",
"spotlightUrl": "https://www.snapchat.com/@snapchat/spotlight/W7_EDlXWTBiXAEEniNoMPwAAYeG5ibmV4b2JwAaA0EKODAaA0EHsYAAAAAQ"
},
"sound": {
"title": "Original Sound",
"artist": "nba",
"url": null
},
"publicComments": [
{
"commentId": "7841eb98-92ea-416e-a348-3ec00dd76dda",
"text": "Faaa",
"commenter": {
"displayName": "Ids",
"username": null,
"profileUrl": null,
"avatarUrl": null
},
"reactionCount": 2,
"postedAt": "2026-08-24T15:10:02.904Z",
"rankingScore": null,
"replyCount": 0
}
]
}

💳 Pricing

This Actor uses pay-per-event pricing. The video event is the primary event. A comment event is separate and applies when a public comment is saved with a video.

Current event prices

EventPriceWhat it covers
Spotlight video$0.00265One public Spotlight video saved to the dataset.
Public commentFree $0.0045; Bronze $0.00385; Silver $0.0033; Gold, Diamond, or Platinum $0.0027One public comment saved with its Spotlight video.

🔌 Integrations

Use the Apify API to start a run and read the dataset or run summary from the returned links.

❓ FAQ

Which profile inputs are accepted?

You can enter a bare Snapchat username, an @handle, or a full public profile URL. Add more than one value to process multiple profiles in one run.

What happens to a private, missing, or unreadable profile?

The run summary reports the profile outcome. The Actor does not collect private, login-gated, or other non-public Snapchat surfaces.

What happens when I leave the video limit empty?

The Actor collects all available Spotlight videos for each profile until the source is exhausted. Set a positive integer when you want a smaller per-profile run.

Can I limit public comments?

Yes. Turn on public comments, then set a positive per-video limit. Leave that limit empty to include all available comments until the source is exhausted.

Does the Actor download video files?

No. It returns source links for the video, thumbnail, and Spotlight page. It does not save video files.

Do I need a Snapchat login or API key?

No. The Actor reads public Snapchat pages without user-supplied authentication or login state.

What if Snapchat does not expose a metric or profile detail?

The field stays null when the schema allows it. The Actor does not invent unavailable counts or details.

Where do I find the video rows and profile status?

Open videos for the default dataset and OUTPUT for the run summary and dataset link.

📝 Changelog

0.0: Initial release

🆘 Support

For issues, questions, or feature requests, file a ticket and I'll fix or implement it in less than 24h 🫡

Made with ❤️ by Maxime Dupré