Looking for the overview — what this API returns, what it costs, and a call you can run without a key? See the Snapchat Public Data API page →
Social Media

Snapchat Public Data API & Scraper

The Snapchat API returns public Snapchat data as clean JSON.

8 actionsLive JSON1,000 free credits$0.67–$1.50 / 1,000 creditsMCP-ready
Get a free keyOpen in playground

🤖 Using an AI assistant? Copy this link into ChatGPT / Claude / Cursor — it reads every endpoint and parameter instantly and tells you if this API fits your use case.

The primary profile endpoint returns a username's display name, bio, subscriber count, website, profile picture and snapcode, and you can pull a story, highlights, lenses, spotlight, a spotlight detail and the lens directory. It is built for creator analytics and brand monitoring that need public Snapchat data without a login. One ReefAPI key, one shared credit pool, the standard envelope.

Reference

Which Snapchat fields are populated, and what the identifiers look like

This is the logged-out public surface, so several documented fields are absent on some accounts rather than null, and one flag disagrees with the data next to it. Measured 2026-08-27 on kyliejenner, nasa, the trending Spotlight feed and the top lens directory. These are the rows that trip people up when they wire a schema to the spec instead of to a response.

FieldWhat it holdsWhen it is missing or misleading
profile.subscriber_countThe real public subscriber numberPopulated on both accounts tested: kyliejenner 29,851,800 and nasa 762,700.
related_accounts[].subscriber_countSuggested-account rowsAlways 0. Every related account on both profiles returned 0, including ones that return millions when queried directly.
profile.bioFree-text bioAbsent entirely on kyliejenner, present on nasa. The key is not returned rather than set to null, so use a safe accessor.
profile.category / subcategoryAccount classificationRaw untranslated keys, not labels: "public-profile-category-v3-business-group" and "public-profile-subcategory-v3-government-org" on nasa. Both absent on kyliejenner.
profile.has_storyFlag for a live public storyUnreliable. kyliejenner returned has_story false while the story action returned 35 snaps timestamped over the previous four days.
story.story_idStory identifierFalls back to the username. kyliejenner's story returned story_id "kyliejenner" while each snap still carried a real 58-character snap_id.
highlights groupsSaved highlight reelsEach group carries highlight_id, a UUID such as 367bdbd7-d19a-4bf1-bc81-c3e73f7b1809, and story_id is null. kyliejenner returned 18 curated and 24 Spotlight highlight groups.
media_preview_urlThumbnail for a snapA nested object, {"value": "https://..."}, while media_url beside it is a plain string. Read .value.
spotlight story_idSpotlight video idA 58-character token, identical to snaps[0].snap_id and to the tail of snapchat.com/spotlight/<id>. Feed it straight to spotlight_detail.
lens scannable_uuidLens identifier32 lowercase hex characters, e.g. 565e7595ec4e4a0da689762b127308ef, and the same value sits in unlock_url as ?uuid=. Some lenses rows omit lens_id and scannable_uuid; recover the uuid from unlock_url.
Unknown usernameprofile, story, lensesok false with error.code NOT_FOUND, message "Snapchat returned 404 (no such public profile/resource)", retryable false. There is no empty-success case to guard against.

media_type is 0 for an image snap and 1 for a video; kyliejenner's 35-snap story contained both. Media URLs are signed CDN links that expire, so download rather than store them.

Live example

Real request and response JSON

Captured from the indexed primary action, profile, on .

Captured request
{
  "method": "POST",
  "url": "https://api.reefapi.com/snapchat/v1/profile",
  "headers": {
    "x-api-key": "$REEF_KEY",
    "content-type": "application/json"
  },
  "body": {
    "username": "kyliejenner"
  }
}
Captured response
{
  "ok": true,
  "meta": {
    "api": "snapchat",
    "endpoint": "profile",
    "mode": "live",
    "latency_ms": 1377,
    "record_count": 1,
    "bytes": 1285363,
    "cache_hit": false,
    "charged_credits": 1,
    "version": "0.1.0"
  },
  "data": {
    "profile": {
      "username": "kyliejenner",
      "display_name": "King Kylie 👑",
      "subscriber_count": 29262900,
      "website_url": "kyliecosmetics.com",
      "profile_pic": "https://cf-st.sc-cdn.net/aps/bolt/aHR0cHM6Ly9jZi1zdC5zYy1jZG4ubmV0L2QvaEJwN3Z0ZFl5NFVOeFpnWk04dXBYP2JvPUVna3lBUVJJQWxBWllBRSUzRCZ1Yz0yNQ._RS0,90_FMjpeg",
      "hero_image": "https://cf-st.sc-cdn.net/aps/bolt/aHR0cHM6Ly9jZi1zdC5zYy1jZG4ubmV0L2QvakRGcnNVaW1ta2ZsamFPa1ZUTWVwP2JvPUVna3lBUVJJQWxBWllBRSUzRCZ1Yz0yNQ._RS0,1080_FMjpeg",
      "snapcode_url": "https://app.snapchat.com/web/deeplink/snapcode?username=kyliejenner&type=SVG&bitmoji=enable",
      "is_verified": true,
      "badge": 1,
      "business_profile_id": "e9bcdb52-a5cc-4dea-88ac-8baa91a78345",
      "host_user_id": "7f445ef2-e1d3-4ef2-a235-a5aec8159168",
      "has_story": false,
      "has_curated_highlights": true,
      "has_spotlight_highlights": true,
      "created_at_ms": 1558548110393,
      "updated_at_ms": 1789825152000,
      "profile_url": "https://www.snapchat.com/add/kyliejenner",
      "related_accounts": [
        {
          "username": "kimkardashian",
          "display_name": "Kim Kardashian",
          "subscriber_count": 0,
          "profile_pic": "https://cf-st.sc-cdn.net/aps/bolt/aHR0cHM6Ly9jZi1zdC5zYy1jZG4ubmV0L2QvUjlZUUE2a0xHQlV0SHMxSjZhYmZhP2JvPUVnMGFBQm9BTWdFRVNBSlFHV0FCJnVjPTI1._RS0,640_FMjpeg",
          "is_verified": true
        },
        {
          "username": "kendalljenner",
          "display_name": "Kendall Jenner",
          "subscriber_count": 0,
          "profile_pic": "https://cf-st.sc-cdn.net/aps/bolt/aHR0cHM6Ly9jZi1zdC5zYy1jZG4ubmV0L2QvWW1tSUZkY2JlZTNrZVl5bVlQbEpxP2JvPUVnMGFBQm9BTWdFRVNBSlFDR0FCJnVjPTg._RS0,640_FMpng",
          "is_verified": true
        },
        {
          "username": "kourtneykardash",
          "display_name": "Kourtney Kardashian",
          "subscriber_count": 0,
          "profile_pic": "https://cf-st.sc-cdn.net/aps/bolt/aHR0cHM6Ly9jZi1zdC5zYy1jZG4ubmV0L2QvTlprQndFQk44VnJraXRwQkZ3cXdLP2JvPUVnMGFBQm9BTWdFRVNBSlFHV0FCJnVjPTI1._RS0,640_FMpng",
          "is_verified": true
        }
      ]
    }
  }
}
Actions

What the Snapchat Public Data API does

ActionDescriptionConcrete use caseKey params
profileFull public Snapchat profile by username: display name, snapcode, subscriber count, bio, website, verified badge, profile picture, business id, related/suggested accounts, plus flags for whether the account has a live story and saved highlights.Social-listening tools call profile to get full public Snapchat profile by username.username
storyThe account's current public story — the live snaps (image/video media URLs, timestamps, titles) that the profile is publicly broadcasting right now.Creator and influencer platforms call story to get the account's current public story.username
highlightsThe account's saved public highlight stories (curated highlights + Spotlight highlights), each with its snaps. First page.Brand-monitoring teams call highlights to get the account's saved public highlight stories (curated highlights + Spotlight highlights), eac….username
lensesThe creator's own public AR lenses listed on their profile: name, preview image/video, icon, unlock URL and scannable UUID.Audience analysts call lenses to get the creator's own public AR lenses listed on their profile.username
spotlightThe public trending Spotlight feed — ~25 popular Spotlight videos with engagement stats (views, shares, comments, boosts), creator, AI-generated title/description/keywords and media URLs. No input needed; returns what Snapchat is surfacing now.Social-listening tools call spotlight to get the public trending Spotlight feed.none
spotlight_detailFull metadata for one public Spotlight video by its story id (from a spotlight result's story_id or a snapchat.com/spotlight/<id> URL): name, description, view count, duration, dimensions, creator and media URL.Creator and influencer platforms call spotlight_detail to get full metadata for one public Spotlight video by its story id (from a spotlight result's story….story_id
lens_directorySnapchat's public top/trending AR lens directory: the featured lenses plus the lens category list. First page.Brand-monitoring teams call lens_directory to get snapchat's public top/trending AR lens directory.none
lens_detailDetail for one public AR lens by its scannable UUID (from a lens result's scannable_uuid or a snapchat.com/lens/<uuid> URL): name, creator, preview media, unlock URL, the Spotlight videos that use this lens, and related lenses.Audience analysts call lens_detail to get detail for one public AR lens by its scannable UUID (from a lens result's scannable_uuid or a….uuid
Code samples

Call profile from your stack

curl -X POST https://api.reefapi.com/snapchat/v1/profile \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"username":"kyliejenner"}'
MCP one-liner
Ask your MCP-connected assistant: call reefapi.snapchat.profile with {"username":"kyliejenner"}.
Use cases

Who uses this API and why

  • Creator analytics call profile to pull a public account's subscriber count.
  • Brand monitoring uses story and spotlight to track content.
  • AR tools use lenses and the lens directory to study creative trends.
FAQ

Questions developers ask before integrating

profile says has_story false, so why does the story action return snaps?

Because the flag and the story payload come from different parts of Snapchat's own page data and they disagree. On 2026-08-27 kyliejenner returned has_story false, yet the story action returned 35 snaps timestamped from 2026-08-23 to 2026-08-27, none of which overlapped the 25 snaps inside her saved highlights. Treat has_story as a hint, and call story when you actually need to know.

Why are all the subscriber counts in related_accounts zero?

Snapchat does not put a subscriber number on the suggested-account cards, and the field defaults to 0 rather than null. Every related account under kyliejenner and under nasa returned 0, including kimkardashian and kendalljenner, both of which return real numbers when you query them as a username. Use related_accounts for discovery, then re-query each username for its count.

What is category "public-profile-category-v3-business-group" supposed to mean?

It is Snapchat's internal localization key, served instead of a display label. nasa came back with that category and subcategory "public-profile-subcategory-v3-government-org", so the meaning is readable once you strip the prefix, but you cannot show it to a user as-is. Accounts Snapchat has not classified omit both keys entirely, as kyliejenner did.

Spotlight videos are all called "Spotlight Snap". Where is the real title?

In ai_title. The name field is often Snapchat's generic label and description is the boilerplate "Another Spotlight Snap brought to you by Snapchat". Alongside them, ai_title, ai_description and ai_keywords carry Snapchat's own machine-generated summary of the clip, for example ai_title "Teee Dollar Gets a Fresh Cut at TD-CUTZ Barbershop" with keywords like "how to style dreads". Some videos do have a real name, such as "insane trick shot | @creator", so check both fields.

Which engagement numbers does a Spotlight video carry?

view_count, share_count, comment_count, boost_count and recommend_count, plus duration_ms, width, height and upload_date_ms. They do not scale together: one clip returned 779,899 views with 272 shares, 119 comments and 8,193 boosts, while a second returned 72,408 views with 335 shares, 9 comments and 10,110 boosts. Boosts are their own signal, not a fraction of views.

Why does media_preview_url break my parser?

It is an object where you expect a string. Every snap returns media_url as a plain URL string and media_preview_url as {"value": "https://..."} sitting right next to it. The same wrapped-value shape shows up in a few other nested blocks. Read media_preview_url.value, and treat any field that arrives as a one-key object with a value key the same way.

Do all lenses come with a preview video?

No. In the top lens directory, Snapchat's own lenses returned preview_image_url and preview_video_url on lens-storage.googleapis.com, while community lenses returned neither and had only icon_url plus creator_username. "Imagine" by Snapchat had full preview media with is_official true; "Drift Queen" by Haroon Zarr had an icon and unlock URL only, with is_official false. Check is_official before you plan on preview media.

What happens with a private or nonexistent username?

You get an explicit failure, not an empty success. A made-up handle returned ok false, error.code NOT_FOUND, message "Snapchat returned 404 (no such public profile/resource)", retryable false. Only accounts that exist at snapchat.com/add/<username> as public profiles resolve; an ordinary personal account has no public page and behaves the same way as a nonexistent one.

What is the Snapchat Public Data API?

Snapchat Public Data API is a ReefAPI endpoint group for snapchat public data It returns live JSON through POST requests under /snapchat/v1.

Is the Snapchat Public Data API free to try?

Yes. ReefAPI starts with 1,000 free credits, no card required. Snapchat Public Data calls use the same shared credit balance as every other ReefAPI engine.

Do I need a Snapchat Public Data login or account?

No login to Snapchat Public Data is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.

How fresh is the Snapchat Public Data data?

The page example is captured from a live profile call, and production requests fetch live data through ReefAPI rather than a static sample.

How many credits does the Snapchat Public Data API use?

Snapchat Public Data actions currently cost 1 credit per successful call. Failed or blocked calls are free. All APIs draw from one credit pool.

Can I call Snapchat Public Data from an AI assistant or MCP client?

Yes. Connect ReefAPI once through MCP and your assistant can call snapchat actions with the same key, credit pool and JSON envelope used by normal REST requests.

docs / snapchat

Snapchat Public Data

Snapchat Public Data

base /snapchat/v18 endpoints
post/snapchat/v1/profile1 credit

Full public Snapchat profile by username: display name, snapcode, subscriber count, bio, website, verified badge, profile picture, business id, related/suggested accounts, plus flags for whether the account has a live story and saved highlights.

ParameterAllowed / rangeDescription
usernamerequired—Snapchat public username — the name in snapchat.com/add/<username> (with or without a leading @). Public creator/brand accounts only.
Try in playground →
post/snapchat/v1/story1 credit

The account's current public story — the live snaps (image/video media URLs, timestamps, titles) that the profile is publicly broadcasting right now.

ParameterAllowed / rangeDescription
usernamerequired—Snapchat public username — the name in snapchat.com/add/<username> (with or without a leading @). Public creator/brand accounts only.
limitoptional1–100Max items to return (1-100). The page is sliced; omit for all.
Try in playground →
post/snapchat/v1/highlights1 credit

The account's saved public highlight stories (curated highlights + Spotlight highlights), each with its snaps. First page.

ParameterAllowed / rangeDescription
usernamerequired—Snapchat public username — the name in snapchat.com/add/<username> (with or without a leading @). Public creator/brand accounts only.
limitoptional1–100Max items to return (1-100). The page is sliced; omit for all.
Try in playground →
post/snapchat/v1/lenses1 credit

The creator's own public AR lenses listed on their profile: name, preview image/video, icon, unlock URL and scannable UUID.

ParameterAllowed / rangeDescription
usernamerequired—Snapchat public username — the name in snapchat.com/add/<username> (with or without a leading @). Public creator/brand accounts only.
limitoptional1–100Max items to return (1-100). The page is sliced; omit for all.
Try in playground →
post/snapchat/v1/spotlight1 credit

The public trending Spotlight feed — ~25 popular Spotlight videos with engagement stats (views, shares, comments, boosts), creator, AI-generated title/description/keywords and media URLs. No input needed; returns what Snapchat is surfacing now.

ParameterAllowed / rangeDescription
limitoptional1–100Max items to return (1-100). The page is sliced; omit for all.
Try in playground →
post/snapchat/v1/spotlight_detail1 credit

Full metadata for one public Spotlight video by its story id (from a spotlight result's story_id or a snapchat.com/spotlight/<id> URL): name, description, view count, duration, dimensions, creator and media URL.

ParameterAllowed / rangeDescription
story_idrequired—Spotlight story id (the code in snapchat.com/spotlight/<id>). A full Spotlight URL is also accepted.
Try in playground →
post/snapchat/v1/lens_directory1 credit

Snapchat's public top/trending AR lens directory: the featured lenses plus the lens category list. First page.

ParameterAllowed / rangeDescription
limitoptional1–100Max items to return (1-100). The page is sliced; omit for all.
Try in playground →
post/snapchat/v1/lens_detail1 credit

Detail for one public AR lens by its scannable UUID (from a lens result's scannable_uuid or a snapchat.com/lens/<uuid> URL): name, creator, preview media, unlock URL, the Spotlight videos that use this lens, and related lenses.

ParameterAllowed / rangeDescription
uuidrequired—Lens scannable UUID (the code in snapchat.com/lens/<uuid>). A full lens URL is also accepted.
Try in playground →
Built for volume
5M+ requests a day

Measured at 60 requests a second across the fleet, with no central bottleneck. Volume pricing is on request, and per-key limits are raised for high-volume accounts.

Missing a source?
We build it

Tell us a site we do not cover yet and it becomes an engine. A customer asked for bestprice.gr on a Sunday and it was in the catalog the next day.

Support
2 minute median reply

Median time from a question in the live chat to the first answer, measured across every answered conversation. Setup help included, no support tier to buy.

One key, one balance
Every API included

No per-site plans and no separate subscriptions. One key and one credit pool across the whole catalog, so adding a source costs nothing up front.

Planning something large? Tell us the volume and the sources and we will come back with what it costs and what we would have to build.

Comparing scraping APIs?ReefAPI vs Apify