# TikTok Public Followers & Following Scraper (`w3crawler/tiktok-followers-scraper`) Actor

Scrape the followers and following lists for TikTok profiles. Input usernames or profile URLs. Supports pagination up to thousands of users. No cookies required.

- **URL**: https://apify.com/w3crawler/tiktok-followers-scraper.md
- **Developed by:** [w3crawler](https://apify.com/w3crawler) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.99 / 1,000 followers & followings

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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 TikTok Followers & Following Scraper do?

**TikTok Followers & Following Scraper** extracts structured data from public pages and endpoints on [www.tiktok.com](https://www.tiktok.com/@tiktok). Scrape the followers and following lists for TikTok profiles. Input usernames or profile URLs. Supports pagination up to thousands of users. No cookies required. It is a public-data API alternative that runs as an Apify Actor and supports scheduled runs, API calls, monitoring, dataset exports, and integrations.

The Actor does not bypass accounts, CAPTCHAs, paywalls, or private controls. It validates every URL, uses bounded retries and polite rate limits, normalizes URLs and text, and removes duplicate records before saving results.

### Why use TikTok Followers & Following Scraper?

- Collect current public records without maintaining crawler infrastructure.
- Enrich research, monitoring, catalog, analytics, or lead-generation workflows with source-linked evidence.
- Schedule repeat runs and connect results to webhooks, Google Sheets, databases, or other Apify integrations.
- Control result volume, page limits, delay, concurrency, and optional Apify Proxy settings.
- Receive stable identity fields plus the target's original structured fields in the `data` object.

### What data can TikTok Followers & Following Scraper extract?

| Field | Type | Description |
| --- | --- | --- |
| `id` | string | Stable source ID when available, otherwise a deterministic content identity |
| `name` | string | Public title, name, or headline |
| `url` | string | Normalized record URL |
| `description` | string | Public description or summary when available |
| `price`, `rating` | number | Typed commercial or rating values when published |
| `data` | object | Sanitized target-specific JSON or JSON-LD fields |
| `sourceUrl` | string | Page or endpoint from which the record was extracted |
| `scrapedAt` | string | ISO timestamp of extraction |

Unavailable optional values are omitted rather than filled with placeholders.

### How to scrape www.tiktok.com

1. Open the Actor's **Input** tab.
2. Keep the representative public URL or add your own supported public pages/endpoints.
3. Choose a result limit and page limit. Start small while testing.
4. Run the Actor and review logs for access or structure warnings.
5. Open the dataset, verify source URLs, and export or integrate the results.

### How much does it cost to scrape www.tiktok.com?

This Actor uses compute-unit billing. HTTP/Cheerio extraction is lightweight, and small one-page runs typically consume only a small fraction of a compute unit. Actual cost depends on page count, response size, delays, retries, and proxy use. The Apify free plan is suitable for testing representative inputs; use strict `maxItems` and `maxPages` limits to keep larger runs predictable.

### Input

See the Input tab for full configuration options. `startUrls` accepts official HTTPS TikTok profile pages. `maxItems` and `maxPages` are hard safety bounds. `followPagination` follows only same-host next links. `requestDelayMs` and `maxConcurrency` provide responsible rate control. Optional Apify Proxy settings can improve regional routing but do not authorize access to protected content.

```json
{
  "startUrls": [
    {
      "url": "https://www.tiktok.com/@tiktok"
    }
  ],
  "maxItems": 25,
  "maxPages": 1,
  "followPagination": false
}
```

### Output

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel. Records include normalized common fields and a `data` object preserving useful target-specific public fields with correct JSON types.

```json
[
  {
    "id": "source-id-or-stable-hash",
    "name": "Public record title",
    "url": "https://www.tiktok.com/@tiktok",
    "sourceUrl": "https://www.tiktok.com/@tiktok",
    "sourceDomain": "www.tiktok.com",
    "data": { "type": "Public source fields" },
    "scrapedAt": "2026-01-01T00:00:00.000Z"
  }
]
```

### Tips and advanced options

Start with one page and low concurrency. Enable pagination only after confirming the target's next-page links. Use longer delays for community-run or government sites. If a public target changes structure, inspect the retained `data` and source link before increasing limits. Duplicate identities are removed within each run.

### FAQ, disclaimers, and support

#### Does this Actor bypass login or anti-bot controls?

No. Persistent login walls, paywalls, CAPTCHAs, and private controls are respected and reported as blockers.

#### Is scraping public data legal?

Our Actors are ethical and do not intentionally extract private user data. They only extract information published on public pages or public endpoints. Results can still contain personal data protected by the GDPR and other laws. Do not scrape personal data without a legitimate reason; consult legal counsel if unsure. Follow www.tiktok.com's terms, robots guidance, and applicable laws.

Use the Actor's Issues tab for reproducible bug reports and the API tab for programmatic access.

# Actor input Schema

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

Public target pages or API endpoints to extract. Login-only, private, and paywalled pages are not supported.

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

Hard result limit for a bounded run.

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

Maximum number of public pages/endpoints requested.

## `followPagination` (type: `boolean`):

Follow same-host next-page links up to the page limit.

## `requestDelayMs` (type: `integer`):

Polite delay applied before each request.

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

Bounded parallel requests; keep low for smaller public sites.

## `userAgent` (type: `string`):

Optional consistent browser user agent for public requests.

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

Optional Apify Proxy configuration for responsible access.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.tiktok.com/@tiktok"
    }
  ],
  "maxItems": 25,
  "maxPages": 1,
  "followPagination": false,
  "requestDelayMs": 600,
  "maxConcurrency": 1,
  "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Chrome/134.0 Safari/537.36",
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

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

No description

## `summary` (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": [
        {
            "url": "https://www.tiktok.com/@tiktok"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("w3crawler/tiktok-followers-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": [{ "url": "https://www.tiktok.com/@tiktok" }] }

# Run the Actor and wait for it to finish
run = client.actor("w3crawler/tiktok-followers-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": [
    {
      "url": "https://www.tiktok.com/@tiktok"
    }
  ]
}' |
apify call w3crawler/tiktok-followers-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,w3crawler/tiktok-followers-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/QmThwjulh4bm7OJHm/builds/WhvNau6MGkwc43hyk/openapi.json
