Does Snapchat Have a Public API for Profiles, Stories and Spotlight?
If you have tried to pull Snapchat data into an influencer dashboard or a social-listening stack, you probably went through the same sequence: read the Snap Kit docs, read the Marketing API docs, and then realize neither one does what you need. Snap Kit lets a user log in with Snapchat and share content into the app; the Marketing API manages your own ad accounts and campaigns. Neither lets you read an arbitrary creator’s public profile, today’s Story, their Spotlight archive, or the AR Lens catalog.
So the short answer is: no, Snapchat does not offer an official public API for reading profiles, Stories, Spotlight or Lenses. This guide shows how to get that data anyway through the Snapchat Content API, a plain REST JSON service that needs no Snapchat login, SDK or partner allowlisting.
Why Snapchat is the gap in most monitoring stacks
TikTok, Instagram and YouTube all have some combination of official research APIs, Graph endpoints and a mature ecosystem of data providers. Snapchat has historically been treated as “private messaging”, so most social-listening and creator-analytics tools simply skip it. Yet Snapchat has a large public surface: public profiles with subscriber counts, 24-hour public Stories, pinned Highlights, the Spotlight short-video feed with comments, and hundreds of thousands of AR Lenses. That is exactly the data the endpoints below expose.
Endpoints overview
All calls are GET requests to:
https://api.opendata-api.com/api/project/snapchat-content/<operationId>?key=YOUR_API_KEY
| Step | operationId | Input | What you get |
|---|---|---|---|
| Profile | get-profile | username | Display name, bio, subscriberCount, avatar, snapcode, hasStory / hasCuratedHighlights / hasSpotlightHighlights |
| Everything at once | get-full-profile | username | Profile + active Story + Highlights + Spotlight highlights + Lenses |
| 24h Story | get-user-story | username | Live Story with snap media URLs, or null |
| Highlights | get-user-curated-highlights | username | Pinned Highlight albums that do not expire |
| Spotlight highlights | get-user-spotlight-highlights | username | A creator’s featured Spotlight videos |
| Spotlight by URL | get-spotlight-by-link | spotlight_link | Video file URL, thumbnail, duration, views, shares, comment count, hashtags |
| Spotlight comments | get-spotlight-comments-by-link | spotlight_link | Public comment thread |
| Story by URL | get-story-by-link | story_link | Resolve a shared Story link |
| Search | get-search | keyword | Results grouped into Spotlight, Lenses, Topics, creators, Places, Shows |
| Lenses | get-trending-lenses, get-search-lenses, get-lenses-by-hashtag, get-lens-item, get-user-lenses | varies | Trending, searched, tagged or creator-published AR Lenses |
| Lens catalogs | get-face-lenses, get-world-lenses, get-music-lenses, get-lens-creators | optional cursor | Paginated catalogs and a Lens-creator directory |
Walkthrough: username to Spotlight to Lenses
1. Look up a public profile by username
Pass the handle without @:
curl "https://api.opendata-api.com/api/project/snapchat-content/get-profile?username=brentrivera&key=YOUR_API_KEY"
The response is {success, data: {info, metadata}}. Useful fields in info:
username,title(display name),bio,websiteUrlsubscriberCount(returned as a string, so cast it)profilePictureUrl,snapcodeImageUrl,squareHeroImageUrlhasStory,hasCuratedHighlights,hasSpotlightHighlights
Those three boolean flags matter: they tell you which follow-up calls are worth paying for. An unknown username returns HTTP 200 with success: false.
2. Fetch the 24h Story and Highlights
import requests
BASE = "https://api.opendata-api.com/api/project/snapchat-content"
KEY = "YOUR_API_KEY"
def call(op, **params):
params["key"] = KEY
r = requests.get(f"{BASE}/{op}", params=params, timeout=60)
r.raise_for_status()
return r.json()
profile = call("get-profile", username="snoopdogg")
info = profile["data"]["info"]
# Only poll the Story when one is actually live
if info.get("hasStory"):
story = call("get-user-story", username="snoopdogg")["data"]
print("Live story:", story is not None)
if info.get("hasCuratedHighlights"):
highlights = call("get-user-curated-highlights", username="snoopdogg")["data"]
print("Highlights payload received")
When no Story is live, get-user-story still succeeds with data: null. Because Stories expire after 24 hours, archiving tools typically poll a few times per day. If you need everything for one account in a single request, use get-full-profile, which returns profile, story, curatedHighlights, spotlightHighlights and lenses together.
3. Resolve a Spotlight video by URL and read its comments
const BASE = "https://api.opendata-api.com/api/project/snapchat-content";
const KEY = "YOUR_API_KEY";
const link = "https://www.snapchat.com/spotlight/W7_EDlXWTBiXAEEniNoMPwAAYa3F2d2VwcG5uAY336_EbAY3368kUAAAAAQ";
async function call(op, params) {
const qs = new URLSearchParams({ ...params, key: KEY });
const res = await fetch(`${BASE}/${op}?${qs}`);
return res.json();
}
const spot = await call("get-spotlight-by-link", { spotlight_link: link });
const meta = spot.data.metadata;
console.log(meta.videoMetadata.contentUrl); // direct video file URL
console.log(meta.engagementStats.viewCount); // views, as a string
const comments = await call("get-spotlight-comments-by-link", { spotlight_link: link });
console.log(comments.data);
Key Spotlight fields:
metadata.videoMetadata:contentUrl,thumbnailUrl,durationMs,uploadDateMs,creator,name,descriptionmetadata.engagementStats:viewCount,shareCount,commentCount,boostCount,recommendCountllmTitle,llmDescription,llmKeywords,hashtags,contextCards(creator and original sound)story.snapListwith per-snap media URLs
4. Track trending and searched Lenses
curl "https://api.opendata-api.com/api/project/snapchat-content/get-trending-lenses?key=YOUR_API_KEY"
curl "https://api.opendata-api.com/api/project/snapchat-content/get-lenses-by-hashtag?hashtag=halloween&key=YOUR_API_KEY"
get-trending-lenses returns data.topLenses, about 24 entries, each with lensId, name, creatorName, creatorIsOffical, iconUrl, thumbnailUrl and deeplinkUrl. Expand any lensId with get-lens-item for the preview video and unlock URL. For broad discovery across Spotlight, Lenses, creators and places, use get-search?keyword=music; for full catalogs, page through get-face-lenses, get-world-lenses and get-music-lenses with the cursor value from the previous page.
How this compares to TikTok, Instagram and YouTube coverage
Most teams already pull TikTok videos, Instagram Reels and Stories, and YouTube Shorts. The Snapchat Content API maps cleanly onto the same model: profile and follower-style metrics (subscriberCount), ephemeral Stories (like Instagram Stories), evergreen Highlights, a short-video feed with views and comments (Spotlight, comparable to TikTok and Reels), plus one thing the others do not have, an AR Lens catalog with trend data. That lets you add Snapchat as another column in a cross-network creator report instead of leaving it blank.
Use cases
- Influencer and KOL platforms: add Snapchat subscriber counts, Story activity and Spotlight views to creator profiles next to TikTok and Instagram.
- Social listening and brand safety: pull Spotlight comment threads for sentiment and moderation review.
- AR and Lens-trend research: monitor trending Lenses daily and map which creators and hashtags are rising.
- Media kits and creator analytics: archive Stories and Highlights by handle for reporting.
- Content tools and downloaders: resolve Spotlight or Story share links to media URLs.
- Outbound marketers targeting Gen Z in the US, Europe and the Middle East, plus AI agents and n8n/Make workflows that need a simple REST source without OAuth.
FAQ
Does Snapchat have a public API for profiles, stories, and Spotlight? Not officially. Snap Kit covers login and sharing, and the Marketing API covers ads. Reading public profiles, Stories and Spotlight requires a third-party API such as this one.
How do I get Snapchat user profile data without the official SDK?
Call get-profile with a username. No Snapchat account, OAuth flow or SDK is involved; you only need an API key.
How to download a Snapchat Spotlight video by URL via API?
Pass the share URL to get-spotlight-by-link and use metadata.videoMetadata.contentUrl, the direct video file.
Can I scrape Snapchat public stories programmatically?
Yes, for public accounts. get-user-story returns the live 24h Story by username, and get-story-by-link resolves a shared Story link.
Is there an API for Snapchat trending AR lenses and filters?
Yes. get-trending-lenses returns the current top Lenses; get-search-lenses, get-lenses-by-hashtag and the face, world and music catalogs cover the rest.
How to get Snapchat Spotlight comments from a share link?
Use get-spotlight-comments-by-link with the same Spotlight URL.
What’s the difference between Stories, Highlights, and Spotlight for developers?
Stories are ephemeral and disappear after 24 hours (get-user-story). Highlights are Story collections a creator pins to the profile (get-user-curated-highlights). Spotlight is Snapchat’s public short-video feed with views and comments (get-spotlight-by-link, get-spotlight-feed).
How to look up a Snapchat public profile by username?
get-profile?username=<handle> for the identity card, or get-full-profile for profile, Story, Highlights and Lenses in one call.
How to find Snapchat Lens creators and trending filters via API?
Page through get-lens-creators for the creator directory and use get-user-lenses to list a creator’s published Lenses.
Why is Snapchat missing from most social listening APIs? Because there is no official read API, most vendors skip it. This API fills that gap with public data only.
If you need a phone, email or username registration check instead, see the separate Snapchat Lookup API. APIs for similar apps such as Lemon8, BeReal, Threads, Pinterest, Kwai or Xiaohongshu can be added on request via the contact page, and private (source-code) deployment is available for teams that need to run it on their own infrastructure.