# Social Media Influencer Scraper (`khadinakbar/social-media-influencer-scraper`) Actor

Discover public Instagram, TikTok, and YouTube creators by keyword or profile URL. Returns normalized audience, verification, bio, and profile-link data for influencer research.

- **URL**: https://apify.com/khadinakbar/social-media-influencer-scraper.md
- **Developed by:** [Khadin Akbar](https://apify.com/khadinakbar) (community)
- **Categories:** Social media, Lead generation, MCP servers
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $10.00 / 1,000 influencer profiles

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/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

## Social Media Influencer Scraper

Discover public influencer profiles across Instagram, TikTok, and YouTube in one normalized dataset. Use it when an influencer-marketing agency, brand, talent scout, or AI agent needs a creator shortlist by niche or needs to enrich a known set of public profile URLs.

The actor returns one row per public creator profile with a consistent platform, profile URL, handle, display name, bio, audience size, verification signal, public links, and provider provenance. It is built for public-data discovery and does not require cookies, browser sessions, or login credentials from users.

### What it returns

| Field | Meaning |
| --- | --- |
| `platform` | `instagram`, `tiktok`, or `youtube` |
| `profileUrl`, `handle`, `displayName` | Stable public profile identity fields |
| `bio`, `bioLink`, `externalLinks` | Public creator description and linked sites |
| `followerCount` | Followers or YouTube subscribers when the platform provides them |
| `contentCount`, `totalEngagement` | Public aggregate content and engagement signals when available |
| `verified`, `privateAccount`, `category` | Provider-reported public account signals |
| `discoveryQuery`, `provider`, `scrapedAt` | Provenance for audits and repeatable workflows |

Values that the platform does not expose are returned as `null` or an empty array. The actor never invents audience, engagement, verification, or contact data.

### When to use it

- Build a cross-platform creator shortlist for a campaign, such as fitness coaches or sustainable-fashion creators.
- Filter discovered public profiles by minimum follower/subscriber count or platform verification.
- Enrich known public Instagram, TikTok, and YouTube profile URLs into one consistent dataset.
- Feed a CRM, outreach-review workflow, or AI-agent research task with creator-profile records.

Use the focused sibling actors when you need a single platform's deeper surface: post or video feeds, comments, transcripts, follower graphs, direct content downloads, or public email extraction. This actor does not retrieve private profiles, private messages, followers/following lists, individual posts, Reels, videos, or verified emails.

### Input examples

#### Discover fitness creators across every supported platform

```json
{
  "platforms": ["instagram", "tiktok", "youtube"],
  "searchQueries": ["fitness coach"],
  "maxProfilesPerQuery": 10,
  "maxTotalProfiles": 30,
  "minFollowerCount": 5000,
  "excludePrivateAccounts": true
}
```

#### Enrich a known public creator shortlist

```json
{
  "profileUrls": [
    "https://www.instagram.com/natgeo/",
    "https://www.tiktok.com/@natgeo",
    "https://www.youtube.com/@Apify"
  ],
  "maxTotalProfiles": 10,
  "providerOrder": "scrapecreators-first"
}
```

You may also use tagged handles when a URL is inconvenient: `instagram:@natgeo`, `tiktok:@natgeo`, or `youtube:@Apify`. For keyword discovery, the actor queries each selected platform independently; it does not claim that accounts with the same name belong to the same person across platforms.

### Output example

```json
{
  "recordType": "influencer-profile",
  "platform": "tiktok",
  "handle": "creatorname",
  "displayName": "Creator Name",
  "bio": "Fitness coach and recipe creator",
  "profileUrl": "https://www.tiktok.com/@creatorname",
  "followerCount": 125000,
  "followingCount": 320,
  "contentCount": 412,
  "verified": false,
  "privateAccount": false,
  "bioLink": "https://creator.example",
  "externalLinks": ["https://creator.example"],
  "discoveryQuery": "fitness coach",
  "provider": "scrapecreators",
  "sourceType": "search",
  "scrapedAt": "2026-07-15T12:00:00.000Z"
}
```

### Providers and reliability

ScrapeCreators is the default provider because it covers public Instagram profile discovery, TikTok user discovery, and YouTube channel search. SociaVault is used as a fallback for supported TikTok, YouTube, and direct-profile routes. Instagram keyword discovery is ScrapeCreators-only in the currently verified provider coverage; direct Instagram profile enrichment can fall back to SociaVault.

The actor records all route attempts in `RUN_SUMMARY`. A valid search with no matches returns `VALID_EMPTY`. If some sources succeed and others fail, it returns useful rows with `PARTIAL`. If every supported provider route fails without any useful profile, it fails with `UPSTREAM_FAILED`; missing owner-managed provider secrets yield `CONFIG_ERROR`. Both terminal records, `OUTPUT` and `RUN_SUMMARY`, are written for every outcome.

### Pricing

| Event | Price |
| --- | ---: |
| Actor start | $0.00005 per run |
| Influencer profile | $0.01 per validated profile saved |

Apify platform usage is charged separately under Pay per event + usage. The actor displays the event-cost cap at startup and stops at `maxTotalProfiles`, so a run capped at 50 profiles has at most $0.50005 in event charges before platform usage. A profile is charged only through the same SDK operation that persists its validated dataset row.

### API and MCP use

Run the actor with a small, precise query for agent workflows. For example, an agent can ask for five verified TikTok fitness creators with:

```json
{
  "platforms": ["tiktok"],
  "searchQueries": ["fitness coach"],
  "verifiedOnly": true,
  "maxProfilesPerQuery": 5,
  "maxTotalProfiles": 5
}
```

Use it for public creator discovery and profile enrichment. Do not use it for posts, videos, comments, transcripts, follower lists, private data, or contacting creators; select a dedicated actor for those tasks.

### Responsible use

Use only public profile information and comply with the relevant platform terms, applicable law, and your outreach/privacy obligations. A verification badge, public bio link, or follower count is a platform signal—not proof of identity, audience quality, consent, or endorsement.

### Related actors

- `instagram-user-scraper` for Instagram-only creator discovery.
- `tiktok-user-search-scraper` for TikTok-only profile search and deeper TikTok-focused filters.
- `youtube-channel-scraper` for known-channel enrichment.
- `tiktok-profile-videos-scraper` and `tiktok-profile-posts-scraper` for creator content feeds.

# Actor input Schema

## `platforms` (type: `array`):

Use this to choose which public social platforms to search. Select any combination of instagram, tiktok, and youtube; all three are the default. Discovery runs separately on each selected platform. This is not an account-login setting.

## `searchQueries` (type: `array`):

Use this when you want to discover public creators by niche, name, or brand query. Enter one query per line, for example 'fitness coach' or 'Miami food creator'. Leave it empty when enriching known profile URLs; an empty run uses a small health-check query. Accepts up to 20 terms. This is not a hashtag-post or video search.

## `profileUrls` (type: `array`):

Use this when you already know public creator profiles to enrich. Accepts profile URLs or tagged handles such as 'instagram:@natgeo' and 'youtube:@Apify'. Leave it empty for keyword discovery. This does not accept post, Reel, video, or private-profile URLs.

## `maxProfilesPerQuery` (type: `integer`):

Use this to cap returned profiles for every query-platform pair. Choose 5 for fast agent runs or up to 50 for deeper discovery. Defaults to 10 and is applied before the global run cap. This is not a follower-count filter.

## `maxTotalProfiles` (type: `integer`):

Use this to set a hard ceiling on profiles saved and charged in this run. Choose a number from 1 to 500; the default is 100. The actor stops gracefully when it reaches this cap. This is not a request-page count.

## `minFollowerCount` (type: `integer`):

Use this to keep creators with at least a specified public follower or subscriber count. Enter a whole number such as 5000; 0 keeps every returned public profile. Defaults to 0 and applies after provider retrieval. This is not an engagement-rate threshold.

## `verifiedOnly` (type: `boolean`):

Use this when a platform verification signal is required for the shortlist. Set true to keep only profiles whose provider response marks them verified. Defaults to false because verification coverage differs by platform. This is not an identity or brand-safety guarantee.

## `excludePrivateAccounts` (type: `boolean`):

Use this to remove profiles explicitly marked private by a data provider. It defaults to true so output remains useful for public influencer research. A missing privacy flag does not imply that an account is public. This is not a way to access private content.

## `providerOrder` (type: `string`):

Use this to select the managed-provider fallback order. ScrapeCreators first is the default and is generally cheaper; SociaVault is attempted after supported failures. Use an only option for controlled diagnostics. This is not a user API-key field.

## `countryCode` (type: `string`):

Use this to localize YouTube creator discovery with a two-letter country code. Enter values such as US, GB, or PK; the default is US. It affects YouTube search results only. This is not a creator-location filter.

## `includeRawData` (type: `boolean`):

Use this only for provider-schema diagnostics when you need the original public response alongside normalized fields. It defaults to false to keep dataset records compact for agents and CSV exports. Raw payloads can change without notice. This is not required for normal creator discovery.

## Actor input object example

```json
{
  "platforms": [
    "instagram",
    "tiktok"
  ],
  "searchQueries": [
    "fitness coach",
    "sustainable fashion creator"
  ],
  "profileUrls": [
    "https://www.instagram.com/natgeo/",
    "https://www.tiktok.com/@natgeo",
    "youtube:@Apify"
  ],
  "maxProfilesPerQuery": 10,
  "maxTotalProfiles": 50,
  "minFollowerCount": 5000,
  "verifiedOnly": false,
  "excludePrivateAccounts": true,
  "providerOrder": "scrapecreators-first",
  "countryCode": "US",
  "includeRawData": false
}
```

# Actor output Schema

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

Normalized public creator profiles from Instagram, TikTok, and YouTube.

## `output` (type: `string`):

Compact terminal outcome and record counters.

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

Detailed provider, filter, and charge diagnostics.

# 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 = {
    "platforms": [
        "instagram",
        "tiktok",
        "youtube"
    ],
    "searchQueries": [
        "fitness coach"
    ],
    "profileUrls": [],
    "maxProfilesPerQuery": 10,
    "maxTotalProfiles": 25,
    "minFollowerCount": 5000,
    "verifiedOnly": false,
    "excludePrivateAccounts": true,
    "providerOrder": "scrapecreators-first",
    "countryCode": "US",
    "includeRawData": false
};

// Run the Actor and wait for it to finish
const run = await client.actor("khadinakbar/social-media-influencer-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 = {
    "platforms": [
        "instagram",
        "tiktok",
        "youtube",
    ],
    "searchQueries": ["fitness coach"],
    "profileUrls": [],
    "maxProfilesPerQuery": 10,
    "maxTotalProfiles": 25,
    "minFollowerCount": 5000,
    "verifiedOnly": False,
    "excludePrivateAccounts": True,
    "providerOrder": "scrapecreators-first",
    "countryCode": "US",
    "includeRawData": False,
}

# Run the Actor and wait for it to finish
run = client.actor("khadinakbar/social-media-influencer-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "platforms": [
    "instagram",
    "tiktok",
    "youtube"
  ],
  "searchQueries": [
    "fitness coach"
  ],
  "profileUrls": [],
  "maxProfilesPerQuery": 10,
  "maxTotalProfiles": 25,
  "minFollowerCount": 5000,
  "verifiedOnly": false,
  "excludePrivateAccounts": true,
  "providerOrder": "scrapecreators-first",
  "countryCode": "US",
  "includeRawData": false
}' |
apify call khadinakbar/social-media-influencer-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=khadinakbar/social-media-influencer-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/qN3wwWqgKBCBEty0P/builds/HYLBqLTillDafFk0E/openapi.json
