# Snapchat User Stories Scraper (`crawlerbros/snapchat-user-stories-scraper`) Actor

Scrape curated highlight stories from public Snapchat profiles. Provide usernames or profile URLs and get direct media URLs, thumbnails, story titles, and creator metadata with one record per snap.

- **URL**: https://apify.com/crawlerbros/snapchat-user-stories-scraper.md
- **Developed by:** [Crawler Bros](https://apify.com/crawlerbros) (community)
- **Categories:** Videos, Social media, Other
- **Stats:** 1 total users, 0 monthly users, 100.0% runs succeeded, 11 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $1.00 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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 User Stories Scraper

Scrape saved story highlights from public Snapchat user profiles. Provide one or more usernames or profile URLs and get direct media URLs, thumbnails, story titles, and creator metadata — one record per individual snap.

### What It Does

For each Snapchat username you provide, the actor:
1. Fetches the public profile page
2. Extracts all curated story highlights (saved story albums)
3. Returns one dataset record per snap (photo or video) across all highlights

No login, cookies, or browser required. Works on any public Snapchat creator profile.

### Supported URL Formats

| Format | Example |
|--------|---------|
| Bare username | `djkhaled` |
| @-prefixed | `@djkhaled` |
| Add URL | `https://www.snapchat.com/add/djkhaled` |
| Profile URL | `https://www.snapchat.com/@djkhaled` |

### Input

| Field | Type | Required | Default | Description |
|-------|------|----------|---------|-------------|
| `usernames` | string[] | Yes | — | One or more usernames or profile URLs |
| `maxSnapsPerUser` | integer | No | 50 | Max snaps to return per user (1–500) |
| `proxyConfiguration` | object | No | null | Apify proxy config (optional) |

**Example input:**

```json
{
  "usernames": ["khaby.lame", "https://www.snapchat.com/add/selenagomez"],
  "maxSnapsPerUser": 50
}
````

### Output

One record per snap pushed to the Apify dataset.

| Field | Type | Description |
|-------|------|-------------|
| `username` | string | Snapchat username |
| `displayName` | string | Full display name |
| `isVerified` | boolean | Whether the account is verified |
| `subscriberCount` | integer | Follower count (public creators only) |
| `bio` | string | Profile bio (when available) |
| `profileUrl` | string | `https://www.snapchat.com/add/{username}` |
| `profilePictureUrl` | string | Avatar image URL (when available) |
| `storyTitle` | string | Story/highlight album name (when set) |
| `highlightId` | string | Unique identifier for the highlight |
| `highlightThumbnailUrl` | string | Cover image of the highlight (when available) |
| `snapIndex` | integer | Position of this snap within the highlight (0-based) |
| `snapId` | string | Unique snap ID (when available) |
| `mediaUrl` | string | Direct CDN URL to the photo or video |
| `mediaPreviewUrl` | string | Thumbnail/preview image URL (when available) |
| `mediaType` | string | `"video"` or `"image"` |
| `postedAt` | string | ISO 8601 UTC timestamp when the snap was posted |
| `isSponsored` | boolean | Whether the snap is sponsored content |
| `scrapedAt` | string | ISO 8601 UTC timestamp of when the data was scraped |

**Example record:**

```json
{
  "username": "khaby.lame",
  "displayName": "Khabane Lame",
  "isVerified": true,
  "subscriberCount": 50000000,
  "profileUrl": "https://www.snapchat.com/add/khaby.lame",
  "storyTitle": "La Monnalisa",
  "highlightId": "b780faa5-87f6-4ee7-8dbb-4658597a0fc9",
  "snapIndex": 0,
  "mediaUrl": "https://cf-st.sc-cdn.net/d/...",
  "mediaPreviewUrl": "https://cf-st.sc-cdn.net/d/...",
  "mediaType": "video",
  "postedAt": "2023-06-04T23:15:12+00:00",
  "scrapedAt": "2026-04-15T10:00:00+00:00"
}
```

### FAQ

**Does it work without a Snapchat account?**
Yes. This actor only scrapes publicly visible profile pages. No login or cookies are required.

**Why is `snapId` sometimes missing?**
Snapchat's curated highlight pages often don't embed the snap ID in the page data. The `mediaUrl` is always present and can be used to identify and download the content.

**Do the media URLs expire?**
Snapchat CDN URLs may expire after some time. Download or cache the media files soon after scraping.

**What about private profiles or regular (non-creator) accounts?**
Private profiles and regular user accounts without public highlights will produce an error record with an explanation. Only public creator profiles with curated highlights return snap data.

**Can I scrape Spotlight videos too?**
Spotlight videos are handled by the sibling [Snapchat Spotlight Video Downloader](https://apify.com/brohub/snapchat-spotlight-video-downloader) actor.

**Will it work on all public profiles?**
The actor works on public creator profiles (`publicProfileInfo` type). Regular user profiles with a `userInfo` structure do not expose public highlights and will return an error record.

# Actor input Schema

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

One or more Snapchat usernames or profile URLs. Accepted formats: bare username (djkhaled), @-prefixed (@djkhaled), add URL (https://www.snapchat.com/add/djkhaled), or profile URL (https://www.snapchat.com/@djkhaled).

## `maxSnapsPerUser` (type: `integer`):

Maximum number of story snaps to extract per user across all their highlights.

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

Optional Apify proxy configuration. Public Snapchat profiles work without proxy; include for resilience.

## Actor input object example

```json
{
  "usernames": [
    "khaby.lame"
  ],
  "maxSnapsPerUser": 20
}
```

# Actor output Schema

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

Dataset containing scraped story snap records

# 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": [
        "khaby.lame"
    ],
    "maxSnapsPerUser": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("crawlerbros/snapchat-user-stories-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": ["khaby.lame"],
    "maxSnapsPerUser": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("crawlerbros/snapchat-user-stories-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": [
    "khaby.lame"
  ],
  "maxSnapsPerUser": 20
}' |
apify call crawlerbros/snapchat-user-stories-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Snapchat User Stories Scraper",
        "description": "Scrape curated highlight stories from public Snapchat profiles. Provide usernames or profile URLs and get direct media URLs, thumbnails, story titles, and creator metadata with one record per snap.",
        "version": "1.0",
        "x-build-id": "YgDlxNejfeBFoxYkk"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/crawlerbros~snapchat-user-stories-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-crawlerbros-snapchat-user-stories-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/crawlerbros~snapchat-user-stories-scraper/runs": {
            "post": {
                "operationId": "runs-sync-crawlerbros-snapchat-user-stories-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/crawlerbros~snapchat-user-stories-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-crawlerbros-snapchat-user-stories-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": [
                    "usernames"
                ],
                "properties": {
                    "usernames": {
                        "title": "Usernames or Profile URLs",
                        "type": "array",
                        "description": "One or more Snapchat usernames or profile URLs. Accepted formats: bare username (djkhaled), @-prefixed (@djkhaled), add URL (https://www.snapchat.com/add/djkhaled), or profile URL (https://www.snapchat.com/@djkhaled).",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxSnapsPerUser": {
                        "title": "Max Snaps Per User",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Maximum number of story snaps to extract per user across all their highlights.",
                        "default": 50
                    },
                    "proxyConfiguration": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Optional Apify proxy configuration. Public Snapchat profiles work without proxy; include for resilience."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
