# TikTok User Search: Find Creators by Keyword (`memo23/tiktok-user-search-scraper`) Actor

Search TikTok for accounts rather than videos. Returns the username, bio, follower and following counts, total likes, video count and verification badge for every match. Filter by follower band or verified status to build a creator shortlist in a single run. No login, no cookies.

- **URL**: https://apify.com/memo23/tiktok-user-search-scraper.md
- **Developed by:** [Muhamed Didovic](https://apify.com/memo23) (community)
- **Categories:** Social media, AI, Agents
- **Stats:** 20 total users, 18 monthly users, 97.6% runs succeeded, 0 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $2.00 / 1,000 accounts

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?

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

## TikTok User Search Scraper

<p align="center"><img src="https://raw.githubusercontent.com/muhamed-didovic/muhamed-didovic.github.io/main/assets/tiktok-user-search-logo.png" width="140" alt="TikTok User Search Scraper"></p>

Search TikTok for **accounts**, not videos.

Give it a keyword like `fitness coach` or `vegan baking` and get one row per matching creator, with follower count, bio, video count and verification. Set a follower band and the run returns only accounts the size you actually want.

### Why Use This Scraper

Most TikTok scrapers search *content*. When you are building a creator shortlist, content is the wrong unit: you end up collecting thousands of videos and reverse-engineering the accounts behind them.

This searches the account index directly, then filters at the source. Asking for the 10,000 to 200,000 follower band means the dataset arrives already shortlisted, and you are not billed for the accounts that were filtered out.

### Supported Inputs

Any keyword TikTok's account search understands: a niche, a job title, a brand, a location, a language.

| Keyword | Finds |
|---|---|
| `fitness coach` | Coaches and personal trainers |
| `vegan baking` | Recipe and food creators in that niche |
| `dermatologist` | Professionals posting in that field |
| `gymshark` | Accounts whose name or handle carries the brand |

Several keywords in one run, each row tagged with the `keyword` it came from.

### Use Cases

Influencer shortlisting, where the follower band does the first screening pass for you.

Micro-creator discovery, finding accounts under 50,000 followers that keyword-ranked video search buries beneath household names.

Competitor mapping, listing every account positioning itself around a term.

Recruitment and outreach, resolving a niche to a list of handles with reach attached.

Market sizing, counting how many accounts describe themselves with a given term.

### How It Works

Each keyword is searched against TikTok's account index, 20 accounts per request, deduplicated by account ID. Rows are then screened against your follower band and verification setting before anything is written, so filtered-out accounts never reach your dataset or your bill.

When filters are set, the walk is capped at 25 pages per keyword, so a narrow band cannot page forever looking for accounts that barely exist.

### Input Configuration

| Field | Type | Default | Description |
|---|---|---|---|
| `keywords` | array | required | Words to search accounts for. |
| `maxResultsPerKeyword` | integer | `100` | Stop after this many matching accounts per keyword. |
| `minFollowers` | integer | `0` | Skip accounts below this follower count. |
| `maxFollowers` | integer | none | Skip accounts above this follower count. |
| `verifiedOnly` | boolean | `false` | Return only accounts carrying a verification label. |

#### Everything matching a keyword

```json
{
  "keywords": ["fitness coach"],
  "maxResultsPerKeyword": 100
}
```

#### Mid-tier creators only

```json
{
  "keywords": ["vegan baking", "meal prep"],
  "minFollowers": 10000,
  "maxFollowers": 200000
}
```

### Output Sample

```json
{
  "keyword": "fitness coach",
  "username": "bigasian_fit",
  "nickname": "Artem | Fitness Coach",
  "userId": "6808639916399707141",
  "secUid": "MS4wLjABAAAABmy3-ozDHCwVKjam9itXNe37Uw",
  "profileUrl": "https://www.tiktok.com/@bigasian_fit",
  "bio": "Artem | Fitness Coach",
  "isVerified": false,
  "verificationLabel": null,
  "verificationSource": "search",
  "followerCount": 182863,
  "followingCount": 412,
  "likeCount": 4821004,
  "videoCount": 733,
  "avatarUrl": "https://p16-common-sign.tiktokcdn.com/...",
  "region": "US",
  "scrapedAt": "2026-08-19T13:03:44.201Z"
}
```

#### Nothing matched

```json
{
  "keyword": "some very narrow phrase",
  "error": "no_accounts_found",
  "message": "No accounts matched \"some very narrow phrase\" within the follower and verification filters you set after scanning 56 result(s)."
}
```

### Key Output Fields

| Field | Description |
|---|---|
| `username` / `nickname` | Handle and display name |
| `userId` / `secUid` | TikTok's numeric and secure IDs, stable across handle changes |
| `bio` | The account's description as shown in search results |
| `followerCount` / `followingCount` | Audience size and how many it follows |
| `likeCount` / `videoCount` | Total likes received and videos posted |
| `isVerified` | Whether a verification label is present, see the note below |
| `verificationLabel` | The literal label TikTok returned, such as `Popular creator` |
| `verificationSource` | Always `search` here, a reminder of how the flag was derived |
| `region` | Account region code where TikTok reports it |
| `keyword` | Which of your keywords produced this row |

### A note on the verification flag

TikTok's account-search payload carries a `verification_type` field that reads `1` for **every** account it returns, including accounts with four-figure follower counts. Measured on 2026-08-19: 20 out of 20 results.

Any scraper that reads that field marks the entire result set as verified, which is a recurring wrong-data complaint against TikTok scrapers generally. This Actor ignores it and reads only the fields that actually differentiate, which brought a 25-account sample from 25 verified down to 3.

Search remains a weaker source for verification than a profile lookup. When the badge has to be authoritative, feed the handles into the [TikTok Profile Scraper](https://apify.com/memo23/tiktok-profile-scraper), which reads the profile record directly. `verificationSource` is on every row so you always know which you are holding.

### FAQ

**How is this different from the TikTok Search Scraper?**
That one searches videos and returns posts. This one searches accounts and returns creators. Use this when the deliverable is a list of people.

**Am I billed for accounts that get filtered out?**
No. Filtering happens before anything is written, so you pay only for accounts that reach your dataset.

**Why did I get fewer accounts than I asked for?**
A narrow follower band can exhaust the available results. The run log reports how many were scanned versus kept, and says when it stopped at the page limit.

**Do I need a login or cookies?**
No.

**Can I get each account's videos too?**
Not here. Take the handles from this run into the [TikTok Profile Scraper](https://apify.com/memo23/tiktok-profile-scraper) with post collection turned on.

**What does it cost?**
One charge per account returned, plus a small per-run start fee. No subscription.

### Support

Found a bug or need a field added? Open an issue on the Actor's **Issues** tab in Apify Console, or email <muhamed.didovic@gmail.com>.

### Additional Services

Need a custom TikTok or social-media scraper, or a private version of this Actor? Reach out at <muhamed.didovic@gmail.com>.

### Explore More Scrapers

- **[TikTok Profile Scraper](https://apify.com/memo23/tiktok-profile-scraper)** — full account stats and every post, the natural next step after this
- **[TikTok Search Scraper](https://apify.com/memo23/tiktok-search-scraper)** — TikTok's ranked video results for any keyword
- **[TikTok Mention Scraper](https://apify.com/memo23/tiktok-mention-scraper)** — videos tagging an account, confirmed by account ID
- **[TikTok Followers & Following Scraper](https://apify.com/memo23/tiktok-followers-scraper)** — the audiences behind these accounts
- **[TikTok Video Downloader](https://apify.com/memo23/tiktok-video-downloader)** — watermark-free MP4, cover and audio

Browse the full portfolio: [muhamed-didovic.github.io](https://muhamed-didovic.github.io/)

### 🤖 For AI Agents & LLM Apps

**Purpose:** Search TikTok's account index by keyword and return matching creator profiles, optionally filtered by follower band or verification.

**Minimal tested input:**

```json
{ "keywords": ["fitness coach"] }
```

**Output:** array of flat objects, one per account. Fields: `keyword`, `username`, `nickname`, `userId`, `secUid`, `profileUrl`, `bio`, `isVerified`, `verificationLabel`, `verificationSource`, `followerCount`, `followingCount`, `likeCount`, `videoCount`, `avatarUrl`, `region`, `scrapedAt`.

**Critical for agents:** `isVerified` comes from search, which is a weaker source than a profile record, and `verificationSource` says so on every row. Do not treat it as authoritative; re-check with the Profile Scraper when it matters. Filtered-out accounts are absent rather than returned with a flag, so a short result set means the band was narrow, not that data is missing.

**Behavior & billing:** Pay-per-event, one charge per account returned. Accounts excluded by your filters are not billed. Keywords matching nothing yield one error item (`error`, `message`) rather than failing the run. No login or cookies required.

### ⚠️ Disclaimer

This Actor accesses publicly available data on TikTok for legitimate research, recruitment, and business-analysis purposes. It does not log in, bypass authentication, or access private content. Use of this Actor must comply with TikTok's Terms of Service and all applicable laws, including data-protection regulations (GDPR, CCPA, etc.). The authors are not responsible for any misuse. Users must:

- Respect rate limits and avoid overloading TikTok's infrastructure
- Not use scraped data to violate user privacy or platform terms
- Process any personal data only with a lawful basis and in compliance with their jurisdiction
- Not republish scraped content in violation of copyright

We do not store scraped data; the Actor returns it directly to your Apify dataset for your authorized use. TikTok is a trademark of ByteDance Ltd.; this Actor is not affiliated with or endorsed by TikTok or ByteDance.

### SEO Keywords

tiktok user search, tiktok account search, find tiktok creators, tiktok influencer finder, tiktok creator discovery, search tiktok accounts by keyword, tiktok influencer shortlist, tiktok micro influencer finder, tiktok follower filter, tiktok creator database, tiktok account scraper, tiktok niche creators, tiktok outreach list, tiktok talent sourcing, tiktok competitor accounts, apify tiktok user search

# Actor input Schema

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

Words to search TikTok accounts for, such as a niche, a job title or a brand, for example "fitness coach" or "vegan baking". Each keyword returns matching accounts with follower counts, bio and verification.

## `maxResultsPerKeyword` (type: `integer`):

Stop after this many matching accounts for each keyword. Accounts arrive 20 per upstream request.

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

Skip accounts below this follower count. Use with the maximum to target a size band, for example 10000 to 100000 for mid-tier creators. Leave at 0 for no lower limit.

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

Skip accounts above this follower count. Useful for finding smaller creators rather than the household names that dominate search. Leave empty for no upper limit.

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

Return only accounts carrying TikTok's verification badge.

## Actor input object example

```json
{
  "keywords": [
    "fitness coach",
    "vegan baking",
    "crypto"
  ],
  "maxResultsPerKeyword": 100,
  "minFollowers": 0,
  "verifiedOnly": false
}
```

# Actor output Schema

## `accounts` (type: `string`):

All account rows in the default dataset.

# 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 = {
    "keywords": [
        "fitness coach"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("memo23/tiktok-user-search-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 = { "keywords": ["fitness coach"] }

# Run the Actor and wait for it to finish
run = client.actor("memo23/tiktok-user-search-scraper").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "keywords": [
    "fitness coach"
  ]
}' |
apify call memo23/tiktok-user-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,memo23/tiktok-user-search-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/3aTsIGA4ChyTgtoMP/builds/CyoUbqzrd5gHdzQPX/openapi.json
