# TikTok Live Search Scraper (`parsebird/tiktok-live-search-scraper`) Actor

Search TikTok LIVE rooms by keyword. Get room title, streamer handle and followers, current viewers, total audience, likes, category, game tags, cover, snapshot, and live stream URLs (FLV, HLS, CMAF). Export JSON, CSV, Excel.

- **URL**: https://apify.com/parsebird/tiktok-live-search-scraper.md
- **Developed by:** [ParseBird](https://apify.com/parsebird) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.39 / 1,000 tiktok live rooms

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?

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

### TikTok Live Search Scraper

TikTok Live Search Scraper finds [TikTok LIVE](https://www.tiktok.com/live) rooms that are broadcasting right now for any keyword and returns each room's title, streamer, current viewers, total audience, likes, shares, comments, category, game tags, images, and playable live stream URLs.

<table><tr>
<td style="border-left:4px solid #FE2C55;padding:12px 16px;font-weight:600">
Search up to 100 topics per run, such as gaming, makeup, football, or music, and get ranked LIVE rooms with streamer follower counts, audience stats, and FLV, HLS, and CMAF stream links, without a TikTok login.
</td>
</tr></table>

<br>

<table>
<tr>
<td colspan="4" style="padding:10px 14px;background:#FE2C55;border:none;border-radius:4px 4px 0 0">
<span style="color:#FFFFFF;font-size:14px;font-weight:700;letter-spacing:0.5px">ParseBird TikTok Suite</span>
<span style="color:#FFD6DE;font-size:13px">&nbsp;&nbsp;&bull;&nbsp;&nbsp;Video, story, LIVE &amp; shop data</span>
</td>
</tr>
<tr>
<td style="padding:10px 14px;border:1px solid #E7E5E4;border-radius:0 0 0 4px;border-right:none;border-top:none;vertical-align:top;width:25%;background:#FFFFFF">
<a href="https://apify.com/parsebird/tiktok-slideshow-downloader" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">TikTok Slideshow Downloader</a><br>
<span style="color:#78716C;font-size:11px">Photo-mode posts as image files</span>
</td>
<td style="padding:10px 14px;border:1px solid #E7E5E4;border-top:none;vertical-align:top;width:25%;background:#FFFFFF">
<a href="https://apify.com/parsebird/tiktok-story-viewer" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">TikTok Story Viewer</a><br>
<span style="color:#78716C;font-size:11px">Active stories, no-watermark video</span>
</td>
<td style="padding:10px 14px;border:1px solid #E7E5E4;border-top:none;vertical-align:top;width:25%;background:#FFEEF1">
<a href="https://apify.com/parsebird/tiktok-live-search-scraper" style="color:#FE2C55;text-decoration:none;font-weight:700;font-size:13px">TikTok Live Search Scraper</a><br>
<span style="color:#FE2C55;font-size:11px;font-weight:600">You are here</span>
</td>
<td style="padding:10px 14px;border:1px solid #E7E5E4;border-radius:0 0 4px 0;border-top:none;vertical-align:top;width:25%;background:#FFFFFF">
<a href="https://apify.com/parsebird/tiktok-shop-reviews-scraper" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">TikTok Shop Reviews Scraper</a><br>
<span style="color:#78716C;font-size:11px">Product reviews and ratings</span>
</td>
</tr>
</table>

##### Copy to your AI assistant

Copy this block into ChatGPT, Claude, Cursor, or any LLM to start using this actor.

```text
Use Apify Actor parsebird/tiktok-live-search-scraper to search TikTok LIVE rooms that are broadcasting now. Example with ApifyClient (Python): client.actor("parsebird/tiktok-live-search-scraper").call(run_input={"keywords":["gaming","makeup"],"maxResultsPerKeyword":5}). Inputs: keywords array of strings required (1-100 unique topics, each searched separately); maxResultsPerKeyword integer optional (empty = every room TikTok returns, typically a few dozen per keyword). Output: one row per room with keyword, rank (1-based per keyword), roomId, sourceUrl (the room's tiktok.com/@handle/live page), isLive, title, startedAt (ISO 8601), creatorHandle, creatorNickname, creatorProfileUrl, creatorAvatarUrl, creatorBio, creatorFollowerCount, viewerCount, totalAudienceCount, likeCount, shareCount, commentCount, categoryName, gameTags[], coverImageUrl, snapshotImageUrl, streamUrls[{protocol (rtmp/flv/hls/cmaf/lls), url, quality, expiresAt}]. Fields TikTok does not provide are omitted. API docs: https://docs.apify.com/api/client/python/ and https://docs.apify.com/api/client/js/. Token: https://console.apify.com/account/integrations.
```

### What is TikTok Live Search Scraper?

**TikTok Live Search Scraper** is a **TikTok LIVE search API** alternative. Enter topics like `gaming`, `makeup`, or `music`, and it returns the **TikTok LIVE rooms that are live right now** for each keyword, in TikTok's own search order, with streamer details, **audience and engagement stats**, and **live stream URLs** you can open in a player.

You don't need TikTok cookies, a login, or an API key. The easiest way to try it is to open the actor, keep the prefilled `gaming` keyword with a 5-room limit, and click **Start**.

It searches LIVE rooms only. It does not search regular TikTok videos, monitor one room over time, collect live chat, or record broadcasts.

### What can TikTok Live Search Scraper do?

- 🔴 **Find live rooms by topic**: one search per keyword, up to 100 keywords per run.
- 📈 **Get audience stats**: current viewers, total audience, likes, shares, and comments.
- 👤 **Get streamer details**: handle, display name, profile link, avatar, bio, and follower count.
- 🏷️ **See what is being streamed**: room title, LIVE category (such as Gaming or Music), and game tags (such as Fortnite or Minecraft).
- 📺 **Get stream links**: FLV, HLS, CMAF, and LLS URLs in several qualities, including audio-only, with their expiry time.
- 🥇 **Keep TikTok's ranking** with a 1-based `rank` per keyword, and deduplicated rooms.
- ⏱️ **Track live trends** by running every hour with [Apify schedules](https://docs.apify.com/platform/schedules).
- 🔌 **Integrate** with the [Apify API](https://docs.apify.com/api/v2), webhooks, and [integrations](https://apify.com/integrations) such as Google Sheets, Make, Zapier, and Slack.
- 📁 **Export** as JSON, CSV, Excel, HTML, or XML.

### What data can you extract from TikTok LIVE search?

| Field | Description |
|-------|-------------|
| `keyword`, `rank` | Keyword that found the room and its 1-based position for that keyword |
| `roomId`, `sourceUrl`, `isLive` | Room ID, link to the room's LIVE page, and whether TikTok marks it as live |
| `title`, `startedAt` | Room title and broadcast start time (ISO 8601, UTC) |
| `creatorHandle`, `creatorNickname`, `creatorProfileUrl`, `creatorAvatarUrl`, `creatorBio`, `creatorFollowerCount` | Streamer profile |
| `viewerCount` | Viewers in the room right now |
| `totalAudienceCount` | Total people who have entered the room during this broadcast |
| `likeCount`, `shareCount`, `commentCount` | Room likes, shares, and comments |
| `categoryName`, `gameTags` | LIVE category and game/topic tags |
| `coverImageUrl`, `snapshotImageUrl` | Room cover image and a snapshot of the stream |
| `streamUrls[].protocol`, `url`, `quality`, `expiresAt` | Live stream links (`rtmp`, `flv`, `hls`, `cmaf`, `lls`), quality (`hd`, `HD1`, `ao` = audio only), and expiry time |

Fields TikTok does not provide for a room are omitted from that row, for example rooms without a title.

### How to search TikTok LIVE rooms

1. Open [TikTok Live Search Scraper](https://apify.com/parsebird/tiktok-live-search-scraper) and click **Try for free** or **Start**.
2. In **Keywords**, enter one topic per line, such as `gaming`, `makeup`, `football`, `music`, or `fitness`.
3. Optionally set **Max rooms per keyword**. Leave it empty to save every room TikTok returns.
4. Click **Start**. Each keyword takes a few seconds.
5. Open the **Output** tab, or export the rooms as JSON, CSV, or Excel.
6. To watch a room, open `sourceUrl` in a browser, or paste an `hls` stream URL into a player such as VLC.

### Input parameters

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| `keywords` | array of strings | **Yes** | — | 1–100 topics. Each is searched separately; repeated keywords (ignoring case) are searched once. |
| `maxResultsPerKeyword` | integer | No | empty (all) | Maximum distinct rooms saved per keyword. The form pre-fills `5`. TikTok may return fewer. |
| `proxyConfiguration` | object | No | Apify Proxy, US | Network settings; the default works for most runs |

### Input / Output

Example input:

```json
{
  "keywords": ["gaming"],
  "maxResultsPerKeyword": 5
}
```

Example output row:

```json
{
  "keyword": "gaming",
  "rank": 1,
  "roomId": "7690852665017797407",
  "sourceUrl": "https://www.tiktok.com/@wateryshoe/live",
  "isLive": true,
  "startedAt": "2026-09-29T07:20:44.000Z",
  "creatorHandle": "wateryshoe",
  "creatorNickname": "Watery Shoe",
  "creatorProfileUrl": "https://www.tiktok.com/@wateryshoe",
  "creatorAvatarUrl": "https://p16-common-sign.tiktokcdn-us.com/tos-useast5-avt-0068-tx/7310244226543910954~tplv-tiktokx-cropcenter:720:720.webp?...",
  "creatorBio": "Nobody cares. Work harder.\nWateryshoe@gmail.com",
  "creatorFollowerCount": 1110276,
  "viewerCount": 2959,
  "totalAudienceCount": 233068,
  "likeCount": 1190773,
  "categoryName": "Gaming",
  "gameTags": ["Fortnite"],
  "coverImageUrl": "https://p16-common-sign.tiktokcdn-us.com/tos-useast5-avt-0068-tx/7310244226543910954~tplv-tiktokx-cropcenter:720:720.webp?...",
  "snapshotImageUrl": "https://p16-common-sign.tiktokcdn-us.com/tos-useast8-i-vo4twfpge7-tx2/d6434a5be67f489d9d4f560a3f67e86c~tplv-vo4twfpge7-pc-cover-withface:540:960:1.webp?...",
  "streamUrls": [
    {
      "protocol": "flv",
      "url": "https://pull-f5-tt02.tiktokcdn-us.com/game/stream-3867164477343663054_hd.flv?expire=1791891950&sign=...",
      "quality": "hd",
      "expiresAt": "2026-10-13T11:45:50.000Z"
    },
    {
      "protocol": "hls",
      "url": "https://pull-hls-f16-tt02.tiktokcdn-us.com/game/stream-3867164477343663054_hd/index.m3u8?expire=1791891950&sign=...",
      "quality": "hd",
      "expiresAt": "2026-10-13T11:45:50.000Z"
    },
    {
      "protocol": "flv",
      "url": "https://pull-f5-tt02.tiktokcdn-us.com/game/stream-3867164477343663054.flv?expire=1791891950&sign=...&only_audio=1",
      "quality": "ao",
      "expiresAt": "2026-10-13T11:45:50.000Z"
    }
  ]
}
```

The real output lists every stream variant TikTok provides (`rtmp`, `flv`, `hls`, `cmaf`, `lls`); the example is shortened. Download results in JSON, CSV, Excel, HTML, or XML.

### Python API example

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")

run = client.actor("parsebird/tiktok-live-search-scraper").call(run_input={
    "keywords": ["gaming", "music"],
    "maxResultsPerKeyword": 10,
})

for room in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(room["keyword"], room["rank"], room.get("creatorHandle"), room.get("viewerCount"), room.get("title"))
```

### JavaScript API example

```javascript
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });

const run = await client.actor('parsebird/tiktok-live-search-scraper').call({
    keywords: ['makeup', 'fitness'],
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
const top = items.sort((a, b) => (b.viewerCount ?? 0) - (a.viewerCount ?? 0)).slice(0, 5);
console.log(top.map((r) => `${r.creatorHandle}: ${r.viewerCount} viewers`));
```

See the [Python client](https://docs.apify.com/api/client/python/) and [JavaScript client](https://docs.apify.com/api/client/js/) docs for more options.

### Use cases

- **Influencer discovery**: find streamers who are live in your niche right now, with follower counts and bios (which often include business emails).
- **Live market research**: see which games, products, and topics draw the biggest LIVE audiences.
- **Brand and sponsorship scouting**: shortlist creators by live viewers and engagement.
- **Trend monitoring**: schedule hourly runs to track how LIVE activity changes for your keywords.
- **Stream monitoring tools**: feed stream URLs into your own player or moderation pipeline.

### How it works

1. The actor searches TikTok LIVE for each keyword, page by page, until TikTok has no more results or your limit is reached.
2. It removes repeated rooms and ranks the rest 1, 2, 3 in TikTok's order.
3. It reads room, streamer, audience, and stream details from the search results and saves one row per room.

### How much does it cost to scrape TikTok LIVE rooms?

**What is the price per TikTok LIVE room?**

The actor uses pay-per-event pricing: you pay per room saved, and platform usage is included.

| Event | Free plan | Bronze | Silver | Gold |
|-------|-----------|--------|--------|------|
| `live-room-scraped` | $0.00399 (**$3.99 / 1,000**) | $0.00379 (**$3.79 / 1,000**) | $0.00359 (**$3.59 / 1,000**) | $0.00339 (**$3.39 / 1,000**) |

One `live-room-scraped` event is one room saved to the dataset. The prefilled 5-room test costs about $0.02 on the Free plan; 1,000 rooms cost $3.99. Keywords with no live rooms are free. Apify's free plan includes monthly platform credits you can use to try the actor.

### Is it legal to scrape TikTok LIVE search?

**Is scraping TikTok LIVE data legal?**

The actor only reads LIVE search results that TikTok shows publicly without login. Scraping public data is generally legal in many jurisdictions, but streamer profiles contain personal data (names, bios, sometimes emails) protected by laws such as GDPR and CCPA, and broadcasts are protected by copyright. Collect only what you need, respect [TikTok's Terms of Service](https://www.tiktok.com/legal/page/us/terms-of-service/en), and consult your lawyer if unsure. Read more in Apify's guide: [Is web scraping legal?](https://blog.apify.com/is-web-scraping-legal/)

### Other TikTok scrapers and related Actors

| Actor | Best for |
|-------|----------|
| [TikTok Story Viewer](https://apify.com/parsebird/tiktok-story-viewer) | Active TikTok stories with no-watermark video links |
| [TikTok Slideshow Downloader](https://apify.com/parsebird/tiktok-slideshow-downloader) | Saving every photo from TikTok photo-mode posts |
| [TikTok Shop Reviews Scraper](https://apify.com/parsebird/tiktok-shop-reviews-scraper) | TikTok Shop product reviews and ratings |
| [Kick Video Downloader](https://apify.com/parsebird/kick-video-downloader) | Kick clips and VODs |

### FAQ

**How many rooms does one keyword return?**
As many as TikTok's LIVE search returns, which is usually a few dozen for popular topics (for example about 40 for `gaming` in our tests) and fewer for niche ones. Set `maxResultsPerKeyword` to cap it.

**Why did a keyword return no rooms?**
Nobody matching that keyword was live in TikTok's search at that moment. Results change minute by minute, so try again later or use a broader keyword.

**Can I watch or record the streams?**
The `hls` and `flv` URLs play in players such as VLC and worked without TikTok cookies in our tests, including from outside the US. They are signed and expire at `expiresAt`, and they stop when the broadcast ends. The actor itself does not record video.

**Why are some fields missing for a room?**
TikTok doesn't provide every field for every room, for example a title or share count. Missing fields are left out of that row.

**What is the difference between `viewerCount` and `totalAudienceCount`?**
`viewerCount` is how many people are watching now. `totalAudienceCount` is how many people have entered the room since the broadcast started.

**Does it collect live chat or gifts?**
No. It collects room search results only.

**Where can I report issues?**
Open the **Issues** tab on the actor page with your input and run ID.

# Changelog

This Actor's version history is a separate document: https://apify.com/parsebird/tiktok-live-search-scraper/changelog.md

# Actor input Schema

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

Enter 1 to 100 search topics. Each keyword is searched separately in TikTok LIVE search.

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

Save at most this many distinct LIVE rooms for each keyword. Leave empty to save every room TikTok returns. TikTok may return fewer rooms than this limit.

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

The default (Apify Proxy, US) works for most runs. Change it only if you know you need different proxies.

## Actor input object example

```json
{
  "keywords": [
    "gaming"
  ],
  "maxResultsPerKeyword": 5,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyCountry": "US"
  }
}
```

# 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 = {
    "keywords": [
        "gaming"
    ],
    "maxResultsPerKeyword": 5,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyCountry": "US"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("parsebird/tiktok-live-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": ["gaming"],
    "maxResultsPerKeyword": 5,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyCountry": "US",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("parsebird/tiktok-live-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": [
    "gaming"
  ],
  "maxResultsPerKeyword": 5,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyCountry": "US"
  }
}' |
apify call parsebird/tiktok-live-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,parsebird/tiktok-live-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/JDbF6IhOuY64gmJBF/builds/lwpTE6Y0N4wcfnowX/openapi.json
