# Snapchat Profile Scraper: Public Profiles, Followers, Spotlight (`fernandosord/snapchat-profile-scraper`) Actor

Scrape public Snapchat profiles from usernames or profile URLs: display name, bio, follower count, verified badge, website, snapcode, picture, category. Optional Spotlight videos with views and shares, stories, highlights and lenses. No login.

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

## Pricing

from $1.80 / 1,000 profiles

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/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

This Snapchat profile scraper reads public Snapchat profile pages from usernames or profile links and returns one row per profile: display name, bio, follower count, verified badge, website, profile picture, Snapcode link, category and related accounts. Turn on options to add the profile's public Spotlight videos (views, shares, comments, boosts, duration, upload date), its current story and highlights, and its lenses. No Snapchat account, cookie or API key needed.

- **Paste usernames or links.** `nasa`, `@nasa`, `https://www.snapchat.com/add/nasa` and `https://www.snapchat.com/@nasa` all work, mixed in one list.
- **Public profiles only.** Snapchat has a public page for creators, brands, media and organisations. A normal private account has no public page, so there is nothing to scrape. Those, and usernames that do not exist, are skipped and listed in the run summary. You are not charged for them.
- **Nothing hidden.** The Actor reads the same page you see at snapchat.com/@username. It does not log in and does not get around any block.

### What data you get

| Field | What it holds |
|---|---|
| `username`, `displayName`, `bio` | Who the profile is and how it describes itself |
| `subscriberCount` | Public follower count as Snapchat shows it (rounded for big accounts, null when Snapchat shows none) |
| `verified` | True when the profile carries Snapchat's verified badge |
| `profilePictureUrl`, `heroImageUrl`, `snapcodeUrl` | Profile picture, cover image and Snapcode image links |
| `websiteUrl`, `category`, `subcategory`, `address` | Website the owner links, profile category and location text, when set |
| `hasStory`, `hasSpotlight`, `hasHighlights` | What public content the profile has |
| `createdAt`, `updatedAt` | When the public profile was created and last changed |
| `relatedAccounts` | Related accounts Snapchat lists on the profile |
| `spotlight` | With **Include Spotlight videos**: link, thumbnail, video URL, views, shares, comments, boosts, duration, upload date, hashtags per video |
| `story`, `highlights` | With **Include stories and highlights**: current story snaps and public highlights with their snaps |
| `lenses` | With **Include lenses**: name, preview image and video, unlock link |
| `profileUrl`, `source`, `scrapedAt` | Profile link, the input it came from, scrape time |

### How to use it

1. Add usernames or profile links.
2. Optional: turn on Spotlight videos, stories and highlights, or lenses, and set **Max items per list**.
3. Run it and export to JSON, CSV or Excel, or call it from the API, Make, Zapier, n8n or an AI agent through the Apify MCP server.

#### Example input

```json
{
  "profiles": ["nasa", "https://www.snapchat.com/add/nba"],
  "includeSpotlight": true,
  "maxItemsPerProfile": 5
}
```

#### Example output

Shortened: the real item has 5 Spotlight videos and 2 related accounts.

```json
{
  "username": "nasa",
  "displayName": "NASA",
  "bio": "Explore the universe and discover our home planet with official NASA snaps.",
  "subscriberCount": 751900,
  "verified": true,
  "profilePictureUrl": "https://cf-st.sc-cdn.net/aps/bolt/aHR0cHM6Ly9jZi1zdC5zYy1jZG4ubmV0L2QvUVg2VHZkaDBHNUMzcXVidWhWaTJhP2JvPUVnMGFBQm9BTWdFRVNBSlFHV0FCJnVjPTI1._RS0,90_FMjpeg",
  "snapcodeUrl": "https://app.snapchat.com/web/deeplink/snapcode?username=nasa&type=SVG&bitmoji=enable",
  "websiteUrl": "https://www.nasa.gov",
  "category": "Business Group",
  "subcategory": "Government Org",
  "hasStory": false,
  "hasSpotlight": true,
  "hasHighlights": true,
  "createdAt": "2019-05-22T17:38:27.554Z",
  "updatedAt": "2026-10-12T16:36:39.508Z",
  "profileUrl": "https://www.snapchat.com/@nasa",
  "relatedAccounts": [
    { "username": "whitehouse", "displayName": "The White House", "verified": true, "profileUrl": "https://www.snapchat.com/@whitehouse" }
  ],
  "spotlight": [
    {
      "id": "W7_EDlXWTBiXAEEniNoMPwAAYeG9xcGd0ZWd3AZ14BVv0AZ14BQkrAAAAAQ",
      "url": "https://www.snapchat.com/spotlight/W7_EDlXWTBiXAEEniNoMPwAAYeG9xcGd0ZWd3AZ14BVv0AZ14BQkrAAAAAQ",
      "viewCount": 25149,
      "shareCount": 165,
      "commentCount": 138,
      "boostCount": 2356,
      "recommendCount": 120,
      "durationSeconds": 87.3,
      "width": 540,
      "height": 960,
      "publishedAt": "2026-04-10T15:31:29.195Z",
      "hashtags": []
    }
  ],
  "spotlightCount": 5,
  "source": "nasa",
  "scrapedAt": "2026-11-02T07:41:49.830Z"
}
```

### How much does it cost?

You pay per profile saved plus a small start fee.

- **$0.0018 per profile** (one row, with all its Spotlight, story and lens lists included).
- **$0.0005 per run** to start.
- Usernames that do not exist, accounts without a public page, and profiles that fail to load are not saved and not charged.

Example: 1,000 profiles cost 1,000 x $0.0018 + $0.0005 = $1.80 (rounded). A run of 20 profiles took about 9 seconds in testing.

### Use cases

- **Influencer and creator research.** Check follower counts, verified status and website links for a list of creators before you reach out.
- **Brand and competitor tracking.** Keep a record of how many followers a brand's Snapchat account has and what it posts to Spotlight.
- **Spotlight performance.** Compare views, shares and boosts on a profile's recent Spotlight videos.
- **Lead lists.** Pull the website a business or creator links from its profile and pass it to a contact finder.

### FAQ

**Does it work for any Snapchat user?**
No. Only profiles with a public profile page, which are creators, brands and organisations that set one up. A normal private account (for example a friend's account) has no public page and is skipped. In testing, some well-known media brands also had no public page and were skipped.

**How many Spotlight videos do I get?**
The ones the public page serves, which is the newest batch: up to about 16 per profile in testing, often fewer. The Actor does not page further back. Some Spotlight entries on a page carry no data and are left out.

**Why is `subscriberCount` null for some profiles?**
Snapchat shows no follower count on those pages. Counts for large accounts are rounded by Snapchat.

**What does `verified` mean?**
It is true when the public profile's badge flag is set, which is the verified star Snapchat shows next to the name. Snapchat does not document the flag, so treat it as the badge you see on the page.

**Do the media links expire?**
Snapchat serves picture, video and story links from its own servers. Download what you need soon after the run, because story links in particular can stop working.

**Can it get a private account's stories or friends?**
No. It only reads what Snapchat shows to anyone without logging in.

**What if Snapchat changes its page or blocks the request?**
Such a profile is listed under `failed` in the `SUMMARY` record with the reason, and is not charged. If every input fails, the run is marked failed with a message.

**What happens with an empty input?**
The `profiles` field is required, so the Console and API refuse an empty start.

### Other Actors by this developer

- [Website Contact Extractor](https://apify.com/fernandosord/website-contact-extractor): find emails, phone numbers and social links on the website a profile links to.
- [YouTube Channel & Search Scraper](https://apify.com/fernandosord/youtube-channel-search-scraper)
- [Telegram Channel Scraper](https://apify.com/fernandosord/telegram-channel-scraper)
- [Bluesky Scraper](https://apify.com/fernandosord/bluesky-scraper)
- [Substack Scraper](https://apify.com/fernandosord/substack-scraper-posts)

# Actor input Schema

## `profiles` (type: `array`):

Snapchat usernames, with or without the @ (nasa, @nasa), or profile links (https://www.snapchat.com/add/nasa or https://www.snapchat.com/@nasa). Only profiles that have a public profile page return data: creators, brands, and organisations. Normal private user accounts have no public page and are skipped.

## `includeSpotlight` (type: `boolean`):

Adds the profile's public Spotlight videos as a list inside the profile item: link, thumbnail, video URL, views, shares, comments, boosts, duration and upload date. Snapchat's page shows the newest batch (up to about 16).

## `includeStories` (type: `boolean`):

Adds the current public story (if the profile has one) and the public highlights, each with its snaps (media URL, preview URL, time).

## `includeLenses` (type: `boolean`):

Adds the lenses shown on the profile: name, preview image and video, and the unlock link.

## `maxItemsPerProfile` (type: `integer`):

Caps each list (Spotlight videos, story snaps, highlights, lenses) per profile. It does not change the number of profile items or the price.

## Actor input object example

```json
{
  "profiles": [
    "nasa"
  ],
  "includeSpotlight": true,
  "includeStories": false,
  "includeLenses": false,
  "maxItemsPerProfile": 5
}
```

# Actor output Schema

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

One item per public Snapchat profile.

# 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 = {
    "profiles": [
        "nasa"
    ],
    "includeSpotlight": true,
    "maxItemsPerProfile": 5
};

// Run the Actor and wait for it to finish
const run = await client.actor("fernandosord/snapchat-profile-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 = {
    "profiles": ["nasa"],
    "includeSpotlight": True,
    "maxItemsPerProfile": 5,
}

# Run the Actor and wait for it to finish
run = client.actor("fernandosord/snapchat-profile-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 '{
  "profiles": [
    "nasa"
  ],
  "includeSpotlight": true,
  "maxItemsPerProfile": 5
}' |
apify call fernandosord/snapchat-profile-scraper --silent --output-dataset

```

## MCP server setup

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