# Snapchat Spotlight Scraper - Creator Videos and Metrics (`benthepythondev/snapchat-spotlight-scraper`) Actor

Scrape public Snapchat creator Spotlight videos with media URLs, previews, captions, views, shares, comments, boosts, recommendations and profile metadata.

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

## Pricing

from $2.00 / 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 Spotlight Scraper

Collect public Snapchat Spotlight videos from creator profiles as structured data without a Snapchat login, browser runtime, residential proxy, or external API key. The Snapchat Spotlight Scraper returns media and preview URLs, public engagement metrics, captions, source-generated descriptions and keywords, creator metadata, context cards, timestamps, and stable Spotlight links.

The Actor reads the same server-rendered profile data used by Snapchat's public web experience. It processes up to 30 current Spotlight highlights per supplied profile, deduplicates them by story ID, and saves one video per dataset row for JSON, CSV, Excel, API, webhook, or scheduled workflows.

### What can you use it for?

- Monitor public Spotlight output from a defined creator list.
- Compare public views, shares, comments, boosts, and recommendations.
- Build an influencer-research table with creator and video metadata.
- Review source-generated titles, descriptions, keywords, and detected language.
- Find video context such as original sound, lens, place, or creator cards.
- Track which public Spotlight items appear or disappear between snapshots.
- Feed a human-reviewed content-research workflow.
- Export direct media and preview URLs for short-lived internal processing.

This Actor collects public profile-page data. It does not sign in, follow users, send messages, post content, access private Snaps, or claim access to a creator's complete historical archive.

### Input

```json
{
  "usernames": ["nasa", "khaby.lame"],
  "maxProfiles": 10,
  "maxSpotlightsPerProfile": 10
}
````

#### Input fields

| Field | Type | Default | Description |
| --- | --- | --- | --- |
| `usernames` | array | `["nasa"]` | Public Snapchat usernames, `@handles`, or full profile URLs. |
| `maxProfiles` | integer | `10` | Maximum supplied profiles processed, from 1 to 100. |
| `maxSpotlightsPerProfile` | integer | `10` | Maximum current Spotlight highlights retained per profile, from 1 to 30. |

The default uses a public profile with current Spotlight highlights so a first run produces useful output. Usernames are normalized from plain handles, `@handles`, `/add/` links, and `snapchat.com/@...` profile URLs. Duplicate usernames are processed once.

The 30-item maximum is intentional. Snapchat's public creator page exposes a bounded current-highlight set; this Actor reports that surface honestly instead of advertising unlimited historical pagination that the source does not provide.

### Output

Each dataset item represents one public Spotlight story.

```json
{
  "story_id": "W7_EDlXWTBiXAEEniNoMPwAAYexample",
  "spotlight_url": "https://www.snapchat.com/spotlight/W7_EDlXWTBiXAEEniNoMPwAAYexample",
  "media_type": "video",
  "media_url": "https://bolt-gcdn.sc-cdn.net/example",
  "preview_url": "https://bolt-gcdn.sc-cdn.net/example-preview",
  "attachment_url": null,
  "transcript_url": "https://bolt-gcdn.sc-cdn.net/example.vtt",
  "duration_ms": 6500,
  "width": 540,
  "height": 960,
  "uploaded_at": "2025-12-16T13:00:06+00:00",
  "title": "Source-generated public Spotlight title",
  "description": "Source-generated public Spotlight description.",
  "embedded_caption": "",
  "hashtags": [],
  "keywords": ["augmented reality", "creator video"],
  "detected_language": "en",
  "view_count": 19162,
  "share_count": 9,
  "comment_count": 26,
  "boost_count": 1019,
  "recommend_count": 29,
  "context_cards": [
    {
      "type": 2,
      "title": "Original Sound",
      "subtitle": "creator",
      "url": "",
      "thumbnail_url": "https://cf-st.sc-cdn.net/example"
    }
  ],
  "lens_metadata": null,
  "creator_username": "creator",
  "creator_name": "Public Creator",
  "creator_url": "https://www.snapchat.com/@creator",
  "creator_profile_picture_url": "https://cf-st.sc-cdn.net/example-profile",
  "creator_subscriber_count": 0,
  "creator_badge": 1,
  "creator_category": "public-profile-category-v3-people",
  "creator_subcategory": "public-profile-subcategory-v3-creator",
  "creator_bio": "Public profile bio",
  "rank": 1,
  "source_url": "https://www.snapchat.com/@creator",
  "scraped_at": "2026-07-11T12:00:00+00:00"
}
```

#### Media fields

- `media_url` is the current public Snapchat CDN resource for the Spotlight item.
- `preview_url` is the current thumbnail or preview image.
- `spotlight_url` is the public Snapchat Spotlight route when the source supplies an ID.
- `transcript_url` is the public subtitle or transcription resource when present.
- `duration_ms`, `width`, `height`, `media_type`, and `uploaded_at` describe the source media.

CDN URLs can expire or change. Use them promptly inside a legitimate workflow and keep the stable Spotlight URL and story ID as references. The Actor does not promise permanent media hosting.

#### Engagement and discovery fields

The public page can provide `view_count`, `share_count`, `comment_count`, `boost_count`, and `recommend_count`. These values are platform observations at scrape time, not audited campaign analytics. Snapchat can omit, round, delay, or experiment with them.

`title`, `description`, `keywords`, and `detected_language` may be generated or inferred by Snapchat's public content systems. The Actor preserves them as source metadata; it does not claim that the creator wrote them or that every label is accurate. Keep a human review step before using them in editorial or targeting decisions.

`context_cards` can represent public creator, sound, lens, or place context. The numeric `type` is retained because Snapchat's public schema can evolve. Downstream systems should not assume every Spotlight has the same cards.

### A practical creator-monitoring workflow

1. Start with five to twenty public creator usernames.
2. Request ten Spotlight rows per profile and inspect the output.
3. Keep `story_id`, `source_url`, `rank`, and `scraped_at` in every export.
4. Store snapshots rather than overwriting the prior dataset.
5. Deduplicate across runs by `story_id`.
6. Compare engagement values only when the scrape times are known.
7. Review descriptions, keywords, and language labels manually.
8. Respect media rights and do not republish a video merely because its CDN URL is public.

For influencer research, pair Spotlight rows with the separate Snapchat Profile Scraper. The profile Actor focuses on public account-level fields, while this Actor produces one row per current Spotlight item. Keeping the workflows separate avoids paying per-video charges when only profile metadata is needed.

### Scheduling and integrations

Save a tested configuration as an Apify Task, then add a schedule or webhook. Common destinations include:

- Google Sheets or Airtable for a reviewed creator watchlist;
- n8n, Make, or Zapier for workflow automation;
- BigQuery, Snowflake, PostgreSQL, or object storage for snapshots;
- Python or JavaScript services through the Apify API;
- internal dashboards for public creator and content comparisons.

A daily or weekly schedule is usually sufficient for current-profile monitoring. Avoid high-frequency collection without a defined business need. If a creator has no current public Spotlight highlights, the Actor logs that profile and continues with the remaining inputs. A run fails explicitly when none of the supplied profiles returns usable Spotlight media.

### Pricing

This Actor uses transparent pay-per-event pricing:

- `$0.005` when the Actor starts.
- `$0.002` for each unique Spotlight row saved to the default dataset.

A 100-row run costs about `$0.205` in Actor charges before ordinary Apify platform usage. Duplicate story IDs, unavailable profiles, rows discarded without media, and records beyond the configured limits do not create result charges. The price is lower than the closest current competing Snapchat Spotlight Actor's `$0.09` start and `$0.00299` result price.

### Reliability and limits

The engine uses Chrome-compatible TLS impersonation and direct HTTP requests. It requires no proxy and launches no browser. Each request has an explicit timeout and up to three bounded retries. Input count and per-profile output are capped, and empty overall output fails instead of reporting a misleading successful run.

Snapchat can change its public profile schema, media availability, localization, or visibility rules. A profile may have Spotlight content in the app but expose no highlights on the anonymous public web page. Subscriber counts can be hidden or returned as zero. Deleted, restricted, region-limited, age-gated, or unavailable content is not bypassed.

### Responsible use

Use this Actor only for legitimate research involving public data. Follow Snapchat's terms, applicable copyright and privacy law, and your organization's policies. Do not use it for harassment, stalking, sensitive profiling, deceptive targeting, spam, or unauthorized content republication. A public media URL does not transfer copyright or grant reuse rights.

This Actor is independent and is not affiliated with, endorsed by, or sponsored by Snapchat or Snap Inc.

### Frequently asked questions

#### Does it require a Snapchat account?

No. It reads public creator-profile data anonymously.

#### Does it download videos to the dataset?

No. It returns the current public media URL and metadata. Dataset rows remain small and easy to export.

#### Is it an unlimited Spotlight archive scraper?

No. It captures up to 30 current Spotlight highlights exposed on each public profile page.

#### Why does a profile return no rows?

The creator may have no current public Spotlight highlights, may restrict public web visibility, or may be unavailable in the request region.

#### Are titles and keywords written by the creator?

Not necessarily. Some are source-generated Snapchat metadata. The Actor labels and documents them accordingly.

#### Can I schedule it?

Yes. Save an input as an Apify Task and attach a daily or weekly schedule. Keep timestamped snapshots for meaningful comparisons.

### You might also like

- [Snapchat Profile Scraper](https://apify.com/benthepythondev/snapchat-profile-scraper) for public account-level metadata.
- [TikTok Keyword Suggestions Scraper](https://apify.com/benthepythondev/tiktok-keyword-suggestions-scraper) for public TikTok autocomplete research.
- [SocialBlade Scraper](https://apify.com/benthepythondev/socialblade-scraper) for public cross-platform channel statistics.

If the Actor saved time or replaced manual work, leave a Store review. Reviews help prioritize endpoint monitoring, field improvements, and support.

Keywords: Snapchat Spotlight scraper, Snapchat video scraper, Snapchat creator analytics, Spotlight engagement data, Snapchat media URL, influencer research, Spotlight views scraper, public Snapchat profile data.

# Actor input Schema

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

Public Snapchat usernames, @handles, or full snapchat.com profile URLs.

## `maxProfiles` (type: `integer`):

Maximum number of supplied profiles processed in one run.

## `maxSpotlightsPerProfile` (type: `integer`):

Maximum public Spotlight highlights saved from each creator's current profile page.

## Actor input object example

```json
{
  "usernames": [
    "nasa",
    "khaby.lame"
  ],
  "maxProfiles": 10,
  "maxSpotlightsPerProfile": 10
}
```

# Actor output Schema

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

No description

# 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": [
        "nasa",
        "khaby.lame"
    ],
    "maxProfiles": 10,
    "maxSpotlightsPerProfile": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("benthepythondev/snapchat-spotlight-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": [
        "nasa",
        "khaby.lame",
    ],
    "maxProfiles": 10,
    "maxSpotlightsPerProfile": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("benthepythondev/snapchat-spotlight-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": [
    "nasa",
    "khaby.lame"
  ],
  "maxProfiles": 10,
  "maxSpotlightsPerProfile": 10
}' |
apify call benthepythondev/snapchat-spotlight-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Snapchat Spotlight Scraper - Creator Videos and Metrics",
        "description": "Scrape public Snapchat creator Spotlight videos with media URLs, previews, captions, views, shares, comments, boosts, recommendations and profile metadata.",
        "version": "1.0",
        "x-build-id": "atjouB9cPwMzlxaU1"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/benthepythondev~snapchat-spotlight-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-benthepythondev-snapchat-spotlight-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/benthepythondev~snapchat-spotlight-scraper/runs": {
            "post": {
                "operationId": "runs-sync-benthepythondev-snapchat-spotlight-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/benthepythondev~snapchat-spotlight-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-benthepythondev-snapchat-spotlight-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",
                "properties": {
                    "usernames": {
                        "title": "Snapchat usernames or profile URLs",
                        "type": "array",
                        "description": "Public Snapchat usernames, @handles, or full snapchat.com profile URLs.",
                        "default": [
                            "nasa"
                        ],
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxProfiles": {
                        "title": "Maximum profiles",
                        "minimum": 1,
                        "maximum": 100,
                        "type": "integer",
                        "description": "Maximum number of supplied profiles processed in one run.",
                        "default": 10
                    },
                    "maxSpotlightsPerProfile": {
                        "title": "Maximum Spotlight videos per profile",
                        "minimum": 1,
                        "maximum": 30,
                        "type": "integer",
                        "description": "Maximum public Spotlight highlights saved from each creator's current profile page.",
                        "default": 10
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
