# Snapchat Comments Scraper (`chronometrica/snapchat-comments-scraper`) Actor

Collect public Snapchat Spotlight comments and direct replies from known post URLs. Get deduplicated rows with text, authors, dates, likes, stable IDs, and parent links.

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

## Pricing

from $2.50 / 1,000 snapchat comment or replies

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
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 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 Comments Scraper

### 💬 What does Snapchat Comments Scraper do?

Snapchat Comments Scraper collects public comments from known Snapchat Spotlight
URLs. Add one or more Spotlight URLs and get clean rows with the original input,
canonical post URL, stable post and comment IDs, text, public author details,
dates, likes, reply links, and run status.

Paste the URLs, choose whether to include direct replies, and run. Each dataset
row represents one saved public comment or reply. Rows are deduplicated before
they are saved and charged, then written as they are collected. This makes the
Actor easy to add to a manual research task or an automated data pipeline.

Use it for:

- 🔎 Audience research and public feedback analysis.
- 📣 Brand and campaign monitoring.
- 🧑‍🎨 Creator research and public conversation studies.
- 💬 Comment analysis, topic work, and language research.
- 🧱 Spreadsheets, databases, dashboards, and scheduled data pipelines.

With Snapchat Comments Scraper, you can:

- 💬 Collect public top-level comments from known Spotlight posts.
- 🧵 Save public replies as separate rows with their parent comment ID.
- 🔁 Deduplicate repeated comment IDs before saving and charging.
- 🆔 Keep the original URL, canonical URL, Spotlight ID, comment ID, and author IDs.
- 👤 Get public author names, usernames, and profile images when shown.
- 📊 Capture comment text, publish time, likes, reply count, and the public post comment count.
- 🚦 See saved rows and run-level input failures separately.
- 📦 Export results as JSON, JSONL, CSV, Excel, XML, RSS, or HTML.

This Actor uses public, logged-out Snapchat Spotlight data. It does not need a
login, account credentials, or an API key. It does not access private posts,
use account state, solve challenges, or discover posts from profiles or search.
It returns only data available from the public Spotlight page and its public
comments at run time.

### 📦 What Snapchat comment data can I extract?

Each default-dataset row represents one public Snapchat comment or direct reply.
Top-level comments have `depth: 0`. Reply rows have `depth: 1` and carry the
source `parentCommentId` when Snapchat provides it.

| Data group         | Example fields                                                             |
| ------------------ | -------------------------------------------------------------------------- |
| 🔗 Post identity   | `inputUrl`, `postUrl`, `snapId`                                            |
| 🧵 Thread links    | `commentId`, `parentCommentId`, `depth`                                    |
| 👤 Public author   | `authorId`, `postAuthorId`, `isPostAuthor`, `authorName`, `authorUsername` |
| 🖼️ Author profile  | `authorImageUrl`                                                           |
| 💬 Comment content | `text`, `publishedAt`                                                      |
| ❤️ Public counts   | `likes`, `replyCount`, `postCommentCount`                                  |
| 🚦 Row state       | `status`, `statusReason`, `observedAt`                                     |

The original `inputUrl` is kept beside the cleaned `postUrl`. Search parameters,
fragments, and a final slash are removed from `postUrl`. Public author fields,
dates, and `postCommentCount` can be `null` when Snapchat does not expose them.
Saved `likes` and `replyCount` fields are integers. The dataset does not add a
separate precision field for these counts.

### ⚙️ Can I use this Actor through an API?

Yes. Run Snapchat Comments Scraper in Apify Console or connect it to:

- 🔌 Apify API.
- 🐍 Python SDK.
- 🟢 Node.js SDK.
- 🪝 Webhooks.
- ⏰ Scheduled runs.
- 🧩 Apify integrations.

#### 🔌 API example

Keep your Apify token in an environment variable or secret store. Do not place
it in source code.

```bash
curl -X POST \
  "https://api.apify.com/v2/acts/chronometrica~snapchat-comments-scraper/runs?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "startUrls": [
      "https://www.snapchat.com/@mrbeast/spotlight/W7_EDlXWTBiXAEEniNoMPwAAYbHZzZmtrYm1jAZhMOQmTAZhMOQfqAAAAAQ"
    ],
    "includeReplies": true
  }'
```

Use the returned run ID to check the run, read the default dataset, or attach a
webhook. The same JSON input works with the Apify Python and Node.js clients.

### 🎯 Why collect Snapchat comments?

Public comments show what viewers say about a Spotlight post. They can help you
find questions, reactions, repeated themes, and language from a known post.

| Use case             | How the data helps                                     |
| -------------------- | ------------------------------------------------------ |
| 🔎 Audience research | Find public questions, opinions, and recurring themes. |
| 📣 Brand monitoring  | Review public reactions to products and campaigns.     |
| 🕵️ Creator research  | Study public responses and reply relationships.        |
| 💡 Content planning  | Find topics, objections, and follow-up ideas.          |
| 🤖 Text analysis     | Send clean comment text to your own analysis workflow. |
| 🧱 Data pipelines    | Load stable rows into a database or dashboard.         |

The Actor collects source data. It does not add sentiment labels, infer a
person's intent, or make decisions about people.

### 💵 Pricing

You pay for saved results. The result unit is one public comment or reply row
saved to the default dataset. The Actor sends one `snapchat-comment` event at
that same save boundary.

| 🪙 Apify plan | Price per 1,000 saved rows | Price per saved row |
| ------------- | -------------------------- | ------------------- |
| 🆓 Free       | $4.00                      | $0.0040             |
| 🥉 Starter    | $3.50                      | $0.0035             |
| 🥈 Scale      | $3.00                      | $0.0030             |
| 🥇 Business   | $2.50                      | $0.0025             |

Platform usage is included. There is no Actor start fee. Invalid URLs, failed
page reads, and public posts with no saved comments do not create dataset rows
or paid result events.

### 🚀 How do I use Snapchat Comments Scraper?

1. 🧭 Open **Snapchat Comments Scraper** in Apify Console.
2. 🔗 Paste one or more known public Snapchat Spotlight URLs.
3. 🧵 Leave **Include replies** off for top-level comments only, or turn it on to save direct replies too.
4. ▶️ Click **Start**.
5. 📤 Open **Output** to inspect the dataset and the `OUTPUT` run summary.
6. 📦 Download the data or send it to another tool through an integration.

### ⬇️ Input

The main input is `startUrls`. Add one or more full public Spotlight URLs.
The input schema accepts `https://snapchat.com/@username/spotlight/POST_ID` and
`https://www.snapchat.com/@username/spotlight/POST_ID` forms. Query parameters,
fragments, and a trailing slash are allowed in the input and removed from the
canonical `postUrl`.

The form requires at least one URL and rejects duplicate URL values. There is no
documented maximum number of URLs in the input schema.

```json
{
  "startUrls": [
    "https://www.snapchat.com/@mrbeast/spotlight/W7_EDlXWTBiXAEEniNoMPwAAYbHZzZmtrYm1jAZhMOQmTAZhMOQfqAAAAAQ"
  ],
  "includeReplies": true
}
```

For top-level comments only, use the default:

```json
{
  "startUrls": [
    "https://www.snapchat.com/@mrbeast/spotlight/W7_EDlXWTBiXAEEniNoMPwAAYbHZzZmtrYm1jAZhMOQmTAZhMOQfqAAAAAQ"
  ],
  "includeReplies": false
}
```

#### 🔗 Supported URL inputs

- 🔗 Full `https://www.snapchat.com/@username/spotlight/POST_ID` URLs.
- 🔗 Full `https://snapchat.com/@username/spotlight/POST_ID` URLs.
- 🧾 The optional query string, fragment, or final slash may be present.
- 🚫 HTTP URLs, profiles, search pages, channel pages, and unknown Snapchat paths are not supported inputs.

#### 🎛️ Settings

| Setting          | What it controls                                                              |
| ---------------- | ----------------------------------------------------------------------------- |
| `startUrls`      | One or more known public Snapchat Spotlight URLs to collect.                  |
| `includeReplies` | `false` by default. When `true`, save public direct replies as separate rows. |

There is no `maxComments` input and no numeric reply cap. The Actor reads public
comment pages until the public source is exhausted, the run times out, or an
Apify charge limit stops row saving. When replies are enabled, it reads public
reply pages for saved top-level comments until those reply pages are exhausted.
It does not recursively request another reply level, and reply rows use
`depth: 1`.

### ⬆️ Output sample

Results are stored in the default dataset. The field order is stable for JSON,
CSV, spreadsheets, API, and database workflows.

```json
{
  "inputUrl": "https://www.snapchat.com/@mrbeast/spotlight/W7_EDlXWTBiXAEEniNoMPwAAYbHZzZmtrYm1jAZhMOQmTAZhMOQfqAAAAAQ",
  "postUrl": "https://www.snapchat.com/@mrbeast/spotlight/W7_EDlXWTBiXAEEniNoMPwAAYbHZzZmtrYm1jAZhMOQmTAZhMOQfqAAAAAQ",
  "snapId": "W7_EDlXWTBiXAEEniNoMPwAAYbHZzZmtrYm1jAZhMOQmTAZhMOQfqAAAAAQ",
  "commentId": "123456789-987654321",
  "parentCommentId": null,
  "depth": 0,
  "authorId": "789012345-678901234",
  "postAuthorId": "345678901-234567890",
  "isPostAuthor": false,
  "authorName": "Example Author",
  "authorUsername": "example_author",
  "authorImageUrl": "https://example.com/avatar.jpg",
  "text": "Example public comment",
  "publishedAt": "2026-08-06T12:00:00.000Z",
  "likes": 12,
  "replyCount": 2,
  "postCommentCount": 34,
  "status": "ok",
  "statusReason": null,
  "observedAt": "2026-08-06T12:01:00.000Z"
}
```

Reply rows use the same fields. A reply has `depth: 1`, a `parentCommentId`,
and its own `commentId`. `commentId` is the stable ID for that saved row.

#### 📌 `OUTPUT` run summary

The `OUTPUT` record is stored in the default key-value store. It includes:

- 📥 `inputCount`: number of input URLs after input normalization.
- 🗃️ `datasetId`: the default dataset that holds comment rows.
- ✅ `successfulInputs`: URLs whose public Spotlight page was read and matched.
- ⚠️ `failedInputs`: URLs that could not be read or matched.
- 💬 `usefulRows`: saved comment and reply rows.
- 🛑 `stopReason`: normally `inputs_exhausted`, or `charge_limit_reached` when saving stops at the Apify charge limit.
- 🕐 `startedAt` and `finishedAt`: run times in ISO format.
- 🧾 `schemaVersion`: summary contract version.

Example:

```json
{
  "schemaVersion": "1.0",
  "startedAt": "2026-08-06T12:00:00.000Z",
  "finishedAt": "2026-08-06T12:01:00.000Z",
  "inputCount": 1,
  "datasetId": "exampleDatasetId",
  "usefulRows": 34,
  "successfulInputs": 1,
  "failedInputs": 0,
  "stopReason": "inputs_exhausted"
}
```

### 🚦 Status, identity, and data quality

- ✅ Every saved dataset row has `status: "ok"` and `statusReason: null`.
- ⚠️ Invalid or unavailable inputs do not become placeholder rows. They increase `failedInputs` in `OUTPUT` instead.
- 🛑 If every input fails, the Actor writes `OUTPUT` and then marks the run as failed.
- 🔗 Top-level comments use `parentCommentId: null` and `depth: 0`.
- 🧵 Reply rows use the public parent ID when available and `depth: 1`.
- 🆔 Comment and author IDs are returned as stable source ID strings when exposed.
- 👤 `isPostAuthor` is `true` or `false` when both author IDs are present; otherwise it can be `null`.
- 🕐 `observedAt` is when the row was collected. `publishedAt` is the public comment time when available.
- 📊 `postCommentCount` is the public post-level comment count when available. It can be higher than the rows returned by the public source.

Rows from a later run are new observations. The Actor does not update or merge
rows from earlier datasets.

### 🔒 Public-source boundary

Snapchat Comments Scraper uses public, logged-out Snapchat Spotlight pages and
the public comments and replies exposed for those pages at run time.

It does not:

- 🚫 Ask for a Snapchat login, account credentials, or private account access.
- 🚫 Read private, account-only, deleted, hidden, or otherwise unavailable posts.
- 🚫 Collect profiles, search results, channels, or content not tied to a supplied Spotlight URL.
- 🚫 Solve challenges or bypass an access control.
- 🚫 Download Spotlight media or add sentiment, intent, or sensitive-trait labels.

### ⚠️ Limits and interpretation

- 📉 Public comment availability can change between runs. Deleted, hidden, moderated, or region-limited comments may not be returned.
- 🧮 A requested post comment count can be higher than the rows available from the public comment pages.
- 🧭 `startUrls` is a known-object input. This Actor does not discover Spotlight posts by username, keyword, profile, or search.
- 🧵 `includeReplies` adds direct reply rows and more work. It has no numeric reply limit; public reply pages can end before all displayed replies are available.
- ⏱️ There is no numeric comment cap. A run can stop when public pages end, the Apify timeout is reached, or an Apify charge limit stops saving.
- 🔁 Exact duplicate URL values are removed before processing. Repeated comment IDs are removed within each public comment or reply traversal.
- 🧾 The public comment count, reply count, likes, author fields, and dates can change or be missing at collection time.

### ❓ FAQ

#### Does this Actor need a Snapchat login or API key?

No. It uses public, logged-out Spotlight data and does not require a Snapchat
login, account credentials, or an API key.

#### Does this Actor collect every comment on a Spotlight post?

It keeps reading until the public comment pages end, subject to the run timeout
and Apify charge limit. Snapchat may expose fewer comments than its displayed
count, and the public list can change between runs.

#### Is there a hidden comment or reply cap?

No. The input has no numeric comment or reply cap. The Actor keeps reading the
public pages until they end, the run times out, or an Apify charge limit stops
row saving. Snapchat can still expose fewer rows than the count shown on a post.

#### Are replies separate results?

Yes. Turn on `includeReplies`. Each saved reply is a separate dataset row with
its own `commentId`, a `parentCommentId`, and `depth: 1`. There is no numeric
reply cap in the input.

#### Why did I receive fewer rows than expected?

The public source may have ended, the post may have no readable public comments,
the input may have failed, the run may have timed out, or an Apify charge limit
may have stopped saving. Check `OUTPUT` for `usefulRows`, `successfulInputs`,
`failedInputs`, and `stopReason`.

#### How are duplicates handled?

Exact duplicate input URL values are removed before collection. Within a public
comment or reply traversal, repeated source comment IDs are saved once.

#### Does this Actor search Snapchat for posts?

No. Provide the full public Spotlight URL for each post you want to inspect.

#### What happens when a post has no public comments?

No comment rows are saved. The public page can still count as a successful input,
while `usefulRows` remains zero. A failed page read is counted in `failedInputs`.

#### What do I pay for?

The result unit is one saved public comment or reply row. The `snapchat-comment`
event is sent once at the save boundary for each saved row. Inputs that do not
produce rows do not create result events.

### ⚖️ Responsible use

This Actor collects data that Snapchat exposes to logged-out public viewers at
run time. You are responsible for using the data lawfully and for following
applicable privacy, data-protection, research, and platform rules. Do not use
public comments to harass people, infer sensitive traits, or make automated
high-impact decisions about individuals.

### 🛟 Support

For help, include the Apify run ID, one input Spotlight URL, the result you
expected, and the observed dataset or `OUTPUT` summary. Say whether the issue
affects one URL, one row, or the whole run. Do not send account credentials or
private Snapchat links.

### 🔗 Related social media Actors

Continue the same workflow on this platform or compare public data across
platforms.

#### Continue on Snapchat

- [Snapchat Spotlight Metrics Scraper](https://apify.com/chronometrica/snapchat-metrics-scraper)
  — collect public Spotlight post views, engagement, creator, and media data.

#### Compare comments across platforms

- [Facebook Comments Scraper](https://apify.com/chronometrica/facebook-comments-scraper)
  — collect public comments, replies, authors, dates, and reactions.
- [Instagram Comments Scraper](https://apify.com/chronometrica/instagram-comments-scraper)
  — collect public comments, authors, dates, likes, and reply counts.
- [TikTok Comments Scraper](https://apify.com/chronometrica/tiktok-comments-scraper)
  — collect public comments, replies, authors, likes, and thread links.
- [YouTube Comments Scraper](https://apify.com/chronometrica/youtube-comments-scraper)
  — collect public comments, replies, authors, likes, pins, and creator
  hearts.
- [Reddit Comments Scraper](https://apify.com/chronometrica/reddit-comments-scraper)
  — collect public thread comments, replies, authors, scores, and dates.
- [LinkedIn Comments Scraper](https://apify.com/chronometrica/linkedin-comments-scraper)
  — collect public comments, replies, authors, dates, and reactions.

# Actor input Schema

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

Paste one or more public Snapchat Spotlight URLs.

## `includeReplies` (type: `boolean`):

Save public replies as separate paid rows.

## Actor input object example

```json
{
  "startUrls": [
    "https://www.snapchat.com/@mrbeast/spotlight/W7_EDlXWTBiXAEEniNoMPwAAYbHZzZmtrYm1jAZhMOQmTAZhMOQfqAAAAAQ"
  ],
  "includeReplies": false
}
```

# Actor output Schema

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

No description

## `output` (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 = {
    "startUrls": [
        "https://www.snapchat.com/@mrbeast/spotlight/W7_EDlXWTBiXAEEniNoMPwAAYbHZzZmtrYm1jAZhMOQmTAZhMOQfqAAAAAQ"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("chronometrica/snapchat-comments-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": ["https://www.snapchat.com/@mrbeast/spotlight/W7_EDlXWTBiXAEEniNoMPwAAYbHZzZmtrYm1jAZhMOQmTAZhMOQfqAAAAAQ"] }

# Run the Actor and wait for it to finish
run = client.actor("chronometrica/snapchat-comments-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": [
    "https://www.snapchat.com/@mrbeast/spotlight/W7_EDlXWTBiXAEEniNoMPwAAYbHZzZmtrYm1jAZhMOQmTAZhMOQfqAAAAAQ"
  ]
}' |
apify call chronometrica/snapchat-comments-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,chronometrica/snapchat-comments-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/YHFsQuZfS5N4jvQRb/builds/V8Sa63hcEws6AHZTq/openapi.json
