Snapchat Discover Publisher Show Extractor
Pricing
from $0.49 / 1,000 results
Snapchat Discover Publisher Show Extractor
Pull the publisher shows currently featured on Snapchat's Discover feed, with each show's creator profile, cover art, publish time and a preview snap's media link.
Pricing
from $0.49 / 1,000 results
Rating
0.0
(0)
Developer
Nimbryxo-studio
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
15 hours ago
Last modified
Categories
Features
Share
Read Snapchat's public Discover surface without a Snapchat account. This actor collects the current Discover feed for a chosen country and locale, looks up publisher and show pages, expands a show's full season history, and pulls the snaps and HLS video URL of individual episodes.
Everything is read from public, anonymous web endpoints. No cookies, login, API key, or proxy setup is needed.
What this actor does
- Three modes - the Discover feed, publisher/show profiles, or individual episode pages
- Country and locale aware - choose from 249 countries and 61 Snapchat locales
- Story filters - shows, public user stories, publishers or all
- Publisher depth - profile, subscriber count, seasons, latest episodes and optional full history
- Episode media - HLS playback URLs and every snap preview, with optional per-episode enrichment
- Reliable pagination - tap-ID cursor pagination with retries, host fallback, a circuit breaker and migration-safe state
- Empty fields are omitted - never
null, blank or placeholder values
Data source
Snapchat serves Discover as a server-rendered page plus a public web GraphQL endpoint used by its own web player. This actor reads both:
snapchat.com/discoverfor a small embedded snapshot (used as an automatic fallback)- the public web-stories GraphQL endpoint for the paginated Discover feed, publisher season lists, and episode media
snapchat.com/p/<publisherId>for publisher profiles and the latest episodes
All requests are ordinary HTTP requests from the actor container. Media links point at Snapchat's public CDN and were verified to return 200 from a clean client.
Modes
| Mode | What you get | Typical input |
|---|---|---|
discover (default) | One row per story currently in the Discover feed. Shows include the episode title, creator profile, preview snap, and HLS track. | country, locale, storyTypes, maxStories |
byPublisher | One row per publisher/show: profile, subscriber count, season summary, the latest episodes, and optionally every episode in every season plus episode media. | publisherUrlsOrIds, includeEpisodes, maxEpisodesPerPublisher, includeEpisodeMedia |
byEpisodeUrl | One row per episode URL with publisher context, every snap preview, and the playable HLS URL. | episodeUrls |
The Discover feed is paginated automatically: the actor keeps requesting the next batch and stops at maxStories, when Snapchat returns no new stories, or when the safety round limit is reached.
Input
| Field | Type | Default | Description |
|---|---|---|---|
mode | select | discover | Which surface to collect. |
maxStories | integer (1-500) | 50 | Maximum records pushed. Discover stories, publisher rows, and episode rows all count one each. |
country | select | US | ISO 3166-1 alpha-2 country context. All countries are listed. |
locale | select | en-US | Language and region hint for the Discover feed (61 common Snapchat locales). |
storyTypes | select | all | all, shows, publicUserStories, or publishers. Discover mode only. |
publisherUrlsOrIds | string list | [] | Publisher/show page URLs, story.snapchat.com links, or bare business profile UUIDs. byPublisher only. |
episodeUrls | string list | [] | Episode URLs shaped like snapchat.com/p/<publisherId>/<storyId>. byEpisodeUrl only. |
includeEpisodes | boolean | false | Expand every season into its full episode list. byPublisher only. |
maxEpisodesPerPublisher | integer (1-2000) | 100 | Episode cap across all seasons of one publisher. |
includeEpisodeMedia | boolean | false | Fetch each episode's snap list and HLS URL. byPublisher only. |
proxyConfiguration | proxy | empty | Optional advanced override. Leave empty; the actor works without a proxy. |
Example: Discover feed
{"mode": "discover","country": "US","locale": "en-US","storyTypes": "shows","maxStories": 40}
Example: publisher with full episode history
{"mode": "byPublisher","publisherUrlsOrIds": ["https://www.snapchat.com/p/efd8a13d-b69a-41d0-9c04-d19f87829798"],"includeEpisodes": true,"maxEpisodesPerPublisher": 80}
Example: one episode
{"mode": "byEpisodeUrl","episodeUrls": ["https://www.snapchat.com/p/dcb36ae8-b313-4eef-b24c-ccc20fe4d872/3137397659916288"]}
Output per record type
The dataset contains one object per record. Every record has a recordType, a sourceUrl, and a scrapedAt timestamp. Empty fields are omitted instead of written as null.
recordType: "discoverStory"
| Field | Description |
|---|---|
storyKey, storyId, storyType, title, tapId | Story identity and type (SHOW, PUBLIC_USER_STORY, or PUBLISHER). storyKey is the unique feed key; storyId is Snapchat's story ID and equals the creator's username for public user stories, so it can repeat when one creator has several stories in the feed. |
thumbnailUrl | Cover image URL. |
publishedAt | Publish time in ISO 8601 UTC. |
videoTrackUrl | HLS playlist for show episodes. |
creator | businessProfileId, title, bio, username, badge, profile images, primaryColor. |
previewSnap | snapId, mediaUrl, mediaPreviewUrl, mediaType, index. |
totalSnaps | Number of snaps in the story. |
recordType: "publisher"
| Field | Description |
|---|---|
publisherId, publisherTitle, publisherUrl | Publisher identity and public page. |
bio, subscriberCount, publisherType, username, badge | Profile metadata. |
profilePictureUrl, squareHeroImageUrl, snapcodeImageUrl, primaryColor | Brand images and color. |
websiteUrl | Present only when the profile lists one. |
seasonCount, seasons | Season IDs, season numbers, declared episode counts, and actual counts when expanded. |
declaredEpisodeCount | Sum of the season list's declared counts. |
latestEpisodes | The 13-14 latest episodes embedded in the page. |
episodes, episodesReturned | Full season history and its size when includeEpisodes is on. |
episode objects | storyId, title, storyType, thumbnailUrl, videoTrackUrl, publishedAt, seasonNumber, episodeNumber, storyUrl; with includeEpisodeMedia: snapCount and snaps[]. |
recordType: "episode"
| Field | Description |
|---|---|
storyId, title, storyType, storyUrl | Episode identity. |
publisherId, publisherTitle | Publisher context. |
seasonNumber, episodeNumber | Present when the publisher page exposes them. |
thumbnailUrl, videoTrackUrl | Cover image and playable HLS URL. |
snapCount, snaps | Each snap's snapId, index, mediaType, mediaUrl, mediaPreviewUrl, intervalStartTimeMs. |
recordType: "error"
Invalid or unavailable inputs produce a diagnostic row instead of failing the run:
{"recordType": "error","status": "not_found","message": "Snapchat has no public publisher page for this ID.","sourceUrl": "https://www.snapchat.com/p/3c33e049-a638-4b4e-9960-78a2b87a9992","scrapedAt": "2026-11-11T14:00:00+00:00"}
Use cases
- Media monitoring - track which publishers and shows are on Discover
- Publisher research - profile publishers, their subscriber counts and season output
- Content benchmarking - compare show formats, episode cadence and media availability
- Trend analysis - collect regional Discover feeds over time
- Episode and media archives - resolve episode pages into snap previews and HLS playback URLs
FAQ
Do I need a Snapchat account, cookies, or a proxy? No. Every surface used here is public and works anonymously. The optional proxy field exists only for users who want a specific connection.
Why does the Discover feed return fewer rows than maxStories?
The feed is finite and changes constantly. The actor keeps paginating until Snapchat returns no new stories. A run that asks for 500 rows can legitimately end with the size of the current feed.
Why do some publisher IDs return a not_found error?
Discover contains public user stories and retired shows that do not have a publisher page. The actor reports the missing page per input and continues with the remaining inputs.
Why is videoTrackUrl missing from some publisher season rows?
Snapchat's season list does not include the HLS track. Enable includeEpisodeMedia to fetch each episode's media detail, or use byEpisodeUrl for a single episode.
Can I get every episode of a long-running show?
Yes. Set includeEpisodes to true and raise maxEpisodesPerPublisher. The actor walks each season's cursor. A small number of rows can differ from the season list's declared count because Snapchat's declaration and its episode endpoint do not always agree.
Are the media URLs permanent?
They are public CDN URLs that returned 200 during verification. Snapchat may rotate or expire individual assets; the actor stores the URL it received, not a copy of the media.
Limitations
- Discover availability and publisher pages depend on the country context. Some pages answer
451(region-restricted); the actor reports that as an error row. - Per-snap
mediaUrlis populated by Snapchat for only a small subset of snaps (usually the first snaps of an episode). Preview images are available for almost every snap. - Publisher season lists occasionally declare more episodes than the season endpoint returns. The actor reports both numbers.
- Snapchat's web GraphQL schema is undocumented and can change. The
/discoverserver-rendered snapshot is kept as an automatic fallback, but it only carries a small number of stories. - Spotlight posts, creator profiles, comments, and transcripts are separate surfaces and are not part of this actor.