# Snapchat Scraper - Profiles, Stories & Creator Leads (`scrapesage/snapchat-scraper`) Actor

Extract public Snapchat data at scale: profiles, subscriber counts, public stories, spotlight & curated highlights, AR lenses and related-account creator leads. Scrape by username or profile URL - no login, no API key, no browser. Structured JSON, CSV & Excel. Fast, reliable, MCP & agent-ready.

- **URL**: https://apify.com/scrapesage/snapchat-scraper.md
- **Developed by:** [Scrape Sage](https://apify.com/scrapesage) (community)
- **Categories:** Social media, Lead generation, AI
- **Stats:** 1 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.00 / 1,000 profile scrapeds

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 web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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 Scraper - Profiles, Stories, Spotlight & Leads

Extract **public Snapchat data at scale** - profiles, subscriber counts, public Stories, Spotlight & Curated Highlights, AR Lenses and related-account creator leads - by **username or profile URL**. No login, no API key, no browser. Fast structured JSON/CSV/Excel output, PPE pricing, and MCP / agent-ready.

Most Snapchat scrapers stop at a thin profile card (name + avatar). This one returns the **whole public profile**: identity, verified badge, subscriber count, bio, website, category, business-profile ID, the live public Story, saved Highlights, AR Lenses, **and** the related-account graph you can crawl into a creator network.

### What it does

- **Profiles** - username, display name, verified badge, subscriber count, bio, website, category/subcategory, address, avatar, snapcode, business-profile ID, created/updated dates.
- **Public Stories** - each live snap's media URL, media type (image/video) and timestamp.
- **Highlights** - titled **Curated Highlights** and **Spotlight Highlights**, with thumbnails and their snaps.
- **AR Lenses** - lens name, creator, preview image + video, icon and the public unlock URL.
- **Related accounts** - the accounts Snapchat surfaces on each profile - a ready-made discovery graph.
- **Creator leads (optional)** - a compact, CRM-ready row per profile with a 0-100 `leadScore` for influencer / brand outreach.
- **Discovery crawl (optional)** - follow related accounts and scrape them too, up to a depth you choose, turning a few seed handles into a whole network.

### Input

| Field | Type | Description |
|------|------|-------------|
| `usernames` | array | Handles to scrape - `nba`, `@redbull`, `kimkardashian` (the @ is optional). |
| `startUrls` | array | Full profile URLs - `https://www.snapchat.com/@nba` or `/add/redbull`. |
| `maxResults` | integer | Cap on total profiles per run (default 50; 0 = no limit). |
| `includeStory` | boolean | Include the live public Story (default true). |
| `includeHighlights` | boolean | Include Curated + Spotlight Highlights (default true). |
| `includeLenses` | boolean | Include AR Lenses (default true). |
| `includeRelatedAccounts` | boolean | Include the related-accounts list (default true). |
| `expandRelatedAccounts` | boolean | Crawl related accounts as full profiles (default false). |
| `maxRelatedDepth` | integer | Hops to follow when expanding (default 1, max 4). |
| `outputCreatorLeads` | boolean | Also emit compact `creatorLead` rows with `leadScore` (default false). |
| `maxConcurrency` | integer | Parallel requests (default 5). |
| `proxyConfiguration` | object | Proxy settings; defaults to Apify Residential. |

#### Example input

```json
{
  "usernames": ["nba", "redbull", "spotify"],
  "includeStory": true,
  "includeHighlights": true,
  "includeLenses": true,
  "includeRelatedAccounts": true,
  "outputCreatorLeads": true,
  "maxResults": 50,
  "proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }
}
```

### Output

Each row carries a `type` (`profile` or `creatorLead`). Switch between the **Profiles** and **Creator leads** views in the dataset. Example `profile` (trimmed):

```json
{
  "type": "profile",
  "accountType": "public_profile",
  "username": "nba",
  "profileUrl": "https://www.snapchat.com/@nba",
  "title": "NBA",
  "verified": true,
  "subscriberCount": 3691900,
  "category": "Business Group",
  "bio": "The official NBA",
  "websiteUrl": "https://NBA.com",
  "businessProfileId": "….",
  "createdAt": "2019-05-…Z",
  "storySnapCount": 6,
  "curatedHighlightCount": 16,
  "spotlightHighlightCount": 16,
  "lensCount": 16,
  "relatedAccountCount": 3,
  "story": [{ "mediaType": "image", "mediaUrl": "https://cf-st.sc-cdn.net/…", "timestamp": "2026-…Z" }],
  "curatedHighlights": [{ "title": "2025-26 NBA Finals 🏆", "thumbnailUrl": "…", "snapCount": 4 }],
  "lenses": [{ "name": "NBA Draft", "creatorDisplayName": "NBA", "unlockUrl": "https://www.snapchat.com/unlock/…" }],
  "relatedAccounts": [{ "username": "…", "verified": true, "profileUrl": "https://www.snapchat.com/@…" }]
}
```

### Use cases

- **Influencer & creator research** - subscriber reach, category, verification and website in one pull.
- **Brand / competitor monitoring** - track a brand's public Story, Highlights and Lenses over time.
- **Lead generation** - build outreach lists from `creatorLead` rows and the related-account graph.
- **Social & AR analytics** - study Spotlight, Highlights and Lens output across accounts.

### Use with AI assistants (MCP)

This actor is available over the Apify MCP server, so AI assistants and agents (Claude, ChatGPT, and any MCP client) can call it as a tool - pass usernames and get structured Snapchat data back. See the [Apify MCP docs](https://docs.apify.com/platform/integrations/mcp).

### Agent-ready: autonomous payments (x402 & Skyfire)

This actor is **agent-ready** - AI agents can discover it, run it, and **pay for it autonomously**, with no Apify account and no human in the loop. It uses [pay-per-event](https://docs.apify.com/platform/actors/publishing/monetize/pay-per-event) pricing and [limited permissions](https://docs.apify.com/platform/actors/development/permissions), so it qualifies for Apify's agentic-payment standards:

- **[x402](https://docs.apify.com/platform/integrations/x402)** - an open, HTTP-native payment protocol. Agents pay per run in USDC on the Base network directly through the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp) - no account, no API key.
- **[Skyfire](https://docs.apify.com/platform/integrations/skyfire)** - agent-to-service payments for fully autonomous AI-agent workflows.

Building an AI agent, MCP tool, or autonomous data pipeline? This scraper is ready to plug in and pay as it goes.

### FAQ

**Do I need to log in?** No. This scrapes only public profile pages - no login, cookies or API key.

**What about private / personal accounts?** Regular non-public users expose only a lean identity card (username, display name, snapcode). Public Profiles (creators, brands, public figures) expose the full field set. Private content is never accessible.

**Why are some fields empty?** Personal / celebrity profiles often leave brand fields (category, bio, address, website) blank - those are honestly empty at the source, not missed. Creator and brand profiles populate them.

**Is it reliable?** Yes. Requests retry on a fresh IP, the run self-limits before any platform timeout, and transient blocks end the run gracefully (no crash), so scheduled jobs stay green.

### Legal

Scrapes only publicly available data. You are responsible for using the output in compliance with Snapchat's terms and applicable laws (including GDPR/CCPA where relevant). Not affiliated with or endorsed by Snap Inc.

# Actor input Schema

## `usernames` (type: `array`):

Snapchat usernames / handles to scrape — e.g. "nba", "@redbull", "kimkardashian". The @ is optional. Returns each account's public profile plus (optionally) its public story, highlights, lenses and related accounts. One per row.

## `startUrls` (type: `array`):

Paste full Snapchat profile URLs — e.g. https://www.snapchat.com/@nba or https://www.snapchat.com/add/redbull. Each is normalized and routed automatically. Use this instead of / in addition to usernames. One per row.

## `maxResults` (type: `integer`):

Cap on the total number of profiles scraped across the whole run (including any related accounts discovered when expansion is on). Keeps runs bounded and cheap. Set 0 for no limit (power users only).

## `includeStory` (type: `boolean`):

Include the account's currently-public Story — each snap's media URL, media type (image/video) and timestamp. Stories expire, so this captures whatever is live at scrape time.

## `includeHighlights` (type: `boolean`):

Include the account's saved Highlights: titled Curated Highlights and Spotlight Highlights, each with thumbnails and their snaps.

## `includeLenses` (type: `boolean`):

Include AR Lenses created by / attributed to the account — lens name, creator, preview image & video, icon and the public unlock URL.

## `includeRelatedAccounts` (type: `boolean`):

Include the "related accounts" Snapchat surfaces on each profile (username, title, verified badge, profile URL) — a ready-made network / discovery graph.

## `expandRelatedAccounts` (type: `boolean`):

Follow related accounts and scrape THEM as full profiles too, up to the depth below and the Max results cap. Turns a few seed handles into a whole creator network — great for lead discovery. Off by default to keep runs bounded.

## `maxRelatedDepth` (type: `integer`):

How many hops of related accounts to follow when expansion is on. 1 = only accounts related to your seeds; 2 = their related accounts too; and so on. Higher depth grows fast — the Max results cap always bounds it.

## `outputCreatorLeads` (type: `boolean`):

In addition to full profile records, emit a compact, CRM-ready `creatorLead` row per profile: username, name, subscribers, website, category, business profile ID, profile URL and a 0-100 leadScore. Ideal for influencer / brand outreach lists.

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

Maximum parallel profile requests. Lower it if you see transient blocks; raise it for speed.

## `proxyConfiguration` (type: `object`):

Proxy settings. Snapchat serves public profiles cleanly, but a shared datacenter IP can be rate-limited at scale, so this actor defaults to Apify Residential proxy (blocked requests retry automatically on a fresh IP). You may switch to datacenter for lower cost, or supply your own proxy URLs.

## Actor input object example

```json
{
  "usernames": [
    "nba",
    "redbull"
  ],
  "startUrls": [],
  "maxResults": 50,
  "includeStory": true,
  "includeHighlights": true,
  "includeLenses": true,
  "includeRelatedAccounts": true,
  "expandRelatedAccounts": false,
  "maxRelatedDepth": 1,
  "outputCreatorLeads": false,
  "maxConcurrency": 5,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `results` (type: `string`):

All scraped records in the default dataset — profiles (with story, highlights, lenses and related accounts) and optional creator leads.

# 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 = {
    "usernames": [
        "nba",
        "redbull"
    ],
    "startUrls": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapesage/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 = {
    "usernames": [
        "nba",
        "redbull",
    ],
    "startUrls": [],
}

# Run the Actor and wait for it to finish
run = client.actor("scrapesage/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 '{
  "usernames": [
    "nba",
    "redbull"
  ],
  "startUrls": []
}' |
apify call scrapesage/snapchat-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/NQL9nEUxmH9s4uGBe/builds/bS9bDY7Lk8IwdQQ6c/openapi.json
