Snapchat Discover Publisher Show Extractor avatar

Snapchat Discover Publisher Show Extractor

Pricing

from $0.49 / 1,000 results

Go to Apify Store
Snapchat Discover Publisher Show Extractor

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

Nimbryxo-studio

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

15 hours ago

Last modified

Features

Limited permissions

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/discover for 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

ModeWhat you getTypical 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
byPublisherOne 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
byEpisodeUrlOne 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

FieldTypeDefaultDescription
modeselectdiscoverWhich surface to collect.
maxStoriesinteger (1-500)50Maximum records pushed. Discover stories, publisher rows, and episode rows all count one each.
countryselectUSISO 3166-1 alpha-2 country context. All countries are listed.
localeselecten-USLanguage and region hint for the Discover feed (61 common Snapchat locales).
storyTypesselectallall, shows, publicUserStories, or publishers. Discover mode only.
publisherUrlsOrIdsstring list[]Publisher/show page URLs, story.snapchat.com links, or bare business profile UUIDs. byPublisher only.
episodeUrlsstring list[]Episode URLs shaped like snapchat.com/p/<publisherId>/<storyId>. byEpisodeUrl only.
includeEpisodesbooleanfalseExpand every season into its full episode list. byPublisher only.
maxEpisodesPerPublisherinteger (1-2000)100Episode cap across all seasons of one publisher.
includeEpisodeMediabooleanfalseFetch each episode's snap list and HLS URL. byPublisher only.
proxyConfigurationproxyemptyOptional 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"

FieldDescription
storyKey, storyId, storyType, title, tapIdStory 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.
thumbnailUrlCover image URL.
publishedAtPublish time in ISO 8601 UTC.
videoTrackUrlHLS playlist for show episodes.
creatorbusinessProfileId, title, bio, username, badge, profile images, primaryColor.
previewSnapsnapId, mediaUrl, mediaPreviewUrl, mediaType, index.
totalSnapsNumber of snaps in the story.

recordType: "publisher"

FieldDescription
publisherId, publisherTitle, publisherUrlPublisher identity and public page.
bio, subscriberCount, publisherType, username, badgeProfile metadata.
profilePictureUrl, squareHeroImageUrl, snapcodeImageUrl, primaryColorBrand images and color.
websiteUrlPresent only when the profile lists one.
seasonCount, seasonsSeason IDs, season numbers, declared episode counts, and actual counts when expanded.
declaredEpisodeCountSum of the season list's declared counts.
latestEpisodesThe 13-14 latest episodes embedded in the page.
episodes, episodesReturnedFull season history and its size when includeEpisodes is on.
episode objectsstoryId, title, storyType, thumbnailUrl, videoTrackUrl, publishedAt, seasonNumber, episodeNumber, storyUrl; with includeEpisodeMedia: snapCount and snaps[].

recordType: "episode"

FieldDescription
storyId, title, storyType, storyUrlEpisode identity.
publisherId, publisherTitlePublisher context.
seasonNumber, episodeNumberPresent when the publisher page exposes them.
thumbnailUrl, videoTrackUrlCover image and playable HLS URL.
snapCount, snapsEach 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 mediaUrl is 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 /discover server-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.