# Influencer Search API - Instagram, TikTok, YouTube - Upfluence (`nabeelbaghoor/influencer-search-audience-demographics-api`) Actor

Search Upfluence's creator index by keywords, followers, engagement rate, country, language, location and audience country, age and gender. Pull full profiles with every Instagram, TikTok and YouTube account, audience demographics, recent posts and brand mentions. Read only. Bring your own token.

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

## Pricing

from $8.00 / 1,000 influencer founds

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

## Influencer Search API - Instagram, TikTok, YouTube - Upfluence

Find Instagram, TikTok and YouTube influencers in the Upfluence creator index by keyword, follower range, engagement rate, country, language, location and audience demographics, then pull each creator's full profile, audience report, recent posts and brand mentions as clean rows for a spreadsheet, CRM or data warehouse.

### What it collects

- **Influencer search**: creators matching your keywords (anywhere, or in one field such as the Instagram bio, Instagram post text, TikTok video names or YouTube descriptions), filtered by followers, minimum engagement rate, creator country, language and age, email availability, distance from a city, and audience country, gender and age share. Sorted by relevancy, influencer score, followers, engagement rate, average engagements, average likes or growth rate. Up to 200 per page, first 10,000 results.
- **Search statistics**: how many creators a search matches, broken down by creator country, language, platform reach, audience age, audience gender and real versus fake audience.
- **Influencer profile**: everything the provider holds for an influencer id: name, country, language, gender, bio, categories, email when unlocked, and every linked Instagram, TikTok, YouTube, Twitter (X), Pinterest and Twitch account with followers, engagement rate, average likes, comments, views and shares, growth rates and verified status.
- **Profile lookup by URL**: the same profile for a social profile link, such as `https://www.instagram.com/nasa/` or `https://www.tiktok.com/@nasa`.
- **Audience demographics**: gender split, age groups, top countries, states and cities, fake follower share and legal drinking age share, each with its sample size and confidence flag.
- **Recent posts**: up to 100 recent Instagram posts, TikTok videos, YouTube videos or Shorts, tweets, pins or Twitch streams per account, with likes, comments, views or plays, shares, reach, impressions, mentions and hashtags.
- **Brand mentions**: the brands an Instagram or TikTok account mentions, with posts and engagements per brand and the account's mention totals.
- Read only, pay per result, bring your own token.

### What is and is not wired

All calls go to `https://api.upfluence.co`, with the token from `https://identity.upfluence.co/token`, exactly as documented at docs.upfluence.co.

| Mode | Route |
| --- | --- |
| Influencer search | `POST /v1/matches` |
| Search statistics | `POST /v1/counts` |
| Influencer profile | `GET /v1/influencers/{id}` |
| Profile lookup by URL | `GET /v1/influencers/lookup` |
| Audience demographics | `GET /v1/audience` |
| Recent posts | `GET /v1/instagram_medias`, `/v1/tiktok_videos`, `/v1/youtube_videos`, `/v1/tweets`, `/v1/pins`, `/v1/twitch_streams` |
| Brand mentions | `GET /v1/media/mentions` |

The two POST routes are searches and change nothing. Not wired: profile ingestion, tags, merge fields and custom attributes, lists and list entries, campaigns, contributions, orders and the social listening streams. Nothing in your account is changed.

### Input

| Field | What it does |
| --- | --- |
| What to read | One of the seven modes above. Influencer search is the default. |
| Keywords, search keywords in, keyword match | Full text criteria and where they are matched. |
| Platform, minimum and maximum followers, minimum engagement rate | Reach and engagement filters on one platform. |
| Influencer countries, languages, age, only creators with an email | Creator filters. |
| Near city, radius | Location filter. |
| Audience platform, country, gender, age and their minimum shares | Audience filters on Instagram or TikTok followers. |
| Every platform filter must match | AND rather than OR between platform filters. |
| Sort by, sort direction | Search order. |
| Advanced filters | Any other documented filter as JSON, such as recent activity or list exclusion. |
| Statistics | The breakdowns search statistics counts. |
| Identifiers | Influencer ids, profile URLs or platform account ids, one per line. |
| Post platform, YouTube video type, posts per account | Options for recent posts and brand mentions. |
| Include the full record | Keep the provider's whole answer under `raw`. |
| Maximum results, requests per minute | Row cap and pacing. |
| Access token or client credentials | Your own access, as a secret input. |

### Example output

A search row:

```json
{
  "mode": "search",
  "recordType": "influencer",
  "found": true,
  "rank": 1,
  "influencerId": 427878,
  "name": "Jane Smith",
  "country": "US",
  "language": "en",
  "gender": "female",
  "description": "Fashion and lifestyle content creator based in NYC",
  "communitySize": 158300,
  "followers": 158300,
  "hasEmail": true,
  "categories": ["Fashion", "Beauty"],
  "matchScore": 12,
  "score": 25,
  "note": null
}
```

A recent post row:

```json
{
  "mode": "posts",
  "recordType": "post",
  "found": true,
  "platform": "instagram",
  "accountId": 144198,
  "postId": "3051234567890123456",
  "url": "https://www.instagram.com/p/Cx1234abcd/",
  "text": "Spring looks with @brand",
  "postType": "reel",
  "publishedAt": "2026-09-28T17:02:11.000Z",
  "likes": 18420,
  "comments": 312,
  "views": 254000,
  "reach": 190500,
  "impressions": 263100,
  "mentionedProfiles": ["brand"]
}
```

Values are illustrative.

### FAQ

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

Building influencer shortlists and creator databases outside the Upfluence web app. A brand team searches for US fitness creators on Instagram with 50,000 to 500,000 followers, over 3% engagement and a mostly female audience, and loads them into a spreadsheet. An agency checks the audience countries and fake follower share of a list of TikTok creators before a campaign. A marketplace enriches creator profile links with followers, engagement and recent posts.

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

The Upfluence API, through the routes in its public documentation at docs.upfluence.co: influencer search and statistics, influencer profiles and profile lookup, audience data, media and brand mentions. Upfluence indexes more than 14 million creators across Instagram, TikTok, YouTube, Twitter (X), Pinterest, Twitch and blogs.

#### Do I need an Upfluence account and API access?

Yes. This actor is bring-your-own-key and never ships one. Upfluence issues API client credentials to its customers. Paste either a ready access token, or your client id and secret as `client_id:client_secret`, in which case the actor asks the identity service for a one hour token at the start of the run. Or set the same value once as the `DATA_API_KEY` environment secret. A missing, expired or refused credential ends the run cleanly with a message saying which it was.

#### Does it use my Upfluence credits?

Yes. Upfluence meters searches and profile views against a monthly credit allowance, which resets at the start of each month; tokens.upfluence.com estimates what a query costs. The actor reads only as many search pages as the maximum results needs, logs the allowance headers the provider returns, and ends the run cleanly when the allowance is used up.

#### Which filters can the search use?

Every filter in the provider's search documentation. The input offers the common ones directly: keywords in any indexed field, followers, engagement rate, creator country, language and age, email availability, distance from a city, and audience country, gender and age share on Instagram or TikTok. Any other documented filter, such as recent posting activity, growth rates, brand safety or excluding creators already in one of your lists, goes in the advanced filters input as JSON.

#### What audience demographics are returned?

Per influencer: the female and male share, the age group distribution, the top countries, states and cities with their share, the fake versus real follower share and, on Instagram, the share above legal drinking age. Each comes with its sample size and whether the provider considers it statistically confident.

#### Can I get a creator's posts from a profile link?

Yes, in two steps. Run the profile lookup with the link; the row carries `instagramId`, `tiktokId`, `youtubeId` and the other platform account ids. Then run recent posts or brand mentions with those ids.

#### Are there limits?

A search serves its first 10,000 results, at most 200 per page. The identity service rate limits token requests, so the actor asks for one token per run and retries politely. Upfluence's terms restrict API data to your own internal use.

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

It becomes its own row with `found: false` and a note: an influencer id the provider does not have, a profile link it cannot match, or an influencer with no audience data. Those rows are never charged.

#### How is it priced?

Pay per result: $0.008 per influencer from a search, $0.015 per full profile or audience report, and $0.005 per post, brand mention or statistic bucket. Rows for identifiers that produced nothing are free. Your Upfluence subscription and credits apply separately.

### Keywords

influencer search API, influencer discovery, Instagram influencer search, TikTok creator search, YouTube creator database, influencer audience demographics, fake follower check, influencer engagement rate, creator profile lookup, brand mentions, Upfluence API export

# Actor input Schema

## `mode` (type: `string`):

Influencer search finds creators in the provider index with the keywords and filters below and needs no identifiers, so it is the default. Search statistics counts the same search by country, language, platform and audience. Influencer profile, audience demographics: one influencer id per line. Profile lookup by URL: one social profile link per line. Recent posts and brand mentions: one platform account id per line (the instagramId, tiktokId, youtubeId and so on of a profile row).

## `keywords` (type: `array`):

Influencer search and statistics: terms or phrases to look for, one per line, in the field chosen below. Leave empty to search on filters alone.

## `searchIn` (type: `string`):

Where the keywords are matched: everywhere, or one documented field such as the Instagram bio, Instagram post text, TikTok video names, YouTube video descriptions or hashtags.

## `keywordMatch` (type: `string`):

Should: any keyword raises relevancy. Must: every keyword has to match. Must not: exclude creators matching the keywords.

## `platform` (type: `string`):

The social platform the follower range, minimum engagement rate and sort apply to.

## `minFollowers` (type: `integer`):

Lowest follower count on the platform above. Leave empty for no lower bound.

## `maxFollowers` (type: `integer`):

Highest follower count on the platform above. Leave empty for no upper bound.

## `minEngagementRate` (type: `number`):

Lowest average engagement rate on the platform above, as a percentage (3 means 3%). Instagram, TikTok, YouTube, Twitter and Pinterest only.

## `countries` (type: `array`):

Two-letter ISO country codes of the creator, one per line (US, GB, FR). Any of them matches.

## `languages` (type: `array`):

Two-letter ISO 639-1 language codes of the creator, one per line (en, fr, es). Any of them matches.

## `ageBrackets` (type: `array`):

The creator's own age bracket. Any of them matches.

## `withEmail` (type: `boolean`):

Keep only creators the provider holds an email address for.

## `nearLocation` (type: `string`):

A city or place name. Keeps creators located within the radius below of it.

## `radiusKm` (type: `integer`):

Search radius around the city above, in kilometres.

## `audiencePlatform` (type: `string`):

Whose audience the audience filters below read: the creator's Instagram or TikTok followers.

## `audienceCountry` (type: `string`):

Two-letter ISO code of a country the audience should come from, such as US.

## `audienceCountryMin` (type: `number`):

Keep creators whose audience share in that country is above this percentage.

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

Gender the audience should lean to.

## `audienceGenderMin` (type: `number`):

Keep creators whose audience share of that gender is above this percentage.

## `audienceAge` (type: `string`):

Age group the audience should include. Instagram takes 18-20, 18-24, 21-24, 25-34 and 35-54; TikTok takes 13-17, 18-24, 25-34, 35-44, 45-65 and 65+.

## `audienceAgeMin` (type: `number`):

Keep creators whose audience share in that age group is above this percentage.

## `matchAllPlatforms` (type: `boolean`):

When filters name several platforms, require all of them (AND) rather than any of them (OR).

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

Search order. Metrics are read on the platform chosen above; engagement rate is not offered on TikTok or Twitch and average likes not on Twitter or Twitch.

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

Highest first or lowest first.

## `advancedFilters` (type: `array`):

More search filters as JSON objects exactly as the provider documents them, for example {"type": "range-date", "field": "instagram.medias.timestamp", "order": ">", "value": "3mo"} or {"type": "exclude-lists", "value": \[229264]}. Types: string, multi-string, int, multi-int, existence, geocoded, range-int, range-date, average-engagement, exclude-lists, include-lists, brand_safety.

## `aggregations` (type: `array`):

Search statistics: which breakdowns to count. Leave empty for all of them.

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

One per line. Influencer profile and audience demographics: influencer ids, as the search returns them. Profile lookup by URL: Instagram, YouTube, TikTok, Pinterest, Twitch or Twitter profile links. Recent posts and brand mentions: platform account ids such as the instagramId of a profile row.

## `postPlatform` (type: `string`):

Recent posts and brand mentions: the platform the account ids belong to. Brand mentions take Instagram and TikTok.

## `youtubeVideoType` (type: `string`):

Recent YouTube posts: all videos, Shorts only or regular videos only.

## `postsPerAccount` (type: `integer`):

Recent posts: how many posts to read per account. Brand mentions: how many brands to list per account. The provider allows up to 100.

## `includeRaw` (type: `boolean`):

Keep the provider's whole answer for each row under raw.

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

Stop after this many rows. Searches read up to 200 creators per page, and only as many pages as this needs; the provider serves the first 10,000 results of a search.

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

Pacing ceiling for calls to the provider. Rate limited answers are retried after a pause.

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

Your own Upfluence API access: a bearer access token, or your API client id and secret written as client_id:client_secret, in which case the actor requests a one hour token itself. 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 provider and is never written to a row or logged.

## Actor input object example

```json
{
  "mode": "search",
  "searchIn": "all",
  "keywordMatch": "should",
  "platform": "instagram",
  "withEmail": false,
  "radiusKm": 50,
  "audiencePlatform": "instagram",
  "audienceCountryMin": 20,
  "audienceGender": "any",
  "audienceGenderMin": 20,
  "audienceAge": "any",
  "audienceAgeMin": 20,
  "matchAllPlatforms": false,
  "sortBy": "relevancy",
  "sortDirection": "desc",
  "postPlatform": "instagram",
  "youtubeVideoType": "any",
  "postsPerAccount": 10,
  "includeRaw": false,
  "maxResults": 100,
  "requestsPerMinute": 60
}
```

# Actor output Schema

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

One row per influencer, profile, audience report, post, brand mention or statistic.

# 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/influencer-search-audience-demographics-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/influencer-search-audience-demographics-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/influencer-search-audience-demographics-api --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,nabeelbaghoor/influencer-search-audience-demographics-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/VXwDrXjSHb3PVKtPc/builds/6fPqDxVR5P0tanIW4/openapi.json
