# Instagram TikTok YouTube Influencer Search API - Modash (`nabeelbaghoor/instagram-tiktok-youtube-influencer-discovery-api`) Actor

Search Instagram, TikTok and YouTube influencers by followers, engagement, location, language, keywords, lookalikes and audience country, age, gender and credibility. Audience reports with fake follower types, contact emails and sponsored post stats, plus live posts and comments. Your own key.

- **URL**: https://apify.com/nabeelbaghoor/instagram-tiktok-youtube-influencer-discovery-api.md
- **Developed by:** [Nabeel Hassan](https://apify.com/nabeelbaghoor) (community)
- **Categories:** Social media, Marketing, Lead generation
- **Stats:** 2 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 creator or lookup rows

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

## Instagram TikTok YouTube Influencer Search API - Modash

Find Instagram, TikTok and YouTube influencers with real audience filters, pull a full creator audience report for each one, and read their live posts, reels, videos and comments, as clean rows ready for a CRM, a spreadsheet or an outreach pipeline.

### What it collects

- **Influencer discovery search**: creators on Instagram, TikTok or YouTube matching your filters: followers, engagement rate, engagements, average views or reels plays, creator location, language, gender and age, posted within days, bio or name, caption keywords, topics and lookalike creators (#cars, @topgear), audience similar to a creator, hashtags and mentions used, interests, brands worked with, Instagram account type, contact channels listed, verified, sponsored posts, follower growth, and audience location, language, gender, age, interests and credibility, each with a minimum share. 15 creators per page, sortable by followers, engagement, views, growth or audience share.
- **Creator audience report**: per handle, profile URL or user id. Followers, engagement rate, average views, creator country, gender, age group and language, bio, contact emails and other contacts, audience credibility (the inverse of fake followers), audience types (real, suspicious, mass followers, influencers), audience gender, age, top countries and languages, creator interests, brand affinity, sponsored and non-sponsored post performance, plus the provider's whole report under `raw` (recent, popular and sponsored posts, monthly history, notable followers, lookalikes).
- **Creator lookup**: creators on one network matching a handle or name, with followers and verified status. Free on the provider side.
- **Filter dictionary**: the location, language, interest, brand, topic and hashtag ids the discovery filters take. Free on the provider side.
- **Live profile**: real-time Instagram, TikTok or YouTube profile: followers, bio, verified, private, posts or videos count, total likes or views.
- **Live posts**: real-time Instagram feed posts or reels, TikTok videos, or YouTube uploads, with caption, publish time, likes, comments, views and shares.
- **Live comments**: real-time comments on an Instagram post or a TikTok video, with author, likes and reply count.
- **Live hashtag feed**: real-time Instagram posts for a hashtag, top or recent.
- **Account balance**: credits and raw requests left, and your rate limits.
- Read only, pay per result, bring your own key.

### Input

| Field | What it does |
| --- | --- |
| What to read | Discovery search (default), creator audience report, creator lookup, filter dictionary, live profile, live posts, live comments, live hashtag feed, or account balance. |
| Social network | Instagram, TikTok or YouTube. |
| Identifiers | Reports and live data: handles, profile URLs, user ids, post URLs, video ids or hashtags. Lookup and dictionary: search terms. |
| Followers, engagement rate, engagements, views, reels plays | Discovery: creator size and performance ranges. |
| Creator location ids, language, gender, age, posted within days | Discovery: who the creator is. |
| Bio, keywords, topics and lookalikes, audience similar to, hashtags, mentions | Discovery: what the creator posts and who they resemble. |
| Interest ids, brand ids, account types, contact channels, verified, sponsored posts, YouTube channel, audience data | Discovery: more creator filters. |
| Follower growth period, comparison and rate | Discovery: fast-growing or shrinking creators. |
| Audience location ids, language, gender, age groups, interest ids, credibility | Discovery: who the audience is, each with an optional minimum share. |
| Sort by, sort direction, average method | Discovery order and how averages are computed. |
| Include the full report | Report: keep the provider's whole report under `raw`. |
| Dictionary | Which ids to list. |
| Instagram post type, YouTube video order, hashtag feed type, pages per identifier | Live data options. |
| Maximum results | Row cap for the run. It also caps the provider credits a search spends. |
| Requests per minute | Pacing for calls to the provider. |
| API token | Your own API token, as a secret input. |

Filters that do not apply to the chosen network are left off with a warning in the log, because a filter a network does not support can quietly empty the result. Rates and shares in the output are fractions from 0 to 1, as the provider returns them: an `engagementRate` of 0.0213 is 2.13 percent.

### Example output

A creator audience report row (trimmed):

```json
{
  "service": "report",
  "requested": "mrbeast",
  "found": true,
  "platform": "instagram",
  "userId": "2278169415",
  "username": "mrbeast",
  "title": "MrBeast",
  "url": "https://www.instagram.com/mrbeast/",
  "followers": 63000000,
  "engagementRate": 0.0213,
  "isVerified": true,
  "creatorCountry": "US",
  "creatorGender": "MALE",
  "language": "en",
  "emails": ["business@example.com"],
  "audienceCredibility": 0.81,
  "audienceGender": { "male": 0.62, "female": 0.38 },
  "audienceAge": { "13-17": 0.12, "18-24": 0.41, "25-34": 0.31 },
  "audienceCountries": [{ "code": "US", "name": "United States", "share": 0.27 }],
  "audienceTypes": { "real": 0.72, "suspicious": 0.12, "massFollowers": 0.09, "influencers": 0.07 },
  "metrics": { "averageLikes": 1400000, "sponsoredPostsMedianLikes": 900000 },
  "note": null
}
```

A live TikTok post row:

```json
{
  "service": "rawPosts",
  "requested": "@mrbeast",
  "platform": "tiktok",
  "postId": "7364804047850884398",
  "postUrl": "https://www.tiktok.com/@mrbeast/video/7364804047850884398",
  "postType": "video",
  "text": "Video caption",
  "publishedAt": "2026-09-30T17:00:00.000Z",
  "likes": 2100000,
  "comments": 15400,
  "views": 31000000,
  "shares": 22000,
  "username": "mrbeast",
  "page": 1
}
```

Values are illustrative.

### FAQ

#### What is this influencer search API used for?

Finding and vetting creators for influencer marketing on Instagram, TikTok and YouTube. A brand team searches TikTok for fitness creators in the United States with 50,000 to 500,000 followers, at least 3 percent engagement and an audience that is mostly 18 to 34, then pulls the audience report of the shortlist to check audience credibility, fake follower types and contact emails before outreach. An agency tracks the live posts and comments of creators in a campaign. A creator platform enriches sign-ups with followers, engagement rate and audience geography.

#### Which data source does this actor read?

The Modash API at api.modash.io/v1, through routes of its public documentation at docs.modash.io. Discovery API: `POST /{platform}/search`, `GET /{platform}/profile/{userId}/report`, `GET /{platform}/users`, the dictionaries `GET /{platform}/locations`, `/languages`, `/topics`, `/hashtags`, `/instagram/interests` and `/instagram/brands`, and `GET /user/info`. Raw API: `/raw/ig/user-info`, `/raw/ig/user-feed`, `/raw/ig/user-reels`, `/raw/ig/hashtag-feed`, `/raw/ig/media-comments`, `/raw/tiktok/user-info`, `/raw/tiktok/user-feed`, `/raw/tiktok/comments`, `/raw/youtube/channel-info` and `/raw/youtube/uploaded-videos`. Nothing is written: lists, collaborations, audience overlap, email search and AI search are not called.

#### Do I need an API key?

Yes. This actor is bring-your-own-key and never ships one. Copy the API token from the developer section of your Modash account and paste it into the API token input, or set it once as the `DATA_API_KEY` environment secret. It is sent as a bearer token to the API host only. A missing or refused token ends the run cleanly with a message saying which it was.

#### What does each request cost on the provider side?

Discovery search costs 0.01 credits per result returned, about 0.15 credits per page of 15. Each creator audience report costs 1 credit. Creator lookup, the dictionaries and the account balance cost nothing. Each Raw API call (one profile, or one page of posts or comments) takes one raw request from the plan's separate raw request balance. The maximum results and pages per identifier inputs cap what a run can spend, and the account balance service shows what is left.

#### What is audience credibility?

The provider's share of an Instagram audience that looks real, from 0 to 1. It is the inverse of fake followers: 0.75 means about 25 percent fake. Instagram reports also split the audience into real, suspicious, mass followers and influencers under `audienceTypes`. Audience credibility can be used as a discovery filter on Instagram.

#### What are directs and lookalikes in a search?

Every discovery row has a `matchType`. A direct match fits your filters as given; a lookalike is returned for topic or audience similarity filters. Both match the filters in the request.

#### What happens when a report is not ready?

The provider answers that the audience for this creator is not built yet and does not charge for it. The row has `found: false` and a note; run again in a few hours.

#### What happens when there is nothing for an account?

It becomes its own row with `found: false` and a note: a profile not in the database (the provider can add one, usually within about 48 hours), a private account, or a request the provider did not accept. Those rows are never charged.

#### How is it priced?

Pay per result: $0.005 per creator from a discovery search or lookup and per dictionary entry, $0.02 per creator audience report, and $0.005 per live profile, post or comment. Rows for requests that produced nothing and the account balance are free. Your Modash subscription applies separately.

### Pricing

| Event | Price |
| --- | --- |
| Creator or lookup row (discovery, creator lookup, dictionary entry) | $0.005 per row |
| Creator audience report returned | $0.02 per report |
| Live profile, post or comment | $0.005 per row |

### Keyword map

influencer search API, influencer discovery API, Instagram influencer search, TikTok influencer search, YouTube influencer search, influencer audience report, fake follower checker, audience credibility, creator audience demographics, lookalike influencers, influencer email finder, engagement rate API, creator marketing data, TikTok posts API, Instagram comments API, Instagram hashtag feed, YouTube channel videos, Modash API, Modash discovery API, Modash raw API.

# Actor input Schema

## `service` (type: `string`):

Discovery search finds creators on one network with the filters below and needs no identifiers, so it is the default. Creator audience report reads the full audience analytics of each creator in the identifiers input (1 provider credit each). Creator lookup finds creators by handle or name. Filter dictionary lists the location, language, interest, brand, topic or hashtag ids the filters take. Live profile, live posts, live comments and live hashtag feed read real-time data from the raw endpoints. Account balance reads the credits and raw requests left.

## `socialNetwork` (type: `string`):

The network to search or read.

## `identifiers` (type: `array`):

One per line. Creator audience report and live profile or posts: handles (with or without @), profile URLs or user ids; YouTube takes a channel URL, @handle or channel id. Creator lookup: handles or names. Filter dictionary: search terms (optional for locations, languages, interests and brands). Live comments: Instagram post URLs or shortcodes, or TikTok video URLs or ids. Live hashtag feed: hashtags. Discovery search and account balance read none.

## `followersMin` (type: `integer`):

Discovery: followers (subscribers on YouTube) at least this many. The provider rounds the value.

## `followersMax` (type: `integer`):

Discovery: followers (subscribers on YouTube) at most this many. The provider rounds the value.

## `engagementRateMin` (type: `number`):

Discovery: engagement rate in percent, from 0 to 100. Sent to the provider as a fraction (2 becomes 0.02).

## `engagementsMin` (type: `integer`):

Discovery: average engagements per post at least this many.

## `engagementsMax` (type: `integer`):

Discovery: average engagements per post at most this many. On Instagram, 0 finds creators with hidden likes.

## `viewsMin` (type: `integer`):

Discovery, TikTok and YouTube: average views at least this many.

## `viewsMax` (type: `integer`):

Discovery, TikTok and YouTube: average views at most this many.

## `reelsPlaysMin` (type: `integer`):

Discovery, Instagram: average reels plays at least this many.

## `reelsPlaysMax` (type: `integer`):

Discovery, Instagram: average reels plays at most this many.

## `creatorLocationIds` (type: `array`):

Discovery: location ids of where the creator is, from the locations dictionary (Filter dictionary service), such as 148838 for the United States.

## `creatorLanguage` (type: `string`):

Discovery: language code the creator posts in, such as en, from the languages dictionary.

## `creatorGender` (type: `string`):

Discovery.

## `creatorAgeMin` (type: `string`):

Discovery: the creator's age, at least.

## `creatorAgeMax` (type: `string`):

Discovery: the creator's age, at most.

## `lastPostedDays` (type: `integer`):

Discovery: the creator posted within this many days. 30 or more.

## `bioSearch` (type: `string`):

Discovery: words to find in the creator's bio or full name.

## `keywords` (type: `string`):

Discovery: a phrase the creator uses in post captions or video text.

## `relevance` (type: `array`):

Discovery: topics the creator posts about as #hashtags, or @handles of creators whose content is similar, such as #cars and @topgear. A bare word is sent as a #topic.

## `audienceRelevance` (type: `array`):

Discovery: @handles whose audience the creator's audience should resemble.

## `hashtags` (type: `array`):

Discovery, Instagram and TikTok: hashtags the creator has used, without #.

## `mentions` (type: `array`):

Discovery, Instagram and TikTok: accounts the creator has mentioned, without @.

## `interestIds` (type: `array`):

Discovery, Instagram: interest ids from the interests dictionary.

## `brandIds` (type: `array`):

Discovery, Instagram: ids of brands the creator has worked with, from the brands dictionary.

## `accountTypes` (type: `array`):

Discovery, Instagram.

## `contactTypes` (type: `array`):

Discovery: only creators listing each of these contact channels.

## `onlyVerified` (type: `boolean`):

Discovery: only verified creators.

## `onlySponsoredPosts` (type: `boolean`):

Discovery, Instagram: creators the provider has seen post paid partnerships or commercial hashtags.

## `onlyWithYouTube` (type: `boolean`):

Discovery, Instagram.

## `hasAudienceData` (type: `string`):

Discovery: only creators the provider has audience data for, or all.

## `followersGrowthInterval` (type: `string`):

Discovery: the period follower growth is measured over, with the operator and rate below.

## `followersGrowthOperator` (type: `string`):

Discovery: how growth compares to the rate below.

## `followersGrowthRate` (type: `number`):

Discovery: the growth rate as the provider takes it, a fraction such as 0.01.

## `audienceLocationIds` (type: `array`):

Discovery: location ids the audience comes from, from the locations dictionary. Several are combined with OR.

## `audienceLocationMinPercent` (type: `integer`):

Discovery: the least share of the audience each location must hold. Leave blank for the provider default (20).

## `audienceLanguage` (type: `string`):

Discovery: language code of the audience, such as en.

## `audienceLanguageMinPercent` (type: `integer`):

Discovery: leave blank for the provider default (20).

## `audienceGender` (type: `string`):

Discovery: the gender the audience leans to.

## `audienceGenderMinPercent` (type: `integer`):

Discovery: leave blank for the provider default (50).

## `audienceAgeGroups` (type: `array`):

Discovery: audience age groups, combined with OR.

## `audienceAgeMinPercent` (type: `integer`):

Discovery: leave blank for the provider default (30).

## `audienceInterestIds` (type: `array`):

Discovery, Instagram: audience interest ids from the interests dictionary.

## `audienceInterestMinPercent` (type: `integer`):

Discovery, Instagram: leave blank for the provider default.

## `audienceCredibilityMin` (type: `number`):

Discovery, Instagram: audience credibility, the inverse of fake followers (75 means about 25 percent fake).

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

Discovery: the order results come in. Audience and keyword sorts need their filter set.

## `sortDirection` (type: `string`):

Discovery.

## `calculationMethod` (type: `string`):

Discovery and reports: how average likes, comments and views are computed.

## `includeRawReport` (type: `boolean`):

Creator audience report: keep the provider's whole report under raw (recent, popular and sponsored posts, history, notable followers, lookalikes), alongside the flattened columns.

## `dictionaryType` (type: `string`):

Filter dictionary: which ids to list. Interests and brands are Instagram only.

## `rawPostType` (type: `string`):

Live posts, Instagram: the feed (12 posts a page) or reels.

## `youtubeSort` (type: `string`):

Live posts, YouTube: newest first or most popular.

## `hashtagFeedType` (type: `string`):

Live hashtag feed: top (featured posts, best coverage) or recent (a newer, partial subset).

## `rawMaxPages` (type: `integer`):

Live posts, comments and hashtag feed: how many pages to read per identifier. Each page takes one raw request from your plan.

## `maxResults` (type: `integer`):

Stop after this many rows. Discovery reads 15 creators per page and the provider charges 0.01 credits per result, so this also caps what the run spends there. The provider serves pages 0 to 665.

## `requestsPerMinute` (type: `integer`):

Pacing ceiling for calls to the provider. Rate limited answers are retried after a pause. The account balance service shows your plan's rate limits.

## `apiKey` (type: `string`):

Your own API token from the developer section of the provider's app, sent as a bearer token. This actor is bring-your-own-key and never ships one. Leave blank to use the DATA_API_KEY environment secret. It is sent only to the API host and is never written to a row or logged.

## `baseUrl` (type: `string`):

Override the host the actor calls. Only useful for testing against a different environment.

## Actor input object example

```json
{
  "service": "search",
  "socialNetwork": "instagram",
  "creatorGender": "any",
  "creatorAgeMin": "any",
  "creatorAgeMax": "any",
  "onlyVerified": false,
  "onlySponsoredPosts": false,
  "onlyWithYouTube": false,
  "hasAudienceData": "any",
  "followersGrowthInterval": "any",
  "followersGrowthOperator": "gt",
  "audienceGender": "any",
  "sortBy": "followers",
  "sortDirection": "desc",
  "calculationMethod": "median",
  "includeRawReport": true,
  "dictionaryType": "locations",
  "rawPostType": "feed",
  "youtubeSort": "dd",
  "hashtagFeedType": "top",
  "rawMaxPages": 3,
  "maxResults": 100,
  "requestsPerMinute": 60
}
```

# Actor output Schema

## `records` (type: `string`):

One row per creator, audience report, dictionary entry, live profile, post, comment or account balance.

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("nabeelbaghoor/instagram-tiktok-youtube-influencer-discovery-api").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("nabeelbaghoor/instagram-tiktok-youtube-influencer-discovery-api").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 '{}' |
apify call nabeelbaghoor/instagram-tiktok-youtube-influencer-discovery-api --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,nabeelbaghoor/instagram-tiktok-youtube-influencer-discovery-api"
        }
    }
}
```

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/Mhrd7h1yetU58KcQc/builds/JXSfXyiHy8AUeS80i/openapi.json
