# TikTok Username Search & Enumeration (`arjuna-x_official-owner/tiktok-username-enum`) Actor

TikTok suffix-range enumeration: scan bitcoin1–bitcoin200 in one run. Brand protection & lookalike discovery tool & not a single-username checker. Pay per valid account only (~$7/1k valid accounts); empty checks not billed. No login.

- **URL**: https://apify.com/arjuna-x\_official-owner/tiktok-username-enum.md
- **Developed by:** [Arjuna-X Official](https://apify.com/arjuna-x_official-owner) (community)
- **Categories:** Social media, Automation, Developer tools
- **Stats:** 1 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $5.00 / 1,000 valid tiktok accounts

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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 Username Search & Enumeration

### What does TikTok Username Search & Enumeration do?

**Range enumeration for TikTok** — not a single-username checker. Enter a base keyword (for example `bitcoin`) and a suffix range (`1` to `200`, `a` to `z`), and this Actor expands every candidate in one run: `bitcoin1`, `bitcoin2`, … `bitcoin200`.

That is the workflow brand protection, security, and OSINT teams need for **lookalike discovery** and **suffix sweeps** — coverage a list-based checker cannot give you without building the list yourself.

Built for teams that need wide range coverage at speed. **Pay only for valid accounts found**; empty checks are not billed.

### Range enumeration, not username checking

Most Store Actors check **one username at a time** or a list you supply. This Actor **generates and scans the full suffix range** from a single base keyword — numeric (`1`–`1000`), alphabetic (`a`–`z`, `aa`–`zz`), or custom start/end.

Use it when you need to answer: *"Which `bitcoin*` TikTok accounts exist in this suffix range?"* — not *"Does `@bitcoin42` exist?"*

### What you get for each valid account

For every existing account found, the Dataset includes:

- **Username** and **direct TikTok URL**
- **Account name** (display nickname)
- **Bio** (signature text when present)
- **Followers**, **following**, **likes**, and **video** counts
- **Verified** and **private account** flags
- **Avatar URL**
- **Stable account IDs** (`userId`, `secUid`)

### Why this pricing is different

Most username tools bill **per check**: every candidate in your list or range costs money, whether the account exists or not. Scan 1,000 lookalikes and you pay for 1,000 attempts — even when almost all are empty.

**We bill per valid account.** Empty candidates are not charged by the custom result event. Your budget buys signal (real accounts with metadata), not noise.

That matters most on brand and lookalike sweeps, where hit rates are often low. Large ranges stay affordable because unused names do not drain spend. Set a **maximum cost per run** anytime you want a hard cap.

Illustrative costs for a **1,000-candidate** run (example rates — check the **Pricing** tab for live numbers):

| Hit rate | Valids found | Typical per-check tool (~$0.015–$0.02 / check) | This Actor (pay per valid, example ~$0.007 / valid) |
|----------|--------------|--------------------------------------------------|-----------------------------------------------------|
| Sparse (~2%) | 20 | ~$15–$20 | **~$0.14** |
| Moderate (~14%) | 140 | ~$15–$20 | **~$0.98** |
| Dense (~40%) | 400 | ~$15–$20 | **~$2.80** |

Per-check pricing stays roughly flat no matter how few accounts exist. Pay-per-valid scales with finds — so sparse brand protection work costs less here, and you never pay just to learn a name is unused.

### Features

- **Start-only numeric mode** - enter `200` to check suffixes `1` through `200`
- **Explicit ranges** - numeric (`100` to `300`) or alphabetic (`a` to `z`, `aa` to `zz`)
- **Fast concurrent checks** - adjustable parallelism, retries, and delay
- **Pay only for valid accounts** - empty checks are not billed by the custom result event
- **Only new results** - skip accounts you already collected on earlier runs
- **Optional Apify Proxy** - useful for larger runs and regional consistency
- **No TikTok login required**

### How to run

1. Enter a **Base username prefix** without `@`.
2. For `1` through `N`, enter `N` in **Range start or numeric maximum** and leave **Range end** empty.
3. For an explicit range, enter both start and end.
4. Optionally configure concurrency, retries, delay, and Apify Proxy.
5. Start the Actor and open the Dataset when the run finishes.

#### Examples

Scan `bitcoin1` through `bitcoin200`:

```json
{
  "base": "bitcoin",
  "start": "200"
}
```

Scan `bitcoin100` through `bitcoin300`:

```json
{
  "base": "bitcoin",
  "start": "100",
  "end": "300"
}
```

Scan `bitcoina` through `bitcoinz`:

```json
{
  "base": "bitcoin",
  "start": "a",
  "end": "z"
}
```

### How much will it cost?

**Pay per valid account found** — same model as our Telegram Username Search & Enumeration Actor. Platform usage is included.

- Valid accounts = billed
- Empty / non-existent candidates = **not billed** (when `includeMisses` is off, the default)

Check the **Pricing** tab for current rates. Before a large job, set a **maximum cost per run** so spend never surprises you.

Apify also gives monthly free usage credits on the Free plan. A short test run is the fastest way to see real cost for your range.

### Output example

```json
[
  {
    "url": "https://www.tiktok.com/@bitcoin42",
    "username": "bitcoin42",
    "nickname": "Example Brand",
    "signature": "Official brand account",
    "verified": false,
    "privateAccount": false,
    "followerCount": 12500,
    "followingCount": 10,
    "heartCount": 98000,
    "videoCount": 42,
    "avatarUrl": "https://...",
    "base": "bitcoin",
    "suffix": "42",
    "exists": true
  }
]
```

### Compliance

Use this Actor only for legitimate research, brand protection, and investigations you are authorized to perform. Respect TikTok's Terms of Service and applicable law.

# Actor input Schema

## `base` (type: `string`):

Prefix to enumerate (letters, digits, periods, underscores; no @).

## `start` (type: `string`):

Enter 200 with no end to scan 1 to 200. Or enter the first suffix of an explicit numeric or letter range.

## `end` (type: `string`):

Leave empty when start is the numeric maximum. Otherwise enter the final numeric or equal-length letter suffix.

## `maxCandidates` (type: `integer`):

Hard safety cap for candidates in one run.

## `concurrency` (type: `integer`):

Parallel account checks. Lower this if TikTok starts limiting requests.

## `requestTimeoutSec` (type: `integer`):

Maximum wait time for each account check.

## `maxRetries` (type: `integer`):

Retries after temporary network or rate-limit responses.

## `delayMs` (type: `integer`):

Optional per-worker delay to reduce rate limiting.

## `onlyNewResults` (type: `boolean`):

Skip accounts already returned in your earlier runs. Other users never affect your results.

## `includeMisses` (type: `boolean`):

Also include definitive misses in the Dataset. Misses are not charged by the custom valid-username event.

## `proxyConfiguration` (type: `object`):

Optional Apify Proxy. Recommended for larger ranges and consistent regional results.

## `userAgent` (type: `string`):

Optional browser identity used for account checks.

## Actor input object example

```json
{
  "base": "bitcoin",
  "start": "20",
  "maxCandidates": 2000,
  "concurrency": 5,
  "requestTimeoutSec": 20,
  "maxRetries": 2,
  "delayMs": 100,
  "onlyNewResults": true,
  "includeMisses": false,
  "proxyConfiguration": {
    "useApifyProxy": false
  },
  "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36"
}
```

# Actor output Schema

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

No description

# 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 = {
    "base": "bitcoin",
    "start": "20"
};

// Run the Actor and wait for it to finish
const run = await client.actor("arjuna-x_official-owner/tiktok-username-enum").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 = {
    "base": "bitcoin",
    "start": "20",
}

# Run the Actor and wait for it to finish
run = client.actor("arjuna-x_official-owner/tiktok-username-enum").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 '{
  "base": "bitcoin",
  "start": "20"
}' |
apify call arjuna-x_official-owner/tiktok-username-enum --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,arjuna-x_official-owner/tiktok-username-enum"
        }
    }
}

```

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/lJLRPcTqEdedgU2Z7/builds/sLuN1CxcMLboqu6e7/openapi.json
