# Snapchat Scraper – Profiles, Stories, Spotlight & Lenses (`scrapingmonkey/snapchat-scraper`) Actor

Scrape public Snapchat profiles, Stories, Highlights, Spotlight videos, comments, Discover, Explore, Lenses, Snapcodes, media, and transcripts.

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

## Pricing

from $2.50 / 1,000 profile results

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/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 Scraper - Public Profiles, Stories, Spotlight and Lenses

Collect public Snapchat profiles, current Stories, Highlights, Spotlight videos and initial comments, Discover entities, Explore topics, paginated Lens catalogs, Snapcodes, and public media metadata without a Snapchat account or browser.

- Extract profile identity, biography, category, subscriber count, public images, and related accounts
- Turn one username into a profile bundle containing current Story, curated Highlights, Spotlight, Lenses, and initial public comments
- Process individual Spotlight URLs or the public Spotlight feed
- Collect public Discover Apollo entities and Explore topic sections/cards
- Follow real Lens `nextCursorId` pagination across supported categories
- Store Snapcode SVG/PNG and optionally download public media or transcripts to key-value storage
- Monitor public profiles and emit only new or changed records
- Use Apify Residential Proxy automatically; no Snapchat account, cookies, browser, or proxy setup is required
- Export the dataset to JSON, CSV, Excel, XML, or access it through the Apify API

### What can you do with this Actor?

| Mode | Input | Output | Best for |
| --- | --- | --- | --- |
| `profileBundle` | Public usernames | Profile, Story, Highlights, Spotlight, comments, and Lenses | Complete public creator snapshots |
| `profiles` | Public usernames | Profile metadata only | Lightweight identity enrichment |
| `spotlightDetails` | Spotlight URLs | Video, creator, engagement, media, transcript, and initial comments | Video research and enrichment |
| `spotlightFeed` | No target required | Current public Spotlight records | Public video discovery |
| `discover` | No target required | Public Discover story and Snap cache entities | Publisher/content discovery |
| `explore` | Topic strings or Explore URLs | Sections and public cards | Topic-based discovery |
| `lenses` | Lens categories | Paginated Lens and creator rows | AR catalog and creator research |
| `snapcodes` | Usernames | Stored SVG or PNG Snapcode records | Public deeplink asset generation |
| `monitor` | Usernames and stable monitor key | Only new or changed profile-bundle records | Scheduled creator monitoring |
| `auto` | Mixed public URLs and usernames | Automatically routed public records | Batch processing heterogeneous inputs |

One run uses one selected mode. Every target in that mode can emit several record types, but all rows appear in one complete **Results** table and share the same top-level schema.

### Quick start

1. Open the Actor and click **Try for free**.
2. Keep `profileBundle` mode and enter a public username.
3. Set the maximum number of rows and optional comment/media settings.
4. Click **Start**.
5. Preview the single Results table or download it in your preferred format.

The default input uses the public `nba` profile and requires no additional configuration.

### Input examples

#### Collect complete public profile bundles

```json
{
  "mode": "profileBundle",
  "usernames": ["nba", "nfl"],
  "includeRelatedAccounts": true,
  "includeInitialComments": true,
  "maxItems": 1000
}
```

`maxItems` applies to each input target after the profile and its public content have been normalized. One dataset row represents one public profile, Story, Snap, Spotlight item, comment, Lens, creator, Discover entity, Explore entity, or Snapcode.

#### Extract profile metadata only

```json
{
  "mode": "profiles",
  "usernames": ["nba", "nfl"],
  "includeRelatedAccounts": true
}
```

#### Extract Spotlight details

```json
{
  "mode": "spotlightDetails",
  "startUrls": [
    {"url": "https://www.snapchat.com/spotlight/example-public-snap-id"}
  ],
  "includeInitialComments": true,
  "maxItems": 500
}
```

#### Collect the public Spotlight feed

```json
{
  "mode": "spotlightFeed",
  "maxItems": 100
}
```

#### Collect public Discover entities

```json
{
  "mode": "discover",
  "maxItems": 1000
}
```

#### Explore public topics

```json
{
  "mode": "explore",
  "queries": ["skincare", "basketball"],
  "maxItems": 500
}
```

#### Paginate Lens categories

```json
{
  "mode": "lenses",
  "lensCategories": ["for_you", "trending", "face", "creators"],
  "maxPages": 10,
  "maxItems": 1000
}
```

Supported category values are `for_you`, `trending`, `face`, `world`, `music`, `creators`, and `web_live`.

#### Store Snapcodes

```json
{
  "mode": "snapcodes",
  "usernames": ["nba"],
  "snapcodeFormat": "SVG"
}
```

Snapcode generation is an asset workflow, not proof that a username exists.

#### Download selected public media and transcripts

```json
{
  "mode": "profileBundle",
  "usernames": ["nba"],
  "downloadMedia": true,
  "downloadTranscripts": true,
  "maxDownloads": 10,
  "maxAssetBytes": 50000000
}
```

Downloaded bytes are stored in the default key-value store. Dataset fields contain the corresponding storage keys.

#### Monitor public profiles

```json
{
  "mode": "monitor",
  "usernames": ["nba"],
  "monitorMode": "newAndChanged",
  "monitorKey": "nba-public-snapchat",
  "maxItems": 1000
}
```

#### Auto-detect mixed public targets

```json
{
  "mode": "auto",
  "usernames": ["nba"],
  "startUrls": [
    {"url": "https://www.snapchat.com/@nfl"},
    {"url": "https://www.snapchat.com/explore/skincare"},
    {"url": "https://www.snapchat.com/lens/category/face"}
  ],
  "maxItems": 500
}
```

### Complete output example

Every record type has the same fixed set of **85 top-level fields**. Fields that do not apply to a record are returned as `null` or empty arrays. The `data` object preserves the complete public source entity for that row; because Snapchat controls this object, its internal keys vary by `recordType` and may evolve. Optional `raw` is a sanitized copy of `data` and is `null` by default.

#### Complete public Snapchat row - 85 top-level fields

```json
{
  "recordType": "publicProfile",
  "sourceMode": "profileBundle",
  "inputTarget": "nba",
  "sourceUrl": "https://www.snapchat.com/@nba",
  "sourceEndpoints": [
    "https://www.snapchat.com/@nba"
  ],
  "id": "public-business-profile-id",
  "username": "nba",
  "displayName": "NBA",
  "title": "NBA",
  "description": "The official public NBA profile.",
  "bio": "The official public NBA profile.",
  "badge": "OFFICIAL",
  "category": "SPORTS",
  "subcategory": "BASKETBALL",
  "subscriberCount": 25000000,
  "websiteUrl": "https://www.nba.com/",
  "address": null,
  "profileImageUrl": "https://cf-st.sc-cdn.net/public-profile.jpg",
  "squareHeroImageUrl": "https://cf-st.sc-cdn.net/public-hero.jpg",
  "snapcodeImageUrl": "https://cf-st.sc-cdn.net/public-snapcode.svg",
  "businessProfileId": "public-business-profile-id",
  "hostUserId": "public-host-user-id",
  "createdAtMs": 1609459200000,
  "updatedAtMs": 1786586400000,
  "hasStory": true,
  "hasCuratedHighlights": true,
  "hasSpotlightHighlights": true,
  "relatedAccounts": [
    {
      "username": "wnba",
      "displayName": "WNBA",
      "profilePictureUrl": "https://cf-st.sc-cdn.net/related-profile.jpg"
    }
  ],
  "storyType": null,
  "storyId": null,
  "highlightId": null,
  "snapId": null,
  "snapIndex": null,
  "mediaType": null,
  "mediaUrl": null,
  "previewUrl": null,
  "overlayUrl": null,
  "attachmentUrl": null,
  "transcriptUrl": null,
  "timestampInSec": null,
  "publishedAt": null,
  "durationMs": null,
  "width": null,
  "height": null,
  "hashtags": null,
  "mentions": null,
  "creator": null,
  "engagement": null,
  "lens": null,
  "contextCards": null,
  "replyId": null,
  "replyText": null,
  "replyTimestampMs": null,
  "replyPosterId": null,
  "replyPosterDisplayName": null,
  "reactionCounts": null,
  "threadedReplyCount": null,
  "cacheKey": null,
  "discoverType": null,
  "sectionTitle": null,
  "sectionType": null,
  "rank": null,
  "lensId": null,
  "scannableUuid": null,
  "lensName": null,
  "creatorUsername": null,
  "previewImageUrl": null,
  "previewVideoUrl": null,
  "iconUrl": null,
  "unlockUrl": null,
  "searchTags": null,
  "official": null,
  "lastUpdatedEpoch": null,
  "hasMore": null,
  "nextCursorId": null,
  "downloadedSnapcodeKey": null,
  "downloadedMediaKey": null,
  "downloadedTranscriptKey": null,
  "warning": null,
  "monitorStatus": null,
  "changedFields": null,
  "previousCapturedAt": null,
  "capturedAt": "2026-08-13T10:30:00.000000+00:00",
  "data": {
    "businessProfileId": "public-business-profile-id",
    "hostUserId": "public-host-user-id",
    "username": "nba",
    "title": "NBA",
    "bio": "The official public NBA profile.",
    "badge": "OFFICIAL",
    "categoryStringId": "SPORTS",
    "subcategoryStringId": "BASKETBALL",
    "subscriberCount": 25000000,
    "websiteUrl": "https://www.nba.com/",
    "address": null,
    "profilePictureUrl": "https://cf-st.sc-cdn.net/public-profile.jpg",
    "squareHeroImageUrl": "https://cf-st.sc-cdn.net/public-hero.jpg",
    "snapcodeImageUrl": "https://cf-st.sc-cdn.net/public-snapcode.svg",
    "creationTimestampMs": 1609459200000,
    "lastUpdateTimestampMs": 1786586400000,
    "relatedAccountsInfo": [
      {
        "username": "wnba",
        "displayName": "WNBA",
        "profilePictureUrl": "https://cf-st.sc-cdn.net/related-profile.jpg"
      }
    ]
  },
  "raw": null
}
```

Other `recordType` values are `story`, `snap`, `spotlight`, `comment`, `discoverStory`, `discoverSnap`, `exploreSection`, `exploreCard`, `lens`, `lensCreator`, and `snapcode`. They use the same 85 keys: Story/Snap rows populate Story and media fields; Spotlight rows populate media, creator, engagement, Lens, hashtag, mention, transcript, and context fields; comment rows populate reply/reaction fields; Discover and Explore rows populate cache, section, rank, media, and creator fields; Lens rows populate Lens identity, previews, creator, tags, and cursor fields; Snapcode rows populate `downloadedSnapcodeKey`.

Missing or unavailable targets do not emit error rows and are not charged. Their count or failure category appears in `RUN_SUMMARY`.

### What data can you extract?

| Category | Fields |
| --- | --- |
| Record and provenance | `recordType`, `sourceMode`, `inputTarget`, `sourceUrl`, `sourceEndpoints`, `id`, `capturedAt` |
| Public profile | `username`, `displayName`, `title`, `description`, `bio`, `badge`, `category`, `subcategory`, `subscriberCount`, `websiteUrl`, `address` |
| Profile media and IDs | `profileImageUrl`, `squareHeroImageUrl`, `snapcodeImageUrl`, `businessProfileId`, `hostUserId`, `createdAtMs`, `updatedAtMs` |
| Profile availability | `hasStory`, `hasCuratedHighlights`, `hasSpotlightHighlights`, `relatedAccounts` |
| Story and Snap | `storyType`, `storyId`, `highlightId`, `snapId`, `snapIndex` |
| Media and timing | `mediaType`, `mediaUrl`, `previewUrl`, `overlayUrl`, `attachmentUrl`, `transcriptUrl`, `timestampInSec`, `publishedAt`, `durationMs`, `width`, `height` |
| Spotlight context | `hashtags`, `mentions`, `creator`, `engagement`, `lens`, `contextCards` |
| Initial public comments | `replyId`, `replyText`, `replyTimestampMs`, `replyPosterId`, `replyPosterDisplayName`, `reactionCounts`, `threadedReplyCount` |
| Discover and Explore | `cacheKey`, `discoverType`, `sectionTitle`, `sectionType`, `rank` |
| Lens catalog | `lensId`, `scannableUuid`, `lensName`, `creatorUsername`, `previewImageUrl`, `previewVideoUrl`, `iconUrl`, `unlockUrl`, `searchTags`, `official`, `lastUpdatedEpoch`, `hasMore`, `nextCursorId` |
| Stored assets | `downloadedSnapcodeKey`, `downloadedMediaKey`, `downloadedTranscriptKey`, `warning` |
| Monitoring | `monitorStatus`, `changedFields`, `previousCapturedAt` |
| Complete entity data | `data`, `raw` |

### Input parameters

| Parameter | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `mode` | string | Yes | `profileBundle` | `profileBundle`, `profiles`, `spotlightDetails`, `spotlightFeed`, `discover`, `explore`, `lenses`, `snapcodes`, `monitor`, or `auto` |
| `usernames` | string\[] | In profile/snapcode/monitor modes | `['nba']` | Public usernames, with or without `@` |
| `startUrls` | request\[] | In detail/auto mode | - | Public profile, Spotlight, Explore, or Lens URLs |
| `queries` | string\[] | In explore mode | `['skincare']` | Explore topic strings |
| `lensCategories` | string\[] | In lenses mode | `['for_you']` | Supported public Lens category values |
| `snapcodeFormat` | string | No | `SVG` | `SVG` or `PNG` |
| `maxItems` | integer | No | `1000` | Maximum normalized rows per input, from 1 to 100,000 |
| `maxPages` | integer | No | `20` | Maximum Lens cursor pages per category, from 1 to 1,000 |
| `includeRelatedAccounts` | boolean | No | `true` | Include the initial related-account list exposed on profiles |
| `includeInitialComments` | boolean | No | `true` | Decode initial public Spotlight comment data when exposed |
| `downloadMedia` | boolean | No | `false` | Download selected public media to key-value storage |
| `downloadTranscripts` | boolean | No | `false` | Download selected public transcript files to key-value storage |
| `maxDownloads` | integer | No | `20` | Maximum optional downloads per input, from 0 to 1,000 |
| `maxAssetBytes` | integer | No | `50000000` | Maximum bytes per downloaded asset, from 1 MB to 500 MB |
| `monitorMode` | string | No | `off` | `off`, `onlyNew`, or `newAndChanged` |
| `monitorKey` | string | No | `default` | Namespace for persistent comparison state |
| `maxConcurrency` | integer | No | `5` | Concurrent inputs, from 1 to 15 |
| `includeRaw` | boolean | No | `false` | Include a sanitized copy of the complete public entity data |

### Use cases

#### Creator and publisher research

Turn public usernames into structured profile, Story, Spotlight, Lens, and related-account datasets for research or cataloging.

#### Public Spotlight analysis

Collect video metadata, creator context, engagement fields, hashtags, mentions, Lenses, transcripts, and initial public comments exposed on Spotlight pages.

#### AR Lens catalog collection

Paginate supported Lens categories and retain stable IDs, creators, previews, tags, unlock URLs, update times, and cursor provenance.

#### Discover and topic exploration

Use Discover or Explore modes to build public publisher/content datasets and route them into analytics or enrichment systems.

#### Scheduled public profile monitoring

Run `monitor` mode on an Apify schedule and send new or changed records to a webhook, Slack workflow, database, or spreadsheet.

### Performance and cost

The Actor uses pay-per-event billing when configured on Apify. Event families are `profile-result`, `story-result`, `spotlight-result`, `comment-result`, `discovery-result`, `lens-result`, and `snapcode-result`. Consult the Actor's **Pricing** tab for current rates.

Profile metadata and public Next.js JSON are HTTP-only. `downloadMedia` and `downloadTranscripts` are off by default because video/audio transfer and key-value storage can dominate platform usage. Lens cost grows with categories and cursor pages. Exact runtime depends on source latency, target breadth, page limits, optional downloads, retries, and public availability.

### API usage

Replace `YOUR_USERNAME` with the published Actor owner name.

```bash
curl -X POST \
  "https://api.apify.com/v2/acts/YOUR_USERNAME~snapchat-public-data-scraper/runs?token=APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "mode": "profileBundle",
    "usernames": ["nba"],
    "includeInitialComments": true,
    "maxItems": 1000
  }'
```

Results can flow through Apify API clients, schedules, webhooks, Google Sheets, Make, Zapier, n8n, Airbyte, object storage, and data warehouses.

### Best for / not for

**Best for:** public profile research, Story/Highlight snapshots, public Spotlight analysis, Discover/Explore collection, Lens catalogs, Snapcode assets, and scheduled public monitoring.

**Not for:** chats, friends/following graphs, private profiles, private Stories, authenticated account data, complete deep comment threads, or real-time streaming.

### Limits and good to know

- One mode is selected per run; a profile bundle can emit many record types for each username.
- Profile Story, Highlight, Spotlight, related-account, and comment arrays are the public initial set unless the source exposes a proven public cursor.
- `maxPages` controls Lens cursor pagination; it does not invent pagination for profile content arrays.
- Snapcode artwork is not account validation. Snapchat can generate an asset for an unavailable username.
- Media and transcript URLs can expire; enable downloads only when persistent bytes are required.
- `data` and optional `raw` are source-controlled objects, while all 85 normalized top-level keys remain stable.
- One failed target does not cancel successful targets. Failed and unavailable inputs do not create paid error rows.
- The Actor uses Apify Residential Proxy automatically and does not expose proxy configuration in the input.

### Frequently asked questions

#### What input should I provide?

Use usernames such as `nba`, copied public Spotlight URLs, Explore topic strings, or one of the supported Lens category values depending on the selected mode.

#### How many results can I extract?

You can configure up to 100,000 normalized rows per input and up to 1,000 Lens pages. Actual public content and cursor depth are controlled by Snapchat.

#### Why are many columns empty on a row?

All record types deliberately share one 85-field table. A profile row does not use comment or Lens fields; a Lens row does not use profile or Story fields. Non-applicable values are `null` or empty arrays.

#### Can I process multiple usernames or URLs?

Yes. Add multiple values to `usernames`, `startUrls`, `queries`, or `lensCategories`. Inputs are isolated and processed concurrently.

#### Can I schedule recurring runs?

Yes. Use Apify schedules with `monitor` mode and a stable `monitorKey`, then connect a webhook for downstream alerts.

#### Do I need a Snapchat account, API key, or proxy?

No Snapchat account, API key, cookie, or browser is required. Apify Residential Proxy is configured internally and used automatically.

### Responsible use

This Actor extracts publicly available Snapchat information. Users are responsible for complying with applicable laws, privacy regulations, contractual obligations, copyright requirements, and Snapchat's terms. Snapchat is a trademark of Snap Inc.; this Actor is not affiliated with or endorsed by Snap Inc.

### Support

If you encounter a problem, create an issue in the Actor's **Issues** tab. Include the run ID, selected mode, and a non-sensitive reproducible public username or URL. Do not include account cookies or credentials.

# Actor input Schema

## `mode` (type: `string`):

Choose which public Snapchat surface or entity type to extract.

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

Public Snapchat usernames to extract or monitor.

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

Public profile, Spotlight, Explore, or Lens URLs to process.

## `queries` (type: `array`):

Topics to extract from public Snapchat Explore pages.

## `lensCategories` (type: `array`):

Lens categories such as for\_you, trending, face, world, music, creators, or web\_live.

## `snapcodeFormat` (type: `string`):

Image format used when retrieving public Snapcodes.

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

Maximum number of result records to save for each username, URL, topic, or category.

## `maxPages` (type: `integer`):

Maximum number of cursor pages to request for each Lens category.

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

Include publicly related Snapchat profiles in profile results.

## `includeInitialComments` (type: `boolean`):

Include initial public Spotlight replies when Snapchat publishes them.

## `downloadMedia` (type: `boolean`):

Download public media to Key-value store; disabled by default because videos can dominate transfer cost.

## `downloadTranscripts` (type: `boolean`):

Download available public transcript assets to Key-value store.

## `maxDownloads` (type: `integer`):

Maximum number of optional media, transcript, or Snapcode downloads for each input.

## `maxAssetBytes` (type: `integer`):

Maximum accepted size in bytes for each optional downloaded asset.

## `monitorMode` (type: `string`):

Return all records, only newly discovered records, or new and changed records.

## `monitorKey` (type: `string`):

Stable key used to keep public profile monitoring state between scheduled runs.

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

Maximum number of public HTTP requests processed in parallel.

## `includeRaw` (type: `boolean`):

Include sanitized source objects for advanced downstream processing.

## Actor input object example

```json
{
  "mode": "profileBundle",
  "usernames": [
    "nba"
  ],
  "queries": [
    "skincare"
  ],
  "lensCategories": [
    "for_you"
  ],
  "snapcodeFormat": "SVG",
  "maxItems": 1000,
  "maxPages": 20,
  "includeRelatedAccounts": true,
  "includeInitialComments": true,
  "downloadMedia": false,
  "downloadTranscripts": false,
  "maxDownloads": 20,
  "maxAssetBytes": 50000000,
  "monitorMode": "off",
  "monitorKey": "default",
  "maxConcurrency": 5,
  "includeRaw": false
}
```

# Actor output Schema

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

Complete public profile, content, comment, discovery, Lens, and download metadata.

## `runSummary` (type: `string`):

Requests, transfer, failures, downloads, results, and charged events.

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapingmonkey/snapchat-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {}

# Run the Actor and wait for it to finish
run = client.actor("scrapingmonkey/snapchat-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 '{}' |
apify call scrapingmonkey/snapchat-scraper --silent --output-dataset

```

## MCP server setup

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