Get Snapchat Public data with one API
The Snapchat API returns public Snapchat data as clean JSON.
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.
Snapchat Public Data API
3 of 8 endpoints, ready to run
Full public Snapchat profile by username.
// Press "Try it" and this pane shows exactly what the // live site returned this second — including an empty // result, if that is the truth. No key, no account.
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.
No OAuth app, no request signing, no per-site account. One key covers all 185 engines.
Every route is a POST with a JSON body. Parameters are validated against the published schema before anything is charged.
Credits, not seats. Failed and blocked calls are never charged, and cache hits cost nothing.
One envelope everywhere. meta carries latency_ms, record_count and the endpoint that answered.
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.
| Field | What it holds | When it is missing or misleading |
|---|---|---|
| profile.subscriber_count | The real public subscriber number | Populated on both accounts tested: kyliejenner 29,851,800 and nasa 762,700. |
| related_accounts[].subscriber_count | Suggested-account rows | Always 0. Every related account on both profiles returned 0, including ones that return millions when queried directly. |
| profile.bio | Free-text bio | Absent entirely on kyliejenner, present on nasa. The key is not returned rather than set to null, so use a safe accessor. |
| profile.category / subcategory | Account classification | Raw 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_story | Flag for a live public story | Unreliable. kyliejenner returned has_story false while the story action returned 35 snaps timestamped over the previous four days. |
| story.story_id | Story identifier | Falls back to the username. kyliejenner's story returned story_id "kyliejenner" while each snap still carried a real 58-character snap_id. |
| highlights groups | Saved highlight reels | Each 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_url | Thumbnail for a snap | A nested object, {"value": "https://..."}, while media_url beside it is a plain string. Read .value. |
| spotlight story_id | Spotlight video id | A 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_uuid | Lens identifier | 32 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 username | profile, story, lenses | ok 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 people build with Snapchat Public Data
The jobs this data is most often used for.
endpoints
credit per call
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.
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 →- 1,000 free credits on signup, no card
- One key, all 185 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 -X POST https://api.reefapi.com/snapchat/v1/profile \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"username":"kyliejenner"}'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"])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 | @aj_rgby", 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.
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 184 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.