# Social Media Follower Counts Scraper (`arabiainsights/social-media-follower-counts`) Actor

Get public follower and subscriber counts in bulk from Instagram, TikTok, YouTube, Facebook Pages, X, Twitch, Kick, and Snapchat. Export CSV or JSON. No social login required.

- **URL**: https://apify.com/arabiainsights/social-media-follower-counts.md
- **Developed by:** [Arabia Insights](https://apify.com/arabiainsights) (community)
- **Categories:** Social media
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$5.00 / 1,000 usable follower counts

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

### What does Social Media Follower Counts Scraper do?

**Get social media follower counts in bulk from eight platforms** with one Actor: Instagram, TikTok, YouTube, Facebook Pages, X (Twitter), Twitch, Kick, and Snapchat Public Profiles. Enter usernames or profile URLs to collect public follower or subscriber counts, profile links, timestamps, and additional metrics where available.

No social media login, cookies, or platform API keys are required. Run a lookup from the Input tab, export the results to CSV or JSON, or use the Apify API to add audience counts to your own workflow. **Pay $5 per 1,000 successful results with an available follower count**, including platform costs.

### Why use a social media follower count scraper?

- **Influencer research:** compare public audience sizes across creators and platforms.
- **Audience growth tracking:** schedule repeat lookups and save snapshots to compare over time.
- **Brand monitoring:** collect follower counts for your brand and competing public profiles.
- **Profile enrichment:** add audience metrics to a spreadsheet, creator directory, or CRM.

Apify provides scheduling, API access, integrations, proxy options, and run monitoring. Every platform uses the same result format, so you can combine results without building a separate export workflow for each social network.

### How to scrape follower counts in bulk

1. Open the **Input** tab and add usernames or profile URLs under each platform you want to check.
2. Leave unused platform lists empty. Set **Max profiles per run** if you want a smaller input limit.
3. Click **Start** and wait for the run to finish.
4. Open **Results** to review follower counts, profile identities, and lookup outcomes. Use **Details** to see all available fields.
5. Download your results or retrieve them through the API. Check **Run summary** for delivered results, charged results, and any unfinished work.

#### Supported platforms and input formats

| Platform                                | Public audience metric | Example input | Scope                                                             |
| --------------------------------------- | ---------------------- | ------------- | ----------------------------------------------------------------- |
| [Instagram](https://www.instagram.com/) | Followers              | `cristiano`   | Publicly available profile metrics                                |
| [TikTok](https://www.tiktok.com/)       | Followers              | `@khaby.lame` | Public profile metrics                                            |
| [YouTube](https://www.youtube.com/)     | Subscribers            | `@MrBeast`    | Channel handles, channel IDs, or channel URLs; counts are rounded |
| [Facebook](https://www.facebook.com/)   | Page followers         | `NASA`        | Facebook Pages; personal profiles are unsupported                 |
| [X (Twitter)](https://x.com/)           | Followers              | `NASA`        | Handles and URLs from x.com or twitter.com                        |
| [Twitch](https://www.twitch.tv/)        | Followers              | `shroud`      | Channel logins or URLs                                            |
| [Kick](https://kick.com/)               | Followers              | `xqc`         | Channel slugs or URLs                                             |
| [Snapchat](https://www.snapchat.com/)   | Subscribers            | `nfl`         | Public Profiles with visible subscriber metrics                   |

### Input: usernames and social profile URLs

Each platform field accepts a list of strings. Use `twitter` for X accounts in JSON input. See the **Input** tab for the full configuration.

```json
{
    "instagram": ["cristiano"],
    "tiktok": ["@khaby.lame"],
    "youtube": ["@MrBeast"],
    "facebook": ["https://www.facebook.com/NASA"],
    "twitter": ["NASA"],
    "twitch": ["https://www.twitch.tv/shroud"],
    "kick": ["xqc"],
    "snapchat": ["nfl"],
    "maxProfiles": 100
}
```

Duplicate targets are removed within each platform. YouTube channel IDs remain case-sensitive. Blank entries are skipped, while distinct invalid entries receive an explanatory result. The default limit is **10,000 unique inputs**; a workload above `maxProfiles` is rejected before scraping.

### Output: export follower counts to CSV, JSON, or Excel

A completed run returns one result per deduplicated target and distinct invalid entry. Results arrive as lookups finish, so match them to your requests using `platform` and `input` instead of row order.

**Overview** shows the platform, input, username, follower count, precision, status, notes, profile URL, and scrape time. **Details** includes all 13 fields. You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.

Illustrative output; these are example values, not a current measurement:

```json
{
    "input": "@example",
    "platform": "youtube",
    "username": "@example",
    "followers": 1230000,
    "following": null,
    "posts": null,
    "likes": null,
    "verified": null,
    "precision": "rounded",
    "status": "success",
    "error": null,
    "profileUrl": "https://www.youtube.com/@example",
    "scrapedAt": "2026-09-22T00:00:00.000Z"
}
```

#### Follower count data fields

| Field        | Type            | Meaning                                                      |
| ------------ | --------------- | ------------------------------------------------------------ |
| `input`      | String          | Input used to identify the requested profile                 |
| `platform`   | String          | Social network, such as `instagram`, `youtube`, or `twitter` |
| `username`   | String or null  | Resolved public handle or channel login                      |
| `followers`  | Integer or null | Followers or subscribers; null means unavailable, not zero   |
| `following`  | Integer or null | Accounts followed, where publicly available                  |
| `posts`      | Integer or null | Total posts or videos, where available                       |
| `likes`      | Integer or null | Likes received, where available                              |
| `verified`   | Boolean or null | Public verification flag; Twitch reports Partner status      |
| `precision`  | String or null  | `exact` or `rounded`; null when unavailable                  |
| `status`     | String          | `success`, `not_found`, `error`, or `unsupported`            |
| `error`      | String or null  | Failure explanation or a note about available data           |
| `profileUrl` | String or null  | Resolved public profile URL                                  |
| `scrapedAt`  | String          | UTC timestamp for the result                                 |

Additional metrics vary by platform and profile. A successful profile lookup can still have an unavailable follower count; check both `status` and `followers`. Missing values remain null and are not treated as measured zeroes.

**Run summary** contains outcomes by platform, delivered and charged totals, elapsed time, completion reason, and unfinished targets. Stopped, failed, or charge-limited runs can return partial results.

### How much does it cost to scrape follower counts?

The price is **$0.005 per successful result containing a usable follower count**, or **$5 per 1,000 results**, including platform costs.

| Result                                                                       | Charge |
| ---------------------------------------------------------------------------- | ------ |
| Successful lookup with an available count, including a genuine zero          | $0.005 |
| Missing follower count, missing account, failed lookup, or unsupported input | Free   |

There is no startup fee or additional dataset-item fee. For example, 100 chargeable results cost $0.50. The current price is displayed in the Actor's **Pricing** tab.

Set a run charge limit to control spending. When the allowance is exhausted, the Actor stops further work and records unfinished targets in the summary. `maxProfiles` limits input size; it is separate from the monetary limit.

### Tips for reliable follower count lookups

Start with a small set of known public profiles before submitting a larger list. Use canonical profile URLs or handles, and check the status and notes on rows without counts.

Leave `proxyConfiguration` unset for direct requests with automatic residential fallback when available. If you select a proxy configuration, that route is used exclusively. For direct-only access, set `useApifyProxy` to `false` without custom proxy URLs. Direct access may encounter platform restrictions more often.

Schedule repeat runs to build your own follower history and retain each export. Counts are snapshots: rounded values may stay unchanged even when an audience grows or shrinks slightly.

### Frequently asked questions

#### Do I need social media accounts or API keys?

No. The Actor reads publicly accessible metrics without your social media credentials. You need an Apify account to run it; programmatic access uses your Apify API token. The **API** tab provides integration examples.

#### Are YouTube subscriber counts exact?

YouTube counts are based on public, rounded subscriber figures and are marked `precision: "rounded"`. For other platforms, `exact` means the integer reported by the public source. Check the precision field before calculating small changes in audience size.

#### Can I download a list of followers?

This Actor returns audience totals and available profile metrics. It does not collect individual follower lists, private posts, or authenticated account data.

#### Why is a follower count missing?

A profile may hide its audience count, lack public metrics, or be unavailable from the selected route. Login walls, rate limits, and platform changes can also prevent extraction. Check `status` and `error`; a blocked request is not automatically classified as a missing account. Failed lookups and unavailable counts are free.

#### Does it support Facebook personal profiles and Snapchat personal accounts?

Facebook support is limited to Pages. Snapchat support is limited to Public Profiles with available subscriber metrics. Personal accounts may not expose the required public data.

#### Where can I get help?

Open an issue in the Actor's **Issues** tab with the run ID, platform, and public profile URL. Keep API tokens, cookies, and proxy credentials out of support messages. Contact support to discuss custom integrations.

Use public data responsibly and follow applicable rules and each platform's terms.

# Actor input Schema

## `instagram` (type: `array`):

Instagram usernames or profile URLs. Returns follower count, following, and post count. No login or cookies required.

## `tiktok` (type: `array`):

TikTok usernames or profile URLs (with @). Returns follower count, following, likes, and video count.

## `youtube` (type: `array`):

Public YouTube handles, channel IDs, or channel URLs. Returns rounded subscriber counts without credentials.

## `facebook` (type: `array`):

Facebook Page handles or URLs (personal profiles are not supported — their friend counts are not public). Returns follower and following counts.

## `kick` (type: `array`):

Kick channel slugs or URLs. Returns follower counts and verification when publicly available.

## `twitch` (type: `array`):

Twitch channel slugs or channel URLs. Returns the exact follower count and partner status. No login required.

## `twitter` (type: `array`):

X (Twitter) handles or profile URLs (x.com or twitter.com). Returns exact follower, following, and post counts. No login or cookies required.

## `snapchat` (type: `array`):

Snapchat handles or Public Profile URLs (snapchat.com/@handle or /add/handle). Returns the exact subscriber count for creator/business profiles; personal accounts have no public profile.

## `proxyConfiguration` (type: `object`):

Omit for direct access with automatic residential fallback. An explicit configuration is honored exclusively; useApifyProxy:false without custom URLs means direct only.

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

Optional safety cap on unique profiles per run. The run fails fast with a clear error when the input exceeds it.

## Actor input object example

```json
{
  "instagram": [],
  "tiktok": [],
  "youtube": [
    "@MrBeast"
  ],
  "facebook": [],
  "kick": [],
  "twitch": [],
  "twitter": [],
  "snapchat": [],
  "maxProfiles": 10000
}
```

# Actor output Schema

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

One result per unique processed input; includes unsuccessful lookups.

## `summary` (type: `string`):

Delivered and charged counts, completion reason, and unfinished work.

# 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 = {
    "youtube": [
        "@MrBeast"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("arabiainsights/social-media-follower-counts").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 = { "youtube": ["@MrBeast"] }

# Run the Actor and wait for it to finish
run = client.actor("arabiainsights/social-media-follower-counts").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 '{
  "youtube": [
    "@MrBeast"
  ]
}' |
apify call arabiainsights/social-media-follower-counts --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,arabiainsights/social-media-follower-counts"
        }
    }
}
```

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/KelFWdJ6eU0WnHhK7/builds/nCnP5CQmldmZYof1a/openapi.json
