# Influencer Scraper (`maximedupre/influencer-scraper`) Actor

Find public influencer profiles across TikTok, Instagram, and YouTube. Search by keyword or add usernames, @handles, and profile URLs to export profile metrics, bios, recent posts, and source links.

- **URL**: https://apify.com/maximedupre/influencer-scraper.md
- **Developed by:** [Maxime Dupré](https://apify.com/maximedupre) (community)
- **Categories:** Social media, Marketing, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

$4.45 / 1,000 influencer 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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

### 🔎 Influencer scraper for TikTok, Instagram, and YouTube

Influencer Scraper finds public influencer profiles from [TikTok](https://www.tiktok.com/), [Instagram](https://www.instagram.com/), and [YouTube](https://www.youtube.com/). Add search keywords such as `skincare creator`, or add known usernames, `@handles`, and public profile URLs, then export profile metrics, bios, recent posts, source links, and scrape timestamps.

Use this influencer scraper when you need a repeatable creator list for influencer marketing, outreach research, competitor tracking, campaign planning, or social media reporting. Instead of searching each platform by hand, you get one Apify dataset that can be downloaded as JSON, CSV, Excel, XML, RSS, or HTML, or used through the Apify API, schedules, webhooks, and integrations.

For a small first run, keep the prefilled `skincare creator` and `fitness creator` targets. The default run checks TikTok and YouTube, saves up to 10 influencer profiles per target and platform, and includes up to 6 recent public posts per profile when the source exposes them. Add Instagram in the platform selector when you need Instagram profile checks too.

### ✅ What this Actor does

- Finds public influencer profiles from TikTok, Instagram, and YouTube.
- Accepts search keywords, usernames, `@handles`, and public profile URLs in the same run.
- Saves one dataset item per found or resolved influencer profile.
- Adds the original target, target position, platform, match type, result rank, username, handle, and profile URL.
- Extracts display name, bio, avatar URL, follower count, following count, post count, like count, verification flags, visibility flags, categories, and external URL when the source exposes them.
- Adds recent public post previews with source URLs, captions, likes, comments, views, and publish timestamps when available.
- Lets you choose platforms, result order, profiles per target, and recent posts per profile.
- Continues through missing, private, blocked, or temporarily unavailable profiles without saving fake failure rows.

### 📦 Data you can export

Each output item represents one public influencer profile. Fields can include:

- `inputTarget` and `inputTargetIndex`: the target that found or resolved the profile.
- `platform`: `tiktok`, `instagram`, or `youtube`.
- `matchType`: whether the row came from a keyword, handle, or profile URL.
- `rank`, `username`, `handle`, `displayName`, and `profileUrl`.
- `bio`, `avatarUrl`, `externalUrl`, and `evidenceUrls`.
- `followerCount`, `followerCountText`, `followingCount`, `postCount`, `likeCount`, and `engagementRate` when available.
- `isVerified`, `isPrivate`, `isVisible`, `location`, and `categories`.
- `recentPosts` with post IDs, URLs, captions, likes, comments, views, and publish times when available.
- `scrapedAt` and `status`.

Some platforms expose more public fields than others. Fields can be `null` or empty when TikTok, Instagram, or YouTube does not show that value for a specific profile.

### 👥 Common use cases

- Build creator shortlists from niche keywords such as `skincare creator`, `fitness coach`, or `travel vlogger`.
- Check known influencer handles across TikTok, Instagram, and YouTube.
- Enrich public profile URLs with follower counts, bios, categories, and recent post evidence.
- Compare influencer profiles before outreach or campaign planning.
- Export repeatable creator research into a sheet, CRM, database, or API workflow.

### ▶️ How to run it

1. Open the Input tab.
2. Add one target per line in **Influencer targets**. You can mix keywords, usernames, `@handles`, and public profile URLs.
3. Choose which platforms to search.
4. Keep **Result order** on `Relevance` for source-ranked discovery, or sort by followers or engagement.
5. Set **Influencers per target** and **Recent posts per profile**.
6. Start the run and open the dataset when it finishes.

For keyword discovery, use natural topics or niches, such as `vegan recipe creator`, `streetwear influencer`, or `B2B SaaS founder`. For exact lookups, add values such as `@charlidamelio`, `instagram:natgeo`, `youtube:MrBeast`, `https://www.youtube.com/@MrBeast`, or `https://www.instagram.com/natgeo/`.

### ⚙️ Input options

- **Influencer targets**: search keywords, usernames, `@handles`, or public profile URLs. Add one target per line.
- **Platforms**: TikTok, Instagram, YouTube, or any combination of the three.
- **Result order**: source relevance, most followers, or highest engagement.
- **Recent posts per profile**: how many recent public post previews to include. Use `0` for profile-level metrics only.
- **Influencers per target**: maximum profiles to save for each target and platform.

### 🧾 Example output

```json
{
  "inputTarget": "skincare creator",
  "inputTargetIndex": 1,
  "platform": "tiktok",
  "matchType": "keyword",
  "rank": 1,
  "username": "curatedbyange",
  "handle": "@curatedbyange",
  "displayName": "Angela • UGC",
  "profileUrl": "https://www.tiktok.com/@curatedbyange",
  "bio": "Skincare and beauty content creator",
  "followerCount": 28100,
  "followerCountText": "28100",
  "followingCount": 1200,
  "postCount": 342,
  "likeCount": 940000,
  "engagementRate": 2.14,
  "isVerified": false,
  "isPrivate": false,
  "isVisible": true,
  "location": [],
  "categories": [],
  "avatarUrl": "https://example.com/avatar.jpg",
  "externalUrl": null,
  "recentPosts": [
    {
      "id": "7554876451548417310",
      "url": "https://www.tiktok.com/@curatedbyange/video/7554876451548417310",
      "caption": "Skincare routine",
      "likeCount": 61000,
      "commentCount": 1100,
      "viewCount": 1000000,
      "publishedAt": "2026-05-28T08:26:40.000Z"
    }
  ],
  "evidenceUrls": [
    "https://www.tiktok.com/search/video?q=skincare%20creator"
  ],
  "scrapedAt": "2026-06-05T18:52:00.000Z",
  "status": "ok"
}
````

### 💳 Pricing

This Actor uses pay-per-event pricing. You are charged for each public influencer profile saved to the dataset. Runs that find no usable profiles do not save placeholder rows.

### ⚠️ Limits and caveats

- The Actor collects public profile data only.
- It supports TikTok, Instagram, and YouTube. It does not search X, Facebook, Twitch, Reddit, Pinterest, Threads, or LinkedIn.
- It does not scrape private profiles, follower lists, following lists, comments, stories, inboxes, paid analytics, or hidden contact data.
- Recent post previews depend on what each source exposes publicly at run time.
- Keyword discovery results can change because each platform controls ranking, availability, and visible public data.
- Unsupported, unavailable, private, blocked, or temporarily unreachable profiles are reported in logs instead of saved as fake dataset rows.

### ❓ FAQ

#### 🔑 Do I need social media logins or API keys?

No. The Actor is built for public TikTok, Instagram, and YouTube data and does not ask you for cookies, account credentials, or platform API keys.

#### 🔎 Can it search by keyword?

Yes. Add a niche, topic, product, or audience keyword such as `skincare creator`. The Actor searches supported platforms and saves matching public influencer profiles.

#### 👤 Can I check exact profiles too?

Yes. Add usernames, `@handles`, platform-prefixed usernames, or public profile URLs. Exact targets are resolved as profile lookups when the platform is clear.

#### 📱 Does it return posts?

It can include recent public post previews for each profile when the source exposes them. Set **Recent posts per profile** to `0` if you only need profile-level data.

### 📝 Changelog

- 0.1: Initial release.

### 🆘 Support

For issues, questions, or feature requests, [file a ticket](https://console.apify.com/actors/maximedupre~influencer-scraper/issues) and I'll fix or implement it in less than 24h 🫡

### 🔗 Other actors

- [Social Media Stats Checker ↗](https://apify.com/maximedupre/social-media-stats-checker) - Check public profile stats across many social platforms.
- [Instagram Profile Stats Scraper ↗](https://apify.com/maximedupre/instagram-profile-stats-scraper) - Export detailed public Instagram profile metrics for known profiles.
- [YouTube Channel Search Scraper ↗](https://apify.com/maximedupre/youtube-channel-search-scraper) - Discover public YouTube channels from search keywords.
- [TikTok Profile Mention Scraper ↗](https://apify.com/maximedupre/tiktok-profile-mention-scraper) - Find public TikTok videos that mention selected profiles.
- [TikTok Keywords Discovery Tool ↗](https://apify.com/maximedupre/tiktok-keywords-discovery-tool) - Collect TikTok autocomplete keyword suggestions for content research.

**Made with ❤️ by Maxime Dupré**

# Actor input Schema

## `targets` (type: `array`):

Add one target per line.

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

Select where to search for influencer profiles.

## `sortBy` (type: `string`):

Relevance keeps the source order when available.

## `maxRecentPostsPerProfile` (type: `integer`):

Use 0 to save profile-level metrics only.

## `maxInfluencersPerTarget` (type: `integer`):

Maximum profiles to save for each target.

## Actor input object example

```json
{
  "targets": [
    "skincare creator",
    "fitness creator"
  ],
  "platforms": [
    "tiktok",
    "youtube"
  ],
  "sortBy": "relevance",
  "maxRecentPostsPerProfile": 6,
  "maxInfluencersPerTarget": 10
}
```

# Actor output Schema

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

Open the dataset with one item per found or resolved influencer 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 = {
    "targets": [
        "skincare creator",
        "fitness creator"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("maximedupre/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 = { "targets": [
        "skincare creator",
        "fitness creator",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("maximedupre/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 '{
  "targets": [
    "skincare creator",
    "fitness creator"
  ]
}' |
apify call maximedupre/influencer-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Influencer Scraper",
        "description": "Find public influencer profiles across TikTok, Instagram, and YouTube. Search by keyword or add usernames, @handles, and profile URLs to export profile metrics, bios, recent posts, and source links.",
        "version": "0.1",
        "x-build-id": "AvUN1Dijh7RM70e6p"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/maximedupre~influencer-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-maximedupre-influencer-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/maximedupre~influencer-scraper/runs": {
            "post": {
                "operationId": "runs-sync-maximedupre-influencer-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/maximedupre~influencer-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-maximedupre-influencer-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "targets"
                ],
                "properties": {
                    "targets": {
                        "title": "Influencer targets",
                        "minItems": 1,
                        "maxItems": 500,
                        "type": "array",
                        "description": "Add one target per line.",
                        "items": {
                            "type": "string",
                            "minLength": 1
                        }
                    },
                    "platforms": {
                        "title": "Platforms",
                        "minItems": 1,
                        "uniqueItems": true,
                        "type": "array",
                        "description": "Select where to search for influencer profiles.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "tiktok",
                                "instagram",
                                "youtube"
                            ],
                            "enumTitles": [
                                "TikTok",
                                "Instagram",
                                "YouTube"
                            ]
                        },
                        "default": [
                            "tiktok",
                            "youtube"
                        ]
                    },
                    "sortBy": {
                        "title": "Result order",
                        "enum": [
                            "relevance",
                            "followers",
                            "engagement"
                        ],
                        "type": "string",
                        "description": "Relevance keeps the source order when available.",
                        "default": "relevance"
                    },
                    "maxRecentPostsPerProfile": {
                        "title": "Recent posts per profile",
                        "minimum": 0,
                        "maximum": 20,
                        "type": "integer",
                        "description": "Use 0 to save profile-level metrics only.",
                        "default": 6
                    },
                    "maxInfluencersPerTarget": {
                        "title": "Influencers per target",
                        "minimum": 1,
                        "maximum": 100,
                        "type": "integer",
                        "description": "Maximum profiles to save for each target.",
                        "default": 10
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
