Does Snapchat Have a Public API for Profiles, Stories and Spotlight?

Published October 1, 2026

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
StepoperationIdInputWhat you get
Profileget-profileusernameDisplay name, bio, subscriberCount, avatar, snapcode, hasStory / hasCuratedHighlights / hasSpotlightHighlights
Everything at onceget-full-profileusernameProfile + active Story + Highlights + Spotlight highlights + Lenses
24h Storyget-user-storyusernameLive Story with snap media URLs, or null
Highlightsget-user-curated-highlightsusernamePinned Highlight albums that do not expire
Spotlight highlightsget-user-spotlight-highlightsusernameA creator’s featured Spotlight videos
Spotlight by URLget-spotlight-by-linkspotlight_linkVideo file URL, thumbnail, duration, views, shares, comment count, hashtags
Spotlight commentsget-spotlight-comments-by-linkspotlight_linkPublic comment thread
Story by URLget-story-by-linkstory_linkResolve a shared Story link
Searchget-searchkeywordResults grouped into Spotlight, Lenses, Topics, creators, Places, Shows
Lensesget-trending-lenses, get-search-lenses, get-lenses-by-hashtag, get-lens-item, get-user-lensesvariesTrending, searched, tagged or creator-published AR Lenses
Lens catalogsget-face-lenses, get-world-lenses, get-music-lenses, get-lens-creatorsoptional cursorPaginated 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, websiteUrl
  • subscriberCount (returned as a string, so cast it)
  • profilePictureUrl, snapcodeImageUrl, squareHeroImageUrl
  • hasStory, 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, description
  • metadata.engagementStats: viewCount, shareCount, commentCount, boostCount, recommendCount
  • llmTitle, llmDescription, llmKeywords, hashtags, contextCards (creator and original sound)
  • story.snapList with per-snap media URLs
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.