# Snapchat Spotlight Videos Scraper (`automation-lab/snapchat-spotlight-discovery-scraper`) Actor

Discover public Snapchat Spotlight videos and export creator, media, caption, engagement, rank, URL, and observation data for recurring trend monitoring.

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

## Pricing

from $1.32 / 1,000 spotlight video extracteds

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/actors/running/actors-in-store.md#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 Spotlight Videos Scraper

Browse Snapchat's anonymously public Spotlight surface and export normalized **snapchat spotlight videos** for creator, trend, and campaign research.

The Actor works without a Snapchat login.
It can browse the current public Spotlight feed or extract specific public Spotlight URLs.
Each useful row includes stable story and snap identifiers, source rank, creator fields, media references, engagement counts, and an observation timestamp.

### What does Snapchat Spotlight Videos Scraper do?

The Actor turns Snapchat's public Spotlight web pages into analysis-ready records.

Use it to:

- discover videos without supplying known URLs;
- capture the order shown on the public Spotlight page;
- resolve a known public Spotlight URL;
- collect creator identity when Snapchat attributes a video;
- export public media and thumbnail references;
- compare engagement observations between scheduled runs;
- filter the current feed by a minimum view count.

It does not log in, post content, bypass privacy settings, or access private snaps.

### Who is this Actor for?

#### Social media researchers

Create a snapshot of the current public feed for qualitative or quantitative analysis.

#### Creator and talent teams

Identify public creators appearing in the observed Spotlight selection and retain source URLs for review.

#### Brand and campaign analysts

Track public video captions, hashtags, creators, and visible engagement signals over time.

#### Data teams

Send consistent JSON rows to a warehouse, spreadsheet, webhook, or automation pipeline.

### Why use this Spotlight discovery scraper?

Most Spotlight tools begin with a URL or profile you already know.
This Actor also starts from the anonymously available discovery feed.

Its output is designed for recurring observations:

- `storyId` and `snapId` support deduplication;
- `sourceRank` preserves observed feed order;
- `observedAt` distinguishes repeated snapshots;
- engagement counts remain numeric;
- nullable fields reflect what Snapchat actually exposes;
- malformed or unrecognized upstream pages fail clearly instead of producing misleading empty data.

The implementation uses public embedded page data and does not download media files.
That keeps runs lightweight while preserving the public media references exposed by Snapchat.

### What Snapchat Spotlight data can I extract?

| Field | Meaning |
| --- | --- |
| `storyId` | Stable Spotlight story identifier |
| `snapId` | Stable snap identifier |
| `sourceRank` | One-based rank in the observed discovery feed |
| `sourceType` | `discovery` or `url` |
| `url` | Canonical public Spotlight URL |
| `title` | Public or generated video title when exposed |
| `description` | Public video description when exposed |
| `caption` | Embedded text caption when exposed |
| `creatorUsername` | Attributed public creator username |
| `creatorDisplayName` | Attributed creator display name |
| `creatorUrl` | Public creator profile URL |
| `creatorFollowerCount` | Follower count when exposed |
| `thumbnailUrl` | Public preview image reference |
| `mediaUrl` | Public media CDN reference |
| `mediaType` | Normalized video, image, or unknown type |
| `durationMs` | Duration in milliseconds |
| `width`, `height` | Media dimensions |
| `viewCount` | Visible view count |
| `shareCount` | Visible share count |
| `commentCount` | Visible comment count |
| `boostCount` | Visible boost count |
| `recommendCount` | Visible recommendation count |
| `hashtags` | Public hashtags attached to the video |
| `postedAt` | Publication timestamp when exposed |
| `observedAt` | Timestamp of this Actor observation |

Fields can be `null` when Snapchat does not expose them for a record.

### How to scrape Snapchat Spotlight videos

1. Open the Actor in Apify Console.
2. Leave **Spotlight video URLs** empty to browse the current public feed.
3. Set **Maximum videos** to the largest number of rows you need.
4. Optionally set **Minimum view count** to create a high-engagement shortlist.
5. Click **Start**.
6. Open the Dataset tab to inspect, download, or integrate the results.

A useful first run is:

```json
{
  "maxItems": 10,
  "minViewCount": 0
}
```

### Input parameters

#### `startUrls`

Optional array of public Snapchat Spotlight URLs.
Accepted paths look like:

```text
https://www.snapchat.com/spotlight/<spotlight-id>
https://www.snapchat.com/@creator/spotlight/<spotlight-id>
```

When omitted or empty, the Actor browses the current discovery feed.
A maximum of 50 unique explicit URLs is processed per run.

#### `maxItems`

Maximum useful records to save.
The allowed range is 1 through 100 and the default is 25.
The current public page can naturally expose fewer records.

#### `minViewCount`

Keep only records with at least this many currently exposed views.
The default is 0.
The same filter applies to discovery and explicit-URL inputs.

### Output example

This shortened example reflects the current output shape.
Values are illustrative and anonymized:

```json
{
  "storyId": "W7_EXAMPLE_SPOTLIGHT_STORY_ID",
  "snapId": "W7_EXAMPLE_SPOTLIGHT_SNAP_ID",
  "sourceRank": 1,
  "sourceType": "discovery",
  "url": "https://www.snapchat.com/spotlight/W7_EXAMPLE_SPOTLIGHT_STORY_ID",
  "title": "A sunny afternoon in the park",
  "caption": "Weekend walk #outdoors",
  "creatorUsername": "examplecreator",
  "creatorDisplayName": "Example Creator",
  "thumbnailUrl": "https://cf-st.sc-cdn.net/example-thumbnail.jpg",
  "mediaUrl": "https://bolt-gcdn.sc-cdn.net/example-video.mp4",
  "mediaType": "video",
  "durationMs": 9800,
  "viewCount": 120000,
  "commentCount": 85,
  "hashtags": ["#outdoors"],
  "postedAt": "2025-01-15T12:00:00.000Z",
  "observedAt": "2025-01-15T12:05:00.000Z"
}
```

The default dataset is available as JSON, CSV, Excel, XML, RSS, or HTML through Apify.

### How much does it cost to discover Snapchat Spotlight videos?

The Actor uses pay-per-event pricing.
A run has a small one-time start charge and then charges only for useful Spotlight rows saved to the dataset.
Rejected, duplicate, filtered, or failed records are not item-charged.

At the current BRONZE price of **$0.0022 per saved video** plus a **$0.004 run start**, typical examples are:

| Saved videos | BRONZE calculation |
| ---: | ---: |
| 1 | $0.004 start + 1 × $0.0022 |
| 10 | $0.004 start + 10 × $0.0022 |
| 25 | $0.004 start + 25 × $0.0022 |
| 100 explicit URLs | $0.004 start + 100 × $0.0022 |

Higher subscription tiers receive lower item prices.
Apify displays the applicable tier before you start a run.
Infrastructure usage may be shown separately according to your Apify plan and the active pricing configuration.

### Recurring monitoring workflow

A dataset row is an observation, not a permanent statement about ranking or engagement.
For recurring monitoring:

1. Create an Apify Task with discovery input.
2. Schedule it at an interval suitable for your research.
3. Store `snapId`, `sourceRank`, engagement fields, and `observedAt`.
4. Compare snapshots in your warehouse or automation tool.
5. Treat missing records as absent from that observation, not deleted from Snapchat.

Example high-view filter:

```json
{
  "maxItems": 25,
  "minViewCount": 1000000
}
```

### Export to spreadsheets and data pipelines

Download the Dataset tab as CSV or Excel for manual analysis.
For automated work, use the dataset API or connect Apify integrations.

Useful patterns include:

- append every scheduled run to a warehouse;
- deduplicate one-time research by `snapId`;
- preserve multiple rows per `snapId` for time-series analysis;
- notify a team when a new observed row crosses an engagement threshold;
- join `creatorUsername` to your authorized creator research tables.

### Run with the Apify API

Replace `YOUR_TOKEN` with an Apify API token.

#### cURL

```bash
curl -X POST \
  "https://api.apify.com/v2/acts/automation-lab~snapchat-spotlight-discovery-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"maxItems":10,"minViewCount":0}'
```

#### JavaScript

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

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/snapchat-spotlight-discovery-scraper').call({
  maxItems: 10,
  minViewCount: 0,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

#### Python

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_TOKEN")
run = client.actor("automation-lab/snapchat-spotlight-discovery-scraper").call(
    run_input={"maxItems": 10, "minViewCount": 0}
)
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(items)
```

### Use with MCP and AI assistants

Add the Actor to Claude Code through Apify MCP:

```bash
claude mcp add --transport http apify \
  "https://mcp.apify.com?tools=automation-lab/snapchat-spotlight-discovery-scraper"
```

#### Claude Desktop setup

Use this MCP configuration in Claude Desktop:

```json
{
  "mcpServers": {
    "apify": {
      "url": "https://mcp.apify.com?tools=automation-lab/snapchat-spotlight-discovery-scraper"
    }
  }
}
```

#### Cursor setup

Add the same HTTP MCP URL in **Cursor Settings → Tools & MCP → New MCP Server**.

#### VS Code setup

Add the same HTTP MCP server to your workspace MCP configuration, then enable the `automation-lab/snapchat-spotlight-discovery-scraper` tool.

Example prompts:

- “Browse 10 public Snapchat Spotlight videos and summarize the exposed topics.”
- “Extract this public Spotlight URL and return its creator and engagement fields.”
- “Find videos in the current observation with at least one million views.”

AI-generated interpretations should retain the source URL and observation time.

### Limits and data freshness

- The discovery mode represents the public web feed returned for that run.
- It is not a complete historical archive or a promise of global coverage.
- Feed order and selection can vary by time and Snapchat's own ranking.
- The Actor currently performs one public discovery-page request and does not paginate beyond the records embedded there.
- Explicit URLs must remain anonymously reachable.
- Media URLs are references and may expire or change.
- Engagement values can change after collection.
- Titles, captions, creator identity, and counts can be absent.
- The Actor does not download or store media files.
- The Actor does not scrape comments, transcripts, profiles, private stories, or login-only data.

### Reliability and failure behavior

Transient transport failures are retried a bounded number of times.
An invalid input URL fails validation before a request is made.
With several explicit URLs, one unavailable target is isolated while other valid targets can still produce rows.
If every target fails, the Actor run fails with a diagnostic message.

A valid discovery response with no rows passing `minViewCount` is a successful zero-result run.
An unrecognized Snapchat page structure is an error rather than a silent empty result.

For troubleshooting, first retry with `minViewCount` set to 0 and a small `maxItems`.

### Responsible and legal use

Use the Actor only for lawful collection of anonymously public information.
Respect Snapchat's terms, intellectual-property rights, privacy rights, and applicable laws.
Do not use the output to harass people, infer sensitive traits, build prohibited surveillance, or republish media without permission.

You are responsible for your input, retention policy, downstream use, and any required notices or consent.
Public availability does not remove copyright or privacy obligations.

### FAQ

#### Does this Actor require a Snapchat account?

No.
It reads anonymously available public web pages.

#### Can it discover videos without known URLs?

Yes.
Leave `startUrls` empty to use the current public Spotlight discovery feed.

#### Can it process a known Spotlight URL?

Yes.
Supply one or more public Spotlight URLs in `startUrls`.

#### Why did I receive fewer rows than `maxItems`?

The public feed may expose fewer records, your view filter may reject records, or a supplied URL may no longer be public.
`maxItems` is a ceiling, not a guaranteed count.

#### Why are some fields null?

Snapchat does not expose every creator, caption, title, metric, or timestamp on every public record.
Null values preserve that distinction.

#### Does `mediaUrl` mean the video is stored in my run?

No.
It is the public CDN reference exposed by Snapchat at observation time.

#### How do I monitor changes?

Schedule an Apify Task and compare `snapId`, engagement fields, `sourceRank`, and `observedAt` between run datasets.

#### What if Snapchat changes its page?

The Actor validates the structured feed.
A structural change should produce a clear failed run rather than incorrect rows; check the run log and retry later.

### Related automation-lab Actors

- [Snapchat Public Video Downloader](https://apify.com/automation-lab/snapchat-public-video-downloader) downloads media from supplied public Spotlight URLs when you need files rather than discovery metadata.
- [Snapchat Public Profile Metadata Scraper](https://apify.com/automation-lab/snapchat-public-profile-metadata) returns account-level public profile fields.
- [Snapchat Public Profile Stories](https://apify.com/automation-lab/snapchat-public-profile-stories) returns currently visible Story snaps from supplied public profiles.

Choose this Actor when the job begins with Spotlight discovery or normalized Spotlight video observations.

# Actor input Schema

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

Public snapchat.com/spotlight/... URLs to extract. Leave empty to browse the current public Spotlight discovery feed.

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

Maximum number of normalized Spotlight video records to save. The public feed may contain fewer records.

## `minViewCount` (type: `integer`):

Keep only videos with at least this many currently exposed views. Use 0 to keep every discovered video.

## Actor input object example

```json
{
  "startUrls": [],
  "maxItems": 10,
  "minViewCount": 0
}
```

# Actor output Schema

## `dataset` (type: `string`):

Normalized Spotlight video records from the public feed or supplied URLs.

# 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 = {
    "startUrls": [],
    "maxItems": 10,
    "minViewCount": 0
};

// Run the Actor and wait for it to finish
const run = await client.actor("automation-lab/snapchat-spotlight-discovery-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 = {
    "startUrls": [],
    "maxItems": 10,
    "minViewCount": 0,
}

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

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

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

```

## CLI example

```bash
echo '{
  "startUrls": [],
  "maxItems": 10,
  "minViewCount": 0
}' |
apify call automation-lab/snapchat-spotlight-discovery-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,automation-lab/snapchat-spotlight-discovery-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

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