Snapchat Public Data API

Read public Snapchat profiles and Spotlight data with one API

The Snapchat API returns public Snapchat data as clean JSON.

no credit card1,000 free credits · instant API key · pay by card or crypto
Missing a Snapchat Public Data endpoint, or need a source we don't have yet?Contact us real people · same-day reply.
S
/snapchat/v1

8 active endpoints. Every call is 1 credit.

  • POST/snapchat/v1/profile
  • POST/snapchat/v1/story
  • POST/snapchat/v1/highlights
  • POST/snapchat/v1/lenses
  • POST/snapchat/v1/spotlight
  • POST/snapchat/v1/spotlight_detail
  • POST/snapchat/v1/lens_directory
  • +1 more

What Snapchat Public Data endpoints does ReefAPI ship?

8 live read endpoints. Read-only data API: no writes, no account actions, no dashboard access on the target site.

8 endpoints

profile

1 cr

Full public Snapchat profile by username.

required
username
optional

story

1 cr

The account's current public story.

required
username
optional

highlights

1 cr

The account's saved public highlight stories (curated highlights + Spotlight highlights), eac…

required
username
optional

lenses

1 cr

The creator's own public AR lenses listed on their profile.

required
username
optional

spotlight

1 cr

The public trending Spotlight feed.

required
optional

spotlight_detail

1 cr

Full metadata for one public Spotlight video by its story id (from a spotlight result's story…

required
story_id
optional

lens_directory

1 cr

Snapchat's public top/trending AR lens directory.

required
optional

lens_detail

1 cr

Detail for one public AR lens by its scannable UUID (from a lens result's scannable_uuid or a…

required
uuid
optional

Every parameter, every allowed value →

Snapchat Public Data API

3 of 8 endpoints, ready to run

View docs ↗

A public account's identity card: display name, snapcode, subscriber count, bio, website, verified badge, category — and flags saying what else it has published.

1 credit1 required · 0 optional
POST/snapchat/v1/profile
ok1223 ms · 1 records · sample
{
  "ok": true,
  "meta": {
    "api": "snapchat",
    "endpoint": "profile",
    "mode": "live",
    "latency_ms": 1222.6,
    "record_count": 1,
    "cache_hit": false
  },
  "data": {
    "profile": {
      "bio": "Explore the universe and discover our home planet with official NASA snaps.",
      "subscriber_count": 762300,
      "website_url": "https://www.nasa.gov",
      "hero_image": "https://cf-st.sc-cdn.net/aps/bolt/aHR0cHM6Ly9jZi1zdC5zYy1jZG4ubmV0L2QvalRSaVBkS2NYWmJlV0w4dXNPeWNtP2JvPUVna3lBUVJJQWxBWllBRSUzRCZ1Yz0yNQ._RS0,1080_FMjpeg",
      "snapcode_url": "https://app.snapchat.com/web/deeplink/snapcode?username=nasa&type=SVG&bitmoji=enable",
      "is_verified": true,
      "badge": 1,
      "category": "public-profile-category-v3-business-group",
      "subcategory": "public-profile-subcategory-v3-government-org",
      "business_profile_id": "cb983b26-c537-474b-9699-065309205ea2",
      "has_story": false,
      "has_curated_highlights": true,
      "has_spotlight_highlights": true,
      "created_at_ms": 1558546707554,
      "updated_at_ms": 1781651002979,
      "related_accounts": [
        {
          "subscriber_count": 0,
          "is_verified": false
        },
        {
          "subscriber_count": 0,
          "is_verified": true
        },
        {
          "subscriber_count": 0,
          "is_verified": true
        }
      ]
    }
  }
}
Real response, fetched from the live endpoint with the parameters on the left — trimmed to the first few rows, with seller names left out. Press Try it for the untrimmed response.

How the Snapchat Public Data API works

Snapchat Public Data is a normal ReefAPI surface — the same four rules that hold for every other engine on the key.

01
Authenticate
x-api-key header

No OAuth app, no request signing, no per-site account. One key covers all 184 engines.

02
Call
POST /snapchat/v1/…

Every route is a POST with a JSON body. Parameters are validated against the published schema before anything is charged.

03
Pay
1 credit per call

Credits, not seats. Failed and blocked calls are never charged, and cache hits cost nothing.

04
Read
{ ok, data, meta, error }

One envelope everywhere. meta carries latency_ms, record_count and the endpoint that answered.

The durable half first, then whatever is on air

Snapchat is split between things that expire and things that do not. Highlights and Spotlight are the half that will still be there tomorrow; the live story is the half that will not, and it has to be asked rather than inferred — see the flag warning below.

01profile
POST/snapchat/v1/profile
{"username": "nasa"}

Subscriber count, snapcode, category, verified badge and business id in 1.4 seconds. It also carries three has_* flags — useful for the highlight ones, not for the story one.

02highlights
POST/snapchat/v1/highlights
{"username": "nasa"}

Seventeen saved stories in 1.3 seconds — ten curated and seven from Spotlight — each with its snaps and their media and preview URLs.

03spotlight
POST/snapchat/v1/spotlight
{}

Twenty-five trending videos with view, share, comment and boost counts, for the platform-wide picture rather than one account's.

An account's durable output plus the platform's trending feed, both with real numbers, and no Snapchat account of yours anywhere in it.

request
curl -X POST https://api.reefapi.com/snapchat/v1/profile \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"username":"kyliejenner"}'
response envelope
{
  "ok": true,
  "data": { … },
  "meta": {
    "api": "snapchat",
    "endpoint": "profile",
    "mode": "live",
    "latency_ms": …,
    "record_count": …
  },
  "error": null
}

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.

What is durable, what expires, and what the response admits

Measured on 2026-08-28 against two large accounts, the Spotlight feed and the lens directory. One line goes against us, and it is a property of the platform rather than of the engine.

No Snapchat account and nothing to register

You send a ReefAPI key and a handle. There is no Snapchat login of yours, no developer app and no session of yours in the path, so there is no account of yours that can be limited or restricted for reading public profiles. Everything on this page answered between 1.0 and 1.8 seconds.

The profile is the identity card, and it says what else exists

Display name, snapcode URL, subscriber count, bio, website, verified badge, category and subcategory, business profile id, and creation and update timestamps in epoch milliseconds. It also carries three has_* booleans for a live story, curated highlights and Spotlight highlights — the highlight two matched what the highlights action returned on every account we checked. The story one did not, which is the next row.

🔴 Do not gate the story call on the profile's has_story flag

Against us, and we reproduced it twice. The story action returns what an account is broadcasting right now, and it is honest in both directions: two large brand accounts were broadcasting nothing and the answer said exactly that — snap_count 0 under ok:true, not an error and not a fabricated snap. But a third account whose profile reported has_story false returned 84 live snaps when the story action was called anyway. The flag under-reports, so call story and read snap_count rather than trusting the boolean. And for anything that must still be there tomorrow, the answer is highlights, not story.

Highlights are the durable archive

The same account whose live story was empty returned 17 saved highlight stories in 1.3 seconds — ten curated and seven promoted from Spotlight — each carrying its own snaps with media URLs, preview images and per-snap timestamps, and a stop_reason of complete.

Spotlight comes with real engagement numbers

Twenty-five trending videos in one call, each with view, share, comment, boost and recommend counts, an upload timestamp in epoch milliseconds, duration and dimensions — and the platform's own generated title, description and keywords alongside the human ones. A single video can be re-opened by its story id for the same record in full.

The lens catalogue is a product surface of its own

The public directory returned 25 featured AR lenses and its 7 categories, each lens with a name, preview image and video, icon, unlock URL and the scannable UUID that the detail action takes. A creator's own lenses come back from the profile side with a last-updated epoch on each.

Nothing here pages deeply, and the responses admit it

Spotlight and the lens directory each serve the first batch — 25 rows — and mark stop_reason complete rather than dangling a cursor that would not work. Plan for breadth across accounts and lenses, not depth inside one feed.

What comes back, and what does not

Public profiles, public stories and highlights, public Spotlight videos and public lenses. Not private snaps, not friend lists, not a story an account has not made public. Everything on this page is what snapchat.com serves a visitor who is not signed in.

What people build with Snapchat Public Data

The jobs this data is most often used for.

8

endpoints

1

credit per call

01

Creator analytics call profile to pull a public account's subscriber count.

02

Brand monitoring uses story and spotlight to track content.

03

AR tools use lenses and the lens directory to study creative trends.

What Snapchat Public Data data costs

The cheapest call here is 1 credit, so $15/mo (Pro) buys 10,000 of them — $1.50 per 1,000 credits. Credits roll over and never expire, and failed or blocked calls are not charged.

Full pricing →
$0.67–$1.50 / 1,000 credits
  • 1,000 free credits on signup, no card
  • One key, all 184 APIs, one credit pool
  • Failed and blocked calls are never charged
  • Credits roll over and never expire

Call it in two lines

Sign up, get 1,000 credits and one key that works on every engine. Then this is the whole protocol.

curl
curl -X POST https://api.reefapi.com/snapchat/v1/profile \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"username":"kyliejenner"}'
python
import requests

r = requests.post(
    "https://api.reefapi.com/snapchat/v1/profile",
    headers={"x-api-key": REEF_KEY},
    json={
  "username": "kyliejenner"
},
)
print(r.json()["data"])
FAQ

Have a question? We got answers.

The questions people actually ask before wiring up Snapchat Public Data.

Get a free key →
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, and 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.

10 Social Media APIs on the same key

One key, one credit pool, one response envelope. If you are pulling Snapchat Public Data, you are one call away from the rest of the category — no second contract, no second integration.

Already paying for something else?Snapchat Public Data vs Apify

Need something this API does not do?

Name the endpoint, the field, or a source we do not carry yet. We ship new APIs every week and you would be first to get the key. Real people read every message and reply the same day.

0/4000

No account needed · we reply from [email protected]

Try it on your own data before you pay anything

The call above is the real endpoint, not a recording. A free key gives you 1,000 credits, the other 183 APIs, and the same envelope everywhere.

Endpoints, parameters and credit costs on this page are read from the live catalog and cannot drift from what the API accepts. Field notes were captured on 2026-08-28.