# Snapchat Scraper: Profile Spotlight Story Lens Hashtag Email (`memo23/snapchat-scraper`) Actor

Scrape Snapchat profiles, Spotlight clips, Stories, AR Lenses, search/hashtag feeds — all in one actor. Extract emails, phones and social handles from bios. AI titles, scene descriptions, audio transcripts, viewer comments, related-clip feeds. Pure HTTP. 31 fields. JSON + CSV.

- **URL**: https://apify.com/memo23/snapchat-scraper.md
- **Developed by:** [Muhamed Didovic](https://apify.com/memo23) (community)
- **Categories:** Social media, Lead generation, Agents
- **Stats:** 7 total users, 3 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.75 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Snapchat Profile, Spotlight, Story, Lens & Hashtag Scraper

<p align="center">
  <img src="readme-stuff/logo.svg" alt="Snapchat Scraper" width="220" />
</p>

All-in-one Snapchat scraper — paste any mix of URL kinds in the same input list and the actor auto-classifies each one:

| Input | Row type emitted |
|---|---|
| **Profile URL** — `/@{u}`, `/add/{u}`, or bare `username` | profile row: bio, subscribers, AR Lenses, live 24h story, all Stories, all Spotlights with AI titles + keywords + scene descriptions + detected language + viewer comments, plus a **`contacts` panel (emails, phones, social handles, link aggregators)** |
| **Spotlight URL** — `/spotlight/{id}` | spotlight row: that clip + **full audio transcript** + **25 "more like this" related clips** + the clip's own comment thread |
| **Lens URL** — `/lens/{uuid}` or `/unlock?uuid={uuid}` | lens row: AR Lens detail + creator search tags + **12 related Lenses** + Spotlight clips that use this Lens |
| **Search / hashtag URL** — `/explore/{query}` (or `#hashtag`) | search row: matching Spotlights, creators, Lenses, Discover episodes, places and topics — all in one normalised payload |

One row per URL. JSON + CSV.

> Pure HTTP. No Puppeteer, no Playwright, no headless Chromium, no third-party CAPTCHA solvers.

---

### How it works

<p align="center">
  <img src="readme-stuff/how-it-works-snapchat.svg" alt="How it works" width="100%" />
</p>

1. **Input.** Paste any mix of:
   - Profile URLs — `https://www.snapchat.com/@fcbayern` or `https://www.snapchat.com/add/fcbayern`
   - Spotlight clip URLs — `https://www.snapchat.com/spotlight/{shareId}` (or the canonical long form `/@{username}/spotlight/{shareId}`)
   - Lens URLs — `https://www.snapchat.com/lens/{uuid}` or `https://www.snapchat.com/unlock?type=SNAPCODE&uuid={uuid}`
   - Search / hashtag URLs — `https://www.snapchat.com/explore/{query}`
   - Bare usernames — `fcbayern` or `@fcbayern`
   - Bare hashtags — `#UCL`
   - Bare lens UUIDs — `8124c89bb79642518622ddebb088ccc0`

2. **Process.** Server-side resolve, fetch, extract and normalise. No browser overhead.

3. **Output.** One row per URL — a profile row, spotlight-clip row, lens row, or search row — written to the Apify dataset.

---

### Input

Field | Type | Required | Notes
--- | --- | --- | ---
`profileUrls` | `string[]` | yes | Any mix of profile URLs (`/add/{u}`, `/@{u}`, bare usernames), Spotlight URLs (`/spotlight/{id}`), Lens URLs (`/lens/{uuid}` or `/unlock?uuid=...`), and search/hashtag URLs (`/explore/{q}` or `#hashtag`). Auto-classified. Default includes a profile, a Spotlight clip, a Lens, and a hashtag search.
`maxItems` | `integer` | no | Safety cap on how many URLs from the list get processed. One row per URL = one paid output record. Default `1000`. Free-tier users are capped at `100`.
`includeSpotlightComments` | `boolean` | no | Include the public viewer-comments thread under each Spotlight (default `true`). Turn OFF for compact rows / CSV-friendly exports / PII-light workflows. Comments typically run 300–500 per profile and are the heaviest field — disabling cuts row size by ~45%. The `spotlightComments[][]` shape is preserved (empty arrays), so downstream code that indexes by spotlight position keeps working.
`maxCommentsPerSpotlight` | `integer` | no | When `> 0`, keeps only the top-N comments per Spotlight by Snapchat's ranking score. Default `0` (no limit). Useful for sentiment analysis when you only need top engagement.
`maxConcurrency` / `minConcurrency` | `integer` | no | Per-actor parallelism. Default `5` / `1`.
`maxRequestRetries` | `integer` | no | Retries before a profile is given up. Default `5`.
`proxy` | object | no | Default: **off** (Snapchat profiles aren't gated). Enable a residential pool only if you hit rate limits on a very large input list.

#### Example input

Mix any URL kinds freely — auto-classified.

```json
{
  "profileUrls": [
    "https://www.snapchat.com/add/fcbayern",
    "@kyliejenner",
    "https://www.snapchat.com/spotlight/W7_EDlXWTBiXAEEniNoMPwAAYamRxY2h6Znl4AZ34_8b_AZ34_5HDAAAAAQ",
    "https://www.snapchat.com/lens/8124c89bb79642518622ddebb088ccc0",
    "https://www.snapchat.com/explore/UCL",
    "#fcbarcelona"
  ],
  "maxItems": 50,
  "maxConcurrency": 5,
  "includeSpotlightComments": true,
  "maxCommentsPerSpotlight": 0,
  "proxy": { "useApifyProxy": false }
}
````

Yields **6 rows**: 2 profile rows (Bayern + Kylie Jenner, each with a `contacts` panel), 1 Spotlight clip row (with audio transcript + 25 related clips), 1 Lens row (FC Barcelona AR lens + 12 related lenses), and 2 search rows (one per query — each aggregating ~24 matching Spotlights, ~5 creators and ~24 lenses).

#### Comment-toggle cheat sheet (measured on fcbayern, 25 spotlights)

`includeSpotlightComments` | `maxCommentsPerSpotlight` | Comments kept | Row size
\--- | --- | --- | ---
`true` (default) | `0` (default) | all 467 | ~322 KB
`true` | `5` | top 125 by ranking | ~218 KB
`true` | `20` | top ~400 by ranking | ~290 KB
`false` | — | 0 (empty threads) | ~177 KB

***

### Output schema

Four row shapes, distinguished by the `rowType` field:

- `rowType: "profile"` — emitted for profile URLs. Includes a `contacts` panel.
- `rowType: "spotlight"` — emitted for Spotlight clip URLs. Includes audio transcript + related-feed.
- `rowType: "lens"` — emitted for Lens URLs. Includes 12 related lenses + clips using this lens.
- `rowType: "search"` — emitted for `/explore/{query}` URLs and bare `#hashtags`. Aggregates matching spotlights, creators, lenses, episodes, places and topics.

> **Eats five competitor SKUs.** This actor folds the use cases of *Profile Scraper*, *Spotlight Clip Scraper*, *Email Scraper*, *Lens Scraper*, and *Hashtag/Discovery Scraper* — five separately-sold sister products on the Apify marketplace — into a single multi-URL-aware actor. And it surfaces fields that *none* of them expose: Snapchat's AI-generated Spotlight titles & scene descriptions, per-clip detected-language scores, audio-transcription URLs on Story snaps, full WebVTT audio transcripts, 25-clip related-feed, viewer comment threads.

#### Profile-level (top-level row)

```jsonc
{
  "profileUrl":            "https://www.snapchat.com/@fcbayern",
  "username1":             "FC Bayern",                       // display name
  "username2":             "fcbayern",                        // handle
  "profileImageUrl":       "https://cf-st.sc-cdn.net/…",
  "profileDescription":    "",                                // creator bio (when set)
  "profileLocation":       "Munich, Bavaria, Germany",
  "subscribers":           902000,                            // integer
  "category":              "Sports Team",
  "websiteUrl":            "https://fcbayern.com",
  "snapcodeImageUrl":      "https://app.snapchat.com/…",
  "badge":                 1,                                 // verified badge code
  "sameAsLinks":           [],                                // external profile links
  "creationTimestampMs":   "1557950746979",
  "lastUpdateTimestampMs": "1778352327000",

  "hasStory":              false,                             // is a live 24h story posted right now?
  "businessProfileId":     "f035a3c6-9e43-4a23-a160-…",       // UUID for joining datasets
  "publisherType":         null,
  "primaryColor":          null,                              // brand theme hex, if set
  "squareHeroImageUrl":    null,                              // wide hero banner, if set
  "pageDescription":       "FC Bayern is on Snapchat! (@fcbayern) | 902.0k Subscribers | Munich, Bavaria, Germany …",
  "oneLinkUrl":            "https://click.snapchat.com/aVHG?…", // universal mobile deeplink
  "ogImageUrl":            "https://us-east1-aws.api.snapchat.com/web-capture/…",

  "relatedAccounts": [                                        // Snapchat's curated affinity list
    { "username": "juventus",        "title": "Juventus",              "badge": 1, "snapcodeImageUrl": null },
    { "username": "mancityofficial", "title": "Man City",              "badge": 1, "snapcodeImageUrl": null },
    { "username": "chelseafc",       "title": "Chelsea Football Club", "badge": 1, "snapcodeImageUrl": null }
  ],

  "liveStory":         { /* current 24h story — see below */ },
  "lenses":            [ /* AR Lenses tab — see below */ ],
  "stories":           [ /* see below */ ],
  "spotlights":        [ /* see below */ ],
  "spotlightComments": [ /* per-spotlight viewer comments — see below */ ],

  "contacts": {                                                // see "Contacts" section below
    "emails":         ["press@example.com"],
    "phones":         ["+498912345678"],
    "socialHandles": {
      "instagram":  "fcbayern",
      "tiktok":     "fcbayern",
      "youtube":    "fcbayerntv",
      "twitter":    "fcbayern",
      "facebook":   "FCBayern",
      "telegram":   null
    },
    "linktreeUrls":   ["https://linktr.ee/…"],
    "websiteUrls":    ["https://fcbayern.com", "https://linktr.ee/…"]
  },

  "scrapedAt":         "2026-05-11T08:21:09.412Z"
}
```

#### `contacts` — emails, phones, social handles extracted from bio + website

We run the profile's `profileDescription`, `websiteUrl`, and `sameAsLinks` through a contact-detection pass and surface:

- **`emails[]`** — every email address found in the bio
- **`phones[]`** — international-style phone numbers (digits-only, with leading `+`)
- **`socialHandles`** — Instagram, TikTok, YouTube, Twitter/X, Facebook, Telegram (bare handles, no `@`). Recognises both full URLs (`instagram.com/brand`) and bio shorthand (`IG: @brand`)
- **`linktreeUrls[]`** — `linktr.ee`, `linkin.bio`, `bio.link`, `beacons.ai`, `allmylinks.com`, `carrd.co` aggregator URLs
- **`websiteUrls[]`** — every http(s) URL found anywhere in the bio

If a creator hasn't put a given channel in their bio, the corresponding field is `null` or `[]`. The fields are always present so downstream code can index without null-guarding.

#### `stories[]` — curated highlight collections (chronological)

```jsonc
{
  "storyType":           3,
  "storyId":             "",
  "storyTitle":          "",
  "storySubtitle":       null,
  "emoji":               null,
  "thumbnailUrl":        "https://cf-st.sc-cdn.net/d/BvC2b4GL…",
  "canonicalUrlSuffix":  null,
  "videoTrackUrl":       null,
  "snapList": [
    {
      "snapId":              "",
      "snapMediaType":       1,
      "mediaUrl":            "https://cf-st.sc-cdn.net/d/…",
      "mediaPreviewUrl":     "https://cf-st.sc-cdn.net/d/…",
      "overlayUrl":          null,
      "attachmentUrl":       null,
      "timestampInSec":      "1778311147",
      "snapTitle":           null,
      "snapSubtitles":       null,
      "lat":                 null,        // geo-tag if the snap was tagged with a location
      "lng":                 null,
      "isSponsored":         null,
      "audioTranscriptionUrl": null       // Snapchat-hosted WebVTT of the spoken audio, if available
    }
    // … up to ~15 snaps per story
  ]
}
```

#### `spotlights[]` — single-clip Spotlight posts with engagement + AI enrichments

```jsonc
{
  "storyId":         "W7_EDlXWTBiXAEEn…",
  "thumbnailUrl":    "https://bolt-gcdn.sc-cdn.net/bp/…",
  "description":     "🟥😤🟥 What we need from our fans against PSG 🤜🤛 #UCL #FCBPSG",
  "hashtags":        ["#UCL", "#FCBPSG"],
  "timestampInSec":  "1777998991",
  "uploadDateMs":    "1777998991811",
  "durationMs":      "44170",
  "width":           540,
  "height":          960,
  "mediaUrl":        "https://bolt-gcdn.sc-cdn.net/bp/…",
  "mediaPreviewUrl": "https://bolt-gcdn.sc-cdn.net/bp/…",
  "contentUrl":      "https://bolt-gcdn.sc-cdn.net/bp/…",
  "deeplink":        "https://click.snapchat.com/aVHG?…",

  // Engagement
  "viewCount":       "15849",
  "shareCount":      "94",
  "commentCount":    "67",
  "boostCount":      "1455",
  "recommendCount":  "130",

  // On-screen text + AI enrichments — exclusive to this actor
  "embeddedTextCaption": null,
  "aiTitle":         "FC Bayern Players Urge Fans to Wear Red & Bring Energy for Champions League Match",
  "aiDescription":   "Athletes discussing fan engagement in soccer.",
  "aiKeywords": [
    "Bayern Munich training", "football fan energy", "Bayern Munich news",
    "football motivation", "matchday tips"
    // … up to ~25 LLM tags per clip
  ],
  "contentKeywords": ["athlete training", "soccer", "fan engagement", "football", "team support"],
  "detectedLanguages": [{ "languageCode": "de", "score": 0.9259 }],

  // Linked sounds / business profile cards attached to the clip
  "contextCards": [
    { "contextType": 2, "title": "Original Sound", "subtitle": "fcbayern", "url": null,                                       "snapcodeUrl": null,                                                                       "thumbnailUrl": "https://cf-st.sc-cdn.net/d/…",       "hasBadge": false, "id": "108293712385" },
    { "contextType": 3, "title": "FC Bayern",      "subtitle": "fcbayern", "url": "https://www.snapchat.com/@fcbayern",       "snapcodeUrl": "https://app.snapchat.com/web/deeplink/snapcode?username=fcbayern&type=SVG&bitmoji=enable", "thumbnailUrl": "https://cf-st.sc-cdn.net/aps/bolt/…", "hasBadge": true,  "id": "f035a3c6-9e43-4a23-a160-701dec6bb12b" }
  ]
}
```

#### `lenses[]` — the AR Lenses tab on the profile

```jsonc
{
  "lensName":               "FC Barcelona",
  "lensCreatorDisplayName": "FC Barcelona",
  "lensCreatorUsername":    null,
  "iconUrl":                "https://bolt-gcdn.sc-cdn.net/3/RBXv7yxQeo4VeQLNNAJmM?…",
  "previewImageUrl":        "https://lens-preview-storage.storage.googleapis.com/previewmedia/preview_thumbnail/…webp",
  "previewVideoUrl":        "https://lens-storage.storage.googleapis.com/previewvideo/…",
  "unlockUrl":              "https://www.snapchat.com/unlock/?type=SNAPCODE&uuid=8124c89bb79642518622ddebb088ccc0&metadata=01",
  "isOfficialSnapLens":     false,
  "lastUpdatedEpoch":       1777434016
}
```

#### `liveStory` — the creator's currently-live 24-hour ephemeral story (or `null`)

Same shape as a `stories[]` entry, but the content **disappears 24 hours after posting** — scrape it now or lose it. `storyType` is typically `5` for the live story (vs `3` for curated highlights). FC Barcelona had **32 active snaps** within the last 14 hours at the time of writing.

#### `spotlightComments[][]` — public viewer comments under each Spotlight clip

A 2-D array indexed by Spotlight position. `spotlightComments[i]` is the comment thread under `spotlights[i]`.

```jsonc
[
  // comments under spotlights[0]:
  [
    {
      "snapId":                "W7_EDlXWTBiXAEEniNoMPwAA…",
      "text":                  "Hala madrid",
      "authorDisplayName":     "Oswald🇮🇪⚽️✝️",
      "authorBitmojiAvatarId": "105791014945_7-s5",
      "timestampMs":           "1778424523857",
      "threadedReplyCount":    4,
      "rankingScore":          1812,
      "reactions":             [{ "reactTypeId": "1", "reactCount": "10" }],
      "totalReactions":        10
    }
    // … typically 15–25 top-level comments per spotlight on active profiles
  ]
]
```

Real volume from a single FC Barcelona scrape: **331 comments across 16 spotlights**. Bayern Munich: **467 comments across 25 spotlights**.

#### Spotlight clip row (`rowType: "spotlight"`)

Emitted when the input URL is a Spotlight clip (`/spotlight/{id}` or `/@{u}/spotlight/{id}`).

```jsonc
{
  "rowType":           "spotlight",
  "spotlightUrl":      "https://www.snapchat.com/spotlight/W7_EDl…",
  "storyId":           "W7_EDlXWTBiXAEEniNoMPwAA…",
  "shareId":           "W7_EDlXWTBiXAEEniNoMPwAA…",
  "creator": {
    "username":      "fcbarcelona",
    "displayName":   "FC Barcelona",
    "followerCount": "0",
    "websiteUrl":    null
  },

  // Same clip-level fields as a profile-row's spotlights[] entry:
  "thumbnailUrl":    "https://bolt-gcdn.sc-cdn.net/bp/…",
  "description":     "#fcbarcelona",
  "hashtags":        ["#fcbarcelona"],
  "uploadDateMs":    "1778418164840",
  "durationMs":      "9930",
  "width":           540,
  "height":          960,
  "mediaUrl":        "https://bolt-gcdn.sc-cdn.net/bp/…",
  "mediaPreviewUrl": "https://bolt-gcdn.sc-cdn.net/bp/…",
  "contentUrl":      "https://bolt-gcdn.sc-cdn.net/bp/…",
  "deeplink":        "https://click.snapchat.com/aVHG?…",
  "viewCount":       "16408",
  "shareCount":      "97",
  "commentCount":    "93",
  "boostCount":      "2751",
  "recommendCount":  "305",
  "embeddedTextCaption": null,

  // AI enrichments (same shape as in profile-row spotlights):
  "aiTitle":           "FC Barcelona Players Celebrate Birthday with Teammates",
  "aiKeywords":        [ /* up to ~25 LLM tags */ ],
  "aiDescription":     "Athletes discussing fan engagement in soccer.",
  "contentKeywords":   ["athlete training", "soccer", "fan engagement"],
  "detectedLanguages": [{ "languageCode": "en", "score": 0.9921 }],
  "contextCards":      [ /* linked sound + business profile */ ],

  // SPOTLIGHT-URL EXCLUSIVES (not available from the profile page):
  "transcriptUrl": "https://bolt-gcdn.sc-cdn.net/3/pLovkAlk…vtt?…",
  "transcript":    "Hey coolers, it's Olivia Rodrigo and I am wishing the FC Barcelona team a successful El Clasico. Forza Barça!",
  "comments":      [ /* 22 comments under THIS clip, flat list */ ],
  "relatedSpotlights": [
    /* up to 25 "more like this" clips, each a full SnapchatSpotlight
       object with its own AI title / keywords / detected language
       / engagement stats / context cards. Snapchat ranks them by
       relevance to the input clip. */
  ],

  "scrapedAt": "2026-05-11T08:21:09.412Z"
}
```

**Why this is exclusive:** the WebVTT audio transcript and the 25-clip related-feed are only present on the Spotlight clip page. Scraping the creator's profile gives you the same clip's metadata + engagement + AI enrichments — but no transcript and no related-feed.

#### Lens row (`rowType: "lens"`)

Emitted from `/lens/{uuid}` or `/unlock?uuid={uuid}` URLs (bare 32-char hex UUIDs are also auto-canonicalised).

```jsonc
{
  "rowType":                "lens",
  "lensUrl":                "https://www.snapchat.com/lens/8124c89bb79642518622ddebb088ccc0",
  "scannableUuid":          "8124c89bb79642518622ddebb088ccc0",
  "lensId":                 "53181080886",
  "lensName":               "FC Barcelona",
  "lensCreatorDisplayName": "FC Barcelona",
  "lensCreatorUsername":    "fcbarcelona",
  "creatorProfileUrl":      "https://www.snapchat.com/@fcbarcelona",
  "iconUrl":                "https://bolt-gcdn.sc-cdn.net/3/…",
  "previewImageUrl":        "https://lens-preview-storage.storage.googleapis.com/…webp",
  "previewVideoUrl":        "https://lens-storage.storage.googleapis.com/previewvideo/…",
  "unlockUrl":              "https://snapchat.com/unlock/?type=SNAPCODE&uuid=…&metadata=01",
  "creatorSearchTags":      ["event", "football", "game", "sport", "Barcelona", "FCB"],
  "isOfficialSnapLens":     false,
  "lastUpdatedEpoch":       1777434016,
  "moreLenses":             [ /* up to 12 Snapchat-curated related Lenses */ ],
  "spotlightsUsingThisLens":[ /* Spotlight clips that USE this Lens — often empty for brand lenses, populated for trending creator lenses */ ]
}
```

#### Search row (`rowType: "search"`)

Emitted from `/explore/{query}` URLs and bare `#hashtags`. Aggregates all 6 of Snapchat's search sections into a single normalised payload.

```jsonc
{
  "rowType":   "search",
  "searchUrl": "https://www.snapchat.com/explore/UCL",
  "query":     "UCL",

  "spotlights": [
    /* up to 24 Spotlight clips matching the query — same shape as the
       per-profile spotlights[] entries (engagement stats, hashtags,
       content keywords, media URLs). AI enrichments are not on the search
       payload — use the Spotlight URL row type if you need aiTitle etc. */
  ],

  "creators": [
    {
      "username":          "ucl",
      "title":             "ᴬ ᴼ ᴬ 🌪️",
      "badge":             null,
      "subscriberCount":   805,
      "bio":               "🐎 …",
      "profilePictureUrl": "https://cf-st.sc-cdn.net/aps/bolt/…",
      "snapcodeImageUrl":  null,
      "businessProfileId": "cfa17514-24d6-4e2d-9def-…"
    }
  ],

  "lenses": [
    {
      "lensName":               "UCL Final 2020",
      "lensCreatorDisplayName": "Nabhan Mohtesham",
      "lensCreatorUsername":    null,
      "iconUrl":                "https://lens-storage.storage.googleapis.com/png/…",
      "previewImageUrl":        null,
      "previewVideoUrl":        null,
      "unlockUrl":              "https://www.snapchat.com/unlock/?type=SNAPCODE&uuid=…",
      "isOfficialSnapLens":     false,
      "lastUpdatedEpoch":       null
    }
  ],

  "episodes":  [ { "title": "Beckham pulled this off for his first UCL match with PSG 😳", "publisherName": null } ],
  "places":    [ { "title": "Champions League Stadium", "subtitle": "London, UK" } ],
  "topics":    ["ucl"],

  "counts": { "spotlights": 24, "creators": 4, "lenses": 24, "episodes": 12, "places": 10, "topics": 1 }
}
```

#### What makes this richer than the competition

We surveyed all 17 Snapchat actors on the Apify marketplace (May 2026):

Capability | Competitor actors | **This actor**
\--- | --- | ---
Per-profile top-level fields | ~12 | **31**
Per-Spotlight fields | ~6 | **25**
Per-Spotlight-clip-row fields | n/a (separate SKU) | **33** (incl. transcript + 25-clip related feed)
Per-Story-snap fields | 4–5 | **13** (incl. geo, on-screen text, audio-transcript URL)
AI-generated `aiTitle` per Spotlight | ❌ | ✅ (15 / 16 clips for active creators)
AI-generated `aiKeywords` (up to 25) | ❌ | ✅
AI scene `aiDescription` | ❌ | ✅
Snapchat content-classification keywords | ❌ | ✅
Per-clip `detectedLanguages` with confidence | ❌ | ✅
**Public viewer comments under each Spotlight** | ❌ | ✅ (300–500 per profile)
**Live 24h ephemeral story snaps** | Separate sister product | ✅ (folded into the same row)
**AR `lenses[]` panel** | 1 of 17 actors | ✅
Snapchat's "Related Accounts" affinity panel | 2 of 17 actors | ✅
Live-story flag (`hasStory`) | ❌ | ✅
Business profile UUID (join key) | ❌ | ✅
Universal deeplink + OG share image | ❌ | ✅
Spotlight `contextCards` (linked sound + biz card) | ❌ | ✅
**Single Spotlight clip URL → row (separate product)** | `easyapi/snapchat-spotlight-detail-scraper`, `crawlerbros/snapchat-spotlight-video-downloader` | ✅ (folded into the same actor)
**Full WebVTT audio transcript** of a Spotlight clip | ❌ | ✅ (`transcript` + `transcriptUrl`)
**25-clip "more like this" related-feed** per Spotlight URL | ❌ | ✅ (with full AI enrichment per related clip)
**Email / phone / social-handle extraction** from profile bios | `easyapi/snapchat-email-scraper` (740 users — separate product) | ✅ (folded into every profile row's `contacts` panel)
**Lens URL → row (separate product)** | ❌ | ✅ (incl. 12 related lenses + clips using the lens)
**Search / hashtag URL → row (separate product)** | `crawlerbros/snapchat-hashtag-scraper` (7 users), `easyapi/snapchat-popular-accounts-scraper` (92 users — separate products) | ✅ (folded into one search row aggregating 6 sections)

***

### Pricing

Two-tier pay-per-event:

Event | When | Suggested rate
\--- | --- | ---
`outputrecord` | Once per dataset row pushed (profile, spotlight-clip, lens, or search row) | configured on the actor page
`additional-data` | Once per nested item inside a row — see counting rules below | **$0.75 per 1,000 items** ($0.00075 each)

#### What counts as `additional-data`

Row type | Items billed
\--- | ---
**Profile row** | every story + every spotlight clip + every AR Lens + every viewer comment + every related-account entry + every live-24h-story snap
**Spotlight-clip row** | every viewer comment under THIS clip + every entry in the 25-clip related-feed
**Lens row** | every related lens (`moreLenses`) + every clip that uses this lens (`spotlightsUsingThisLens`)
**Search / hashtag row** | every matching Spotlight + every matching creator + every matching Lens + every Discover episode + every place + every topic

#### Real-world cost preview

Measured on the default 4-URL prefill (1 profile + 1 spotlight + 1 lens + 1 search):

Row | Base `outputrecord` | Additional items | `additional-data` cost
\--- | --- | --- | ---
profile (`@fcbayern`) | 1× | **511** (16 stories + 25 spotlights + 467 comments + 3 related) | $0.383
spotlight (FC Bayern UCL clip) | 1× | **47** (22 comments + 25 related) | $0.035
lens (FC Barcelona AR) | 1× | **12** (12 moreLenses) | $0.009
search (`UCL`) | 1× | **75** (24 spotlights + 4 creators + 24 lenses + 12 episodes + 10 places + 1 topic) | $0.056
**Run total** | **4×** outputrecord | **645** | **$0.484** + base

#### Why two tiers

The base `outputrecord` rate keeps simple per-URL pricing predictable. The `additional-data` event aligns cost with delivered value — a profile row with 467 viewer comments and 25 AI-tagged Spotlight clips costs more than an empty-bio profile, exactly as it should.

Buyers who want to cap costs can turn `includeSpotlightComments` off (drops ~300–500 items per profile) or set `maxCommentsPerSpotlight: N` to keep only the top-N comments per Spotlight. Both knobs reduce the `additional-data` bill proportionally.

Free-tier users are capped at 100 rows per run (the `outputrecord` ceiling). The `additional-data` event has no separate cap.

***

### Pagination & limits

For each profile row, the actor returns **the first batch of items per tab** — the same set Snapchat itself shows on the anonymous profile landing page:

| Tab | Typical first-batch size |
|---|---|
| Stories (curated highlights) | up to **16** |
| Spotlight clips | up to **~25** |
| Lenses (AR) | typically 0–12 — full list |
| Live 24h story | all snaps in the active window |
| Related accounts | 3 (Snapchat's hard cap) |
| Spotlight comments per clip | all top-level comments (~15–30) |

**Why first-batch only:** Snapchat's profile page is server-rendered. The pagination cursors that would load older content (`curatedHighlightsCursor`, `spotlightHighlightsCursor`, `lensCursor`) point to an internal backend (`ingress-us-east1-aws.api.snapchat.com/web-stories-api`) that requires a server-side `SC-LCA-1` token Snapchat does not expose publicly. Loading deeper history would require an authenticated Snapchat account — out of scope for a public-data scraper.

This is the **same ceiling every other Snapchat scraper on the Apify marketplace hits** — none paginate. For most accounts the first batch covers all recent activity; for heavily-active creators with 50+ archived stories, older content is not retrievable without auth.

### Notes & limitations

- **Public profiles only.** Private accounts, age-gated content, and deactivated users are skipped and logged.
- **Stories vs spotlights.** `stories[]` are chronological collections of snaps a creator pinned to their profile. `spotlights[]` are single-clip TikTok-style snaps with engagement metrics (views, shares, comments).
- **Subscribers** are returned as an integer.
- **Category** is the human label that Snapchat displays on the profile (e.g. `"Sports Team"`).
- **Anti-bot.** A multi-stack fallback layer is wired up so the actor keeps working if Snapchat tightens up over time — no input changes needed on your end.

***

### Support

Issues, feature requests, or custom output shapes? Open a ticket on the actor's Apify page or message the maintainer.

# Actor input Schema

## `profileUrls` (type: `array`):

Paste any mix of:
• Profile URLs — `https://www.snapchat.com/add/{u}` or `/@{u}` (or just `username`)
• Spotlight clip URLs — `https://www.snapchat.com/spotlight/{id}`
• Lens URLs — `https://www.snapchat.com/lens/{uuid}` or `/unlock?uuid={uuid}`
• Search / hashtag URLs — `https://www.snapchat.com/explore/{query}` (or just `#hashtag`)

Each entry is auto-classified and the scraper emits the matching row type — one row per URL. Profile rows include AR Lenses, live story, Stories, Spotlights with AI titles + audio-transcription URLs, viewer comments and a contacts panel. Spotlight rows include the full audio transcript + 25-clip 'more like this' feed. Lens rows include the AR Lens detail + clips using it. Search rows aggregate matching spotlights, creators, lenses, episodes, places and topics.

## `maxItems` (type: `integer`):

Safety cap on how many URLs from the list above will actually be processed. One row per URL = one paid output record. Useful when you paste a big list and want to test cost on the first N before running the full job.

## `includeSpotlightComments` (type: `boolean`):

Include the public viewer-comments thread under each Spotlight clip — reply text, reactions, author display name + bitmoji ID, timestamp, threaded reply count, ranking score. Typically 300–500 comments per profile and the heaviest field in the row. Turn OFF for compact rows / CSV-friendly exports / PII-light workflows.

## `maxCommentsPerSpotlight` (type: `integer`):

When > 0, keeps only the top-N comments per Spotlight by Snapchat's ranking score. Useful for sentiment analysis when you only need top engagement. Ignored when the toggle above is OFF.

## `maxConcurrency` (type: `integer`):

Maximum number of profile pages processed in parallel.

## `minConcurrency` (type: `integer`):

Minimum number of profile pages processed in parallel.

## `maxRequestRetries` (type: `integer`):

Number of retries before a failed request is given up.

## `proxy` (type: `object`):

Apify proxy settings. Snapchat's public profile pages are NOT Cloudflare-gated and respond cleanly to direct requests — leave proxy off for cheapest runs. Enable a residential pool only if you hit rate limits on a very large input list.

## Actor input object example

```json
{
  "profileUrls": [
    "https://www.snapchat.com/add/fcbayern",
    "https://www.snapchat.com/spotlight/W7_EDlXWTBiXAEEniNoMPwAAYamRxY2h6Znl4AZ34_8b_AZ34_5HDAAAAAQ",
    "https://www.snapchat.com/lens/8124c89bb79642518622ddebb088ccc0",
    "https://www.snapchat.com/explore/UCL"
  ],
  "maxItems": 1000,
  "includeSpotlightComments": true,
  "maxCommentsPerSpotlight": 0,
  "maxConcurrency": 5,
  "minConcurrency": 1,
  "maxRequestRetries": 5,
  "proxy": {
    "useApifyProxy": false
  }
}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "profileUrls": [
        "https://www.snapchat.com/add/fcbayern",
        "https://www.snapchat.com/spotlight/W7_EDlXWTBiXAEEniNoMPwAAYamRxY2h6Znl4AZ34_8b_AZ34_5HDAAAAAQ",
        "https://www.snapchat.com/lens/8124c89bb79642518622ddebb088ccc0",
        "https://www.snapchat.com/explore/UCL"
    ],
    "proxy": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("memo23/snapchat-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "profileUrls": [
        "https://www.snapchat.com/add/fcbayern",
        "https://www.snapchat.com/spotlight/W7_EDlXWTBiXAEEniNoMPwAAYamRxY2h6Znl4AZ34_8b_AZ34_5HDAAAAAQ",
        "https://www.snapchat.com/lens/8124c89bb79642518622ddebb088ccc0",
        "https://www.snapchat.com/explore/UCL",
    ],
    "proxy": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("memo23/snapchat-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "profileUrls": [
    "https://www.snapchat.com/add/fcbayern",
    "https://www.snapchat.com/spotlight/W7_EDlXWTBiXAEEniNoMPwAAYamRxY2h6Znl4AZ34_8b_AZ34_5HDAAAAAQ",
    "https://www.snapchat.com/lens/8124c89bb79642518622ddebb088ccc0",
    "https://www.snapchat.com/explore/UCL"
  ],
  "proxy": {
    "useApifyProxy": false
  }
}' |
apify call memo23/snapchat-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=memo23/snapchat-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Snapchat Scraper: Profile Spotlight Story Lens Hashtag Email",
        "description": "Scrape Snapchat profiles, Spotlight clips, Stories, AR Lenses, search/hashtag feeds — all in one actor. Extract emails, phones and social handles from bios. AI titles, scene descriptions, audio transcripts, viewer comments, related-clip feeds. Pure HTTP. 31 fields. JSON + CSV.",
        "version": "0.1",
        "x-build-id": "wPwhyVsDDSAOnWEha"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/memo23~snapchat-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-memo23-snapchat-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/memo23~snapchat-scraper/runs": {
            "post": {
                "operationId": "runs-sync-memo23-snapchat-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/memo23~snapchat-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-memo23-snapchat-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "profileUrls"
                ],
                "properties": {
                    "profileUrls": {
                        "title": "Snapchat URLs, usernames or #hashtags",
                        "type": "array",
                        "description": "Paste any mix of:\n• Profile URLs — `https://www.snapchat.com/add/{u}` or `/@{u}` (or just `username`)\n• Spotlight clip URLs — `https://www.snapchat.com/spotlight/{id}`\n• Lens URLs — `https://www.snapchat.com/lens/{uuid}` or `/unlock?uuid={uuid}`\n• Search / hashtag URLs — `https://www.snapchat.com/explore/{query}` (or just `#hashtag`)\n\nEach entry is auto-classified and the scraper emits the matching row type — one row per URL. Profile rows include AR Lenses, live story, Stories, Spotlights with AI titles + audio-transcription URLs, viewer comments and a contacts panel. Spotlight rows include the full audio transcript + 25-clip 'more like this' feed. Lens rows include the AR Lens detail + clips using it. Search rows aggregate matching spotlights, creators, lenses, episodes, places and topics.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxItems": {
                        "title": "Max URLs to scrape",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Safety cap on how many URLs from the list above will actually be processed. One row per URL = one paid output record. Useful when you paste a big list and want to test cost on the first N before running the full job.",
                        "default": 1000
                    },
                    "includeSpotlightComments": {
                        "title": "Include public Spotlight comments",
                        "type": "boolean",
                        "description": "Include the public viewer-comments thread under each Spotlight clip — reply text, reactions, author display name + bitmoji ID, timestamp, threaded reply count, ranking score. Typically 300–500 comments per profile and the heaviest field in the row. Turn OFF for compact rows / CSV-friendly exports / PII-light workflows.",
                        "default": true
                    },
                    "maxCommentsPerSpotlight": {
                        "title": "Max comments per Spotlight (0 = no limit)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "When > 0, keeps only the top-N comments per Spotlight by Snapchat's ranking score. Useful for sentiment analysis when you only need top engagement. Ignored when the toggle above is OFF.",
                        "default": 0
                    },
                    "maxConcurrency": {
                        "title": "Max concurrency",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum number of profile pages processed in parallel.",
                        "default": 5
                    },
                    "minConcurrency": {
                        "title": "Min concurrency",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Minimum number of profile pages processed in parallel.",
                        "default": 1
                    },
                    "maxRequestRetries": {
                        "title": "Max request retries",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Number of retries before a failed request is given up.",
                        "default": 5
                    },
                    "proxy": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Apify proxy settings. Snapchat's public profile pages are NOT Cloudflare-gated and respond cleanly to direct requests — leave proxy off for cheapest runs. Enable a residential pool only if you hit rate limits on a very large input list.",
                        "default": {
                            "useApifyProxy": false
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
