---
title: "Snapchat User Profile API"
method: GET
path: "/v1/snapchat/user-profile"
tags: ["Snapchat"]
---

# Snapchat User Profile API

`GET /v1/snapchat/user-profile`

## Request

- Base URL: `https://api.captapi.com`
- URL: `https://api.captapi.com/v1/snapchat/user-profile`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-API-Key`

Snapchat profile — stable identity card, millisecond timestamps, mediaType image/video (1 credit).

Pass a Snapchat username or profile URL and get the public profile as clean JSON — not Snapchat's protobuf wrappers. This is an identity card: highlights / spotlightHighlights / relatedAccounts are always keyed ([] when we know there are none — hasCuratedHighlights: false is [], not a missing key). Canonical card: username, displayName, bio, avatar, banner (square hero), url, followers, verified (from badge), human-readable category (public-profile-category-v3-business-group → Business Group), absolute website URL, snapcode. createdAt / updatedAt / publishedAt are ISO-8601 milliseconds; unix twins live under raw (creationTimestampMs / lastUpdateTimestampMs / timestampInSec). Identical-value aliases (handle/subscriberCount/profilePictureUrl/squareHeroImageUrl/firstSnapUrl/firstSnapType) are not emitted — read snapList[0] for the first snap. Regular (non-creator) accounts are supported too — Snapchat's web page only exposes username, displayName, snapcode and bitmoji avatar for them (no followers/bio/highlights exist on the web), so their card is legitimately slim. An unresolvable handle is 404 at 0 credits with username and url echoed on the error — and when Snapchat's own site answers 404 (the username has no public web profile; the account may still exist in-app), we return that verdict immediately instead of burning seconds re-checking — never a 200 with verified: false about an account that does not exist. highlights[] are curated Story albums; spotlightHighlights[] are Spotlight posts — different collections. Highlight ids/titles unwrap to plain strings (never Python dict repr). Each snap has mediaType image|video; the raw Snapchat enum is raw.snapMediaType. story.snapCount always equals story.snapList length. Spotlight rows add engagement{views,shares,comments,boosts,recommends}. relatedAccounts[] use the same avatar/url/verified keys as the top-level card. . mediaUrlsExpireAt is null — sc-cdn.net mo= is a content timestamp (matches publishedAt), not a CDN expiry. Flat 1 credit.

Docs: https://captapi.com/apis/snapchat-user-profile

## Query parameters

- `url` string, required
- `cache` boolean

## Response `200`

Success. The data object for this endpoint.

- object
  - `success` unknown, required
  - `data` object, required
    - `platform` string: Platform identifier for this response (matches the endpoint's platform).
    - `username` string: Snapchat @handle without @. Canonical account identifier (no handle twin). Echoed on every response, including 404 misses.
    - `url` string: Canonical URL of the item.
    - `displayName` string: Display name of the account. Canonical across profile endpoints (prefer over name).
    - `bio` string: Profile bio. Canonical across profile endpoints (prefer over description on YouTube).
    - `category` string: Human-readable category label derived from categoryId (e.g. Business Group).
    - `categoryId` string: Snapchat public-profile category string id (e.g. public-profile-category-v3-business-group). Prefer human-readable category.
    - `subcategory` string: Subcategory. Example: "Sports League".
    - `subcategoryId` string: Subcategory id.
    - `followers` integer: Subscriber count from Snapchat's public profile (no subscriberCount twin).
    - `verified` boolean: Whether the resolved profile shows Snapchat's official badge (badge === 1). Only emitted when the handle resolved; a miss is 404 at 0 credits, never verified: false.
    - `badge` integer: Snapchat official badge code: 0/absent = none, 1 = official verified. verified is derived from this — only when a profile resolved.
    - `avatar` string: Profile picture URL (no profilePictureUrl twin).
    - `banner` string: Square hero / cover image URL (no squareHeroImageUrl twin).
    - `snapcode` string: Snapcode URL.
    - `website` string: Absolute https website URL (scheme added when Snapchat omits it, e.g. NBA.com → https://NBA.com).
    - `businessProfileId` string: Business profile id. Example: "ea71b19b-5eb1-4dda-afb8-13ced485f180".
    - `createdAt` string: Profile creation time as ISO-8601 UTC with millisecond precision (…T22:48:15.058Z). The unix twin is raw.creationTimestampMs.
    - `updatedAt` string: Last public-profile update as ISO-8601 UTC milliseconds. The unix twin is raw.lastUpdateTimestampMs.
    - `hasStory` boolean: Has story. Example: false.
    - `hasCuratedHighlights` boolean: Has curated highlights. Example: true.
    - `hasSpotlightHighlights` boolean: Has spotlight highlights. Example: true.
    - `highlights` object[]
      - `highlightId` string: Curated highlight id as a plain UUID string — never a protobuf {value} wrapper or Python dict repr.
      - `storyTitle` string: Highlight title as a plain string (unwrapped from Snapchat's {value} wrapper).
      - `thumbnailUrl` string: Highlight album cover Snapchat publishes. Often matches snapList[0].mediaPreviewUrl; it is Snapchat's cover field, not a firstSnap alias we invent.
      - `snapCount` integer: Number of snaps in snapList for this story/highlight — always equals len(snapList).
      - `snapList` object[]: Array of objects with snapIndex, mediaType, mediaUrl, mediaPreviewUrl, publishedAt, raw.
        - `snapIndex` integer
        - `mediaType` string
        - `mediaUrl` string
        - `mediaPreviewUrl` string
        - `publishedAt` string: Snap publish time as ISO-8601 UTC milliseconds. The unix twin is raw.timestampInSec.
        - `raw` object: Raw upstream payload for advanced use (fields may change). Prefer the normalized top-level fields when available.
          - `snapMediaType` integer
          - `timestampInSec` integer
    - `spotlightHighlights` object[]
      - `id` string: Id of this spotlight highlights item.
      - `title` string: Title of this spotlight highlights item.
      - `description` string: Description of this spotlight highlights item.
      - `thumbnailUrl` string: Highlight album cover Snapchat publishes. Often matches snapList[0].mediaPreviewUrl; it is Snapchat's cover field, not a firstSnap alias we invent.
      - `contentUrl` string: Content url URL.
      - `durationMs` integer: Length in milliseconds.
      - `width` integer: Width in pixels.
      - `height` integer: Height in pixels.
      - `publishedAt` string: Snap publish time as ISO-8601 UTC milliseconds. The unix twin is raw.timestampInSec.
      - `deeplink` string: Deeplink URL.
      - `creator` object: Creator handle or account for this item (platform-specific — e.g. who founded a community, or who cut a clip).
        - `username` string: Snapchat @handle without @. Canonical account identifier (no handle twin). Echoed on every response, including 404 misses.
        - `displayName` string: Display name of the account. Canonical across profile endpoints (prefer over name).
        - `url` string: Canonical URL of the item.
      - `engagement` object: Engagement metrics for the item.
        - `views` integer
        - `shares` integer
        - `comments` integer
        - `boosts` integer
        - `recommends` integer
      - `snapList` object[]: Array of objects with snapIndex, snapId, mediaType, mediaUrl, mediaPreviewUrl, publishedAt.
        - `snapIndex` integer
        - `snapId` string
        - `mediaType` string
        - `mediaUrl` string
        - `mediaPreviewUrl` string
        - `publishedAt` string: Snap publish time as ISO-8601 UTC milliseconds. The unix twin is raw.timestampInSec.
        - `raw` object: Raw upstream payload for advanced use (fields may change). Prefer the normalized top-level fields when available.
          - `snapMediaType` integer
          - `timestampInSec` integer
      - `raw` object: Raw upstream payload for advanced use (fields may change). Prefer the normalized top-level fields when available.
        - `uploadDateMs` integer
    - `relatedAccounts` object[]
      - `username` string: Snapchat @handle without @. Canonical account identifier (no handle twin). Echoed on every response, including 404 misses.
      - `displayName` string: Display name of the account. Canonical across profile endpoints (prefer over name).
      - `url` string: Canonical URL of the item.
      - `avatar` string: Profile picture URL (no profilePictureUrl twin).
      - `verified` boolean: Whether the resolved profile shows Snapchat's official badge (badge === 1). Only emitted when the handle resolved; a miss is 404 at 0 credits, never verified: false.
      - `hasStory` boolean: Has story. Example: true.
      - `hasCuratedHighlights` boolean: Has curated highlights. Example: false.
      - `hasSpotlightHighlights` boolean: Has spotlight highlights. Example: false.
      - `subscribeLink` object: Object with oneLinkBaseUrl, deepLinkUrl, iosAppStoreUrl.
        - `oneLinkBaseUrl` string
        - `deepLinkUrl` string
        - `iosAppStoreUrl` string
    - `raw` object: Raw upstream payload for advanced use (fields may change). Prefer the normalized top-level fields when available.
      - `creationTimestampMs` integer
      - `lastUpdateTimestampMs` integer
    - `mediaUrlsExpireAt` unknown
    - `source` unknown

## Other responses

- `400`: Bad request: wrong platform URL, unknown endpoint, or an invalid parameter value. Not billed.
- `401`: Missing, invalid or revoked API key. Not billed.
- `402`: Not enough credits for this request. Not billed.
- `404`: The resource does not exist or is not public. Not billed.
- `422`: A required parameter is missing or has the wrong type. Not billed.
- `429`: Rate limit reached. Wait for Retry-After seconds. Not billed.
- `502`: The platform could not be reached or returned nothing usable. Retryable, not billed. 503 and 504 use the same envelope.

---

[API](https://skmtc.dev/captapi/apis/captapi-api.md) · [All operations](https://skmtc.dev/captapi/apis/captapi-api/llms.txt) · [OpenAPI document](https://skmtc.dev/captapi/apis/captapi-api/revisions/c9b9ac5ff1bd?raw)
