# Kuku TV & Kuku FM Show Search Scraper API (`spider_studio/kuku-tv-search`) Actor

Search Kuku TV (Kuku FM) shows by keyword. Extract paginated results, show IDs, titles, synopses, and episode and listen counts. Export via API or Dataset.

- **URL**: https://apify.com/spider_studio/kuku-tv-search.md
- **Developed by:** [Tarique](https://apify.com/spider_studio) (community)
- **Categories:** Automation, Social media, Videos
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 successful show results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
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

### Kuku TV and Kuku FM show search scraper API

**Kuku TV & Kuku FM Show Search Scraper API** is a **Kuku TV show search scraper** for finding audio series and short-drama reels on [Kuku FM](https://kukufm.com/). Submit up to 1,000 titles, genres, tropes, or character names, request up to 20 result pages per keyword, and receive structured Kuku TV search results with show IDs, synopses, episode counts, listen counts, and cover art.

It works as a Kuku TV API alternative for catalog discovery, title lookup, keyword monitoring, and short-drama data pipelines. No Kuku FM account, login, or app installation is required.

### Why use this Kuku TV search scraper?

- Search up to 1,000 unique keywords in one run, in English, Hindi, Telugu, or Tamil.
- Collect multiple result pages per keyword with the `maxPages` option, collapsing the overlapping pages Kuku TV returns.
- Receive one Dataset item per matching show with the complete raw search card preserved.
- Find Kuku TV `showId` values that feed the Series Details and Episode Details Actors.
- Export results to JSON, CSV, Excel, XML, or HTML.
- Integrate with the Apify API, schedules, webhooks, Make, n8n, or cloud storage.

Typical use cases include **Kuku TV show search**, Kuku FM catalog research, title availability checks, keyword-to-show matching, and building a searchable short-drama catalog.

### What Kuku TV show data can the API extract?

| Field | Type | Description |
| --- | --- | --- |
| `query` | string | Keyword that produced this show. |
| `position` | integer or null | One-based rank of the show in the keyword's deduplicated result set. |
| `page` | integer or null | Result page the show was first seen on. |
| `success` | boolean | Whether the row is a successfully retrieved show. |
| `showId` | integer or null | Kuku TV show ID used by every other Kuku TV Actor. |
| `slug` | string or null | URL slug of the show. |
| `title` | string or null | Show title. |
| `description` | string or null | Show synopsis. |
| `authorName` | string or null | Author or creator name. |
| `language` | string or null | Language slug selected for the search. |
| `languageLabel` | string or null | Human-readable language name. |
| `episodeCount` | integer or null | Number of episodes in the show. |
| `listenCount` | integer or null | Lifetime listen count. |
| `isPremium` | boolean or null | Whether the show is a premium title. |
| `isReel` | boolean or null | Whether the show is a vertical short-drama reel. |
| `monetizationType` | string or null | Monetization model, such as `coin_ads`. |
| `bottomLabel` | string or null | Card label the Kuku TV apps render, such as `614K`. |
| `tags` | array | Card tags returned with the search result. |
| `thumbnailUrl` | string or null | Portrait thumbnail URL. |
| `coverImageUrl` | string or null | Original cover image URL. |
| `uri` | string or null | Kuku TV deep link, such as `app://kukufm/show/...`. |
| `webUrl` | string or null | Public `kukufm.com` show URL. |
| `data` | object or null | Complete raw show card exactly as the API returned it. |
| `error` | string or null | Error message for a failed keyword. |

### How to search Kuku TV shows by keyword

1. Open the Actor's **Input** tab.
2. Add one or more titles, genres, tropes, or character names to `queries`.
3. Choose the `languageIds` you want searched. `2` is English, `1` is Hindi, `3` is Telugu, `8` is Tamil, `5` is Bengali, and `13` is Kannada.
4. Set `maxPages` to the maximum number of result pages wanted per keyword, or leave it at `1` for the first page only.
5. Click **Start**.
6. Open the Dataset to inspect, filter, download, or integrate the results.

### How much does Kuku TV search cost?

FREE-tier users pay **$4 per 1,000 successful show results** ($0.004 per result). Users on BRONZE, SILVER, GOLD, PLATINUM, and DIAMOND tiers pay **$3 per 1,000** ($0.003 per result). Only real show cards that are successfully written as individual Dataset items are charged. Repeated shows that appear on more than one page are collapsed to one row per keyword and are never charged twice, and diagnostic rows with `success: false` are not charged.

There is no monthly result cap. Paid Apify platform usage for the run — compute and proxy bandwidth — is billed separately by Apify.

### Input

See the **Input** tab for all options. `queries` accepts up to 1,000 entries of 1 to 100 characters. Duplicate keywords are ignored while their first-seen order is preserved. `maxPages` accepts 1 to 20 and defaults to 1.

```json
{
  "queries": ["billionaire", "revenge", "werewolf"],
  "languageIds": [2],
  "hasPremium": false,
  "maxPages": 1
}
```

### Output

You can download the Dataset in formats such as JSON, HTML, CSV, or Excel.

```json
{
  "query": "revenge",
  "position": 1,
  "page": 1,
  "success": true,
  "showId": 277205,
  "slug": "the-billionaire-who-married-for-revenge",
  "title": "The Billionaire Who Married For Revenge",
  "authorName": null,
  "language": "english",
  "languageLabel": "English",
  "episodeCount": 60,
  "listenCount": 614204,
  "isPremium": true,
  "isReel": true,
  "monetizationType": "coin_ads",
  "bottomLabel": "614K",
  "thumbnailUrl": "https://images.cdn.kukufm.com/w:400/f:webp/q:85/...",
  "webUrl": "https://kukufm.com/show/the-billionaire-who-married-for-revenge",
  "data": {"id": 277205, "slug": "the-billionaire-who-married-for-revenge", "title": "The Billionaire Who Married For Revenge"},
  "error": null
}
```

Each keyword produces one row per matching show across the pages that were requested. A keyword that returns no matches produces no rows, and a keyword whose request fails produces a single uncharged row with `success: false` and an `error` message.

### Kuku TV search use cases

- Find a Kuku TV or Kuku FM show by title, plot keyword, genre, or trope.
- Discover `showId` values before retrieving full metadata, episode lists, or comments.
- Monitor whether titles appear for important search phrases.
- Build keyword-to-title datasets for editorial or market research.
- Feed Kuku TV catalog data into dashboards, databases, or AI analysis tools.

### Related Kuku TV Actors

| Actor | Purpose |
| --- | --- |
| [Kuku TV & Kuku FM Show Details & Episodes API](https://apify.com/spider_studio/kuku-tv-series-detail) | Turn a search result's `showId` into full show metadata, genres, tropes, cast, and crew. |
| [Kuku TV & Kuku FM Episode Details & Video URL API](https://apify.com/spider_studio/kuku-tv-episode-detail) | Resolve a single `episodeId` into episode metadata, durations, prices, and engagement counts. |
| [Kuku TV & Kuku FM Episode Comments Scraper API](https://apify.com/spider_studio/kuku-tv-episode-comments) | Export the public comments and listener profiles behind each episode. |
| [Kuku TV & Kuku FM Episode Video Downloader API](https://apify.com/spider_studio/kuku-tv-episode-download-kvs) | Download each episode and store a playable MP4 plus a metadata sidecar in the run's Apify Key-value store. |

Also from the same publisher: [Hongguo short-drama Actors](https://apify.com/spider_studio/hongguo-search) for the Hongguo Duanju catalog.

### Frequently asked questions

#### Can I search multiple Kuku TV titles and keywords in one run?

Yes. Submit up to 1,000 unique queries. Duplicate keywords are ignored while the first-seen order is preserved, and duplicate keywords are not charged twice.

#### Do I need a Kuku TV or Kuku FM account?

No. Every endpoint used by this Actor is public, so no login, token, or app installation is required.

#### Can I search in Hindi, Telugu, or Tamil?

Yes. Set `languageIds` to one or more Kuku TV language IDs. `2` is English, `1` is Hindi, `3` is Telugu, `8` is Tamil, `5` is Bengali, and `13` is Kannada.

#### How many results does one keyword return?

Kuku TV paginates keyword results. `maxPages` defaults to `1`, which returns the first page only. Raise it up to `20` to keep requesting pages until a page comes back empty; a keyword that runs out of results stops early.

#### Why do two pages contain the same show?

Kuku TV result pages overlap. The Actor collapses repeats on `showId`, keeps the lowest `page` number a show was first seen on, and writes and charges it once per keyword. In a measured run, three pages of `q=the` returned 165 raw rows but only 97 unique shows, so expect roughly a third of later pages to be repeats.

#### What does the `page` column mean?

It is the result page the show was first seen on. `position` is the show's rank in the keyword's deduplicated result set, so it is always continuous from `1`.

#### Is this a Kuku TV API alternative?

Yes. The Actor turns Kuku TV search results into structured Dataset items that can be accessed through the Apify API without manually browsing each keyword.

### Legal use and support

Use the Actor lawfully and respect Kuku FM's terms, copyright, rate limits, privacy rules, and applicable law. It is intended for public catalog information and does not access private user accounts.

Use the **Issues** tab for support and the **API** tab for generated integration examples.

# Actor input Schema

## `queries` (type: `array`):

Keywords to search on Kuku TV. Duplicates are ignored while order is preserved.

## `languageIds` (type: `array`):

Kuku TV language IDs to search. 2 is English, 1 is Hindi, 3 is Telugu, 8 is Tamil, 5 is Bengali, and 13 is Kannada. Defaults to English only.

## `hasPremium` (type: `boolean`):

Send the premium listener flag that the Kuku TV apps use. This is a public search signal only and never unlocks paid content.

## `maxPages` (type: `integer`):

Maximum result pages fetched for each keyword. Kuku TV result pages overlap, so repeated shows are collapsed to one row per keyword. Pagination stops earlier when a page returns no shows.

## Actor input object example

```json
{
  "queries": [
    "billionaire",
    "revenge",
    "werewolf"
  ],
  "languageIds": [
    2
  ],
  "hasPremium": false,
  "maxPages": 1
}
```

# Actor output Schema

## `dataset` (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 = {
    "queries": [
        "billionaire",
        "revenge",
        "werewolf"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("spider_studio/kuku-tv-search").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 = { "queries": [
        "billionaire",
        "revenge",
        "werewolf",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("spider_studio/kuku-tv-search").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 '{
  "queries": [
    "billionaire",
    "revenge",
    "werewolf"
  ]
}' |
apify call spider_studio/kuku-tv-search --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,spider_studio/kuku-tv-search"
        }
    }
}
```

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/MRbvZPz61ztTSmS0U/builds/UW1mdwakZqmebM4lH/openapi.json
