# Baidu Tieba Scraper (`natanielsantos/baidu-tieba-scraper`) Actor

This powerful tool allows you to easily extract posts from forums, profiles, search terms and topics from tieba.baidu.com. Only pay for what you use. Works with MCP and AI tools.

- **URL**: https://apify.com/natanielsantos/baidu-tieba-scraper.md
- **Developed by:** [Nataniel Santos](https://apify.com/natanielsantos) (community)
- **Categories:** Social media, Developer tools, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.20 / 1,000 results

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

## Baidu Tieba Scraper

### ✨ Features

- 🔎 Scrape post using search terms
- 🏷️ Scrape posts from specific forums tabs
- 📊 Search inside forums
- 👤 Scrape posts from specific user profiles
- 🔥 Scrape posts from hot topics

### 🎯 Who Is This For?

- Researchers looking to analyze trends and discussions on Baidu Tieba
- Marketers interested in understanding consumer sentiment and popular topics
- Data scientists seeking to build models based on Baidu Tieba data
- Anyone interested in exploring the rich content of Baidu Tieba for personal or professional reasons


### 💡 Input Parameters
<!-- 
{
    "$schema": "https://apify.com/schemas/v1/input.ide.json",
    "title": "Baidu Tieba Scraper Input Schema",
    "type": "object",
    "schemaVersion": 1,
    "properties": {
        "searchTerms": {
            "title": "Search Terms",
            "type": "array",
            "description": "Enter one or more keywords to search for. Each keyword runs as a separate search.",
            "editor": "stringList",
            "sectionCaption": "🔍 Scrape by Search Terms"
        },
        "sortSearchBy": {
            "title": "Sort Search Results By",
            "type": "string",
            "description": "Choose how to sort the search results. 'Most Relevant' sorts by relevance to the search term, 'Latest' sorts by date with the newest posts first, and 'Oldest' sorts by date with the oldest posts first.",
            "enum": ["most_relevant", "latest", "oldest"],
            "enumTitles": ["Most Relevant", "Latest", "Oldest"],
            "default": "most_relevant",
            "prefill": "most_relevant"
        },
        "searchWithinForum": {
            "title": "Search within this forum (provide the forum name, URL or ID)",
            "type": "string",
            "editor": "textfield",
            "description": "If you want to search within a specific forum, enter the forum name, ID or URL here. This will limit the search results to that forum. Leave empty to search across all forums.",
            "default": ""
        },
        "forums": {
            "title": "Forums to Scrape",
            "type": "array",
            "description": "Enter the forums you want to scrape. You can enter the forum name, URL or ID. This is required if you are not using search terms above.",
            "editor": "schemaBased",
            "sectionCaption": "👥 Scrape Forums",
            "sectionDescription": "Acepts forum names, forum URLs or forum IDs.",
            "items": {
                "type": "object",
                "properties": {
                    "forum": {
                        "title": "Forum (name, URL or ID)",
                        "type": "string",
                        "editor": "textfield",
                        "minLength": 1,
                        "description": "Enter the forum name, ID or URL you want to scrape"
                    },
                    "tabs": {
                        "title": "Forum Tabs",
                        "type": "array",
                        "editor": "select",
                        "description": "Select the tabs you want to scrape.",
                        "items": {
                            "type": "string",
                            "enum": ["highlights", "popular", "latest", "video"],
                            "enumTitles": ["精华(Highlights)", "热门(Popular)", "最新(Latest)", "视频(Video)"]
                        }
                    },
                    "customTabs": {
                        "title": "Custom Forum Tabs",
                        "type": "array",
                        "editor": "stringList",
                        "description": "You can also write the tab name in Chinese, but it must match the website exactly."
                    },
                    "maxPostsPerTab": {
                        "title": "Max Posts Per Tab",
                        "type": "integer",
                        "description": "Maximum number of posts to scrape per forum tab. The Actor will stop scraping once this limit is reached for the tab.",
                        "minimum": 1,
                        "unit": "posts"
                    }
                }
            }
        },
        "urls": {
            "title": "Start URLs (Post URLs, Profile URLs or Hot Topic URLs)",
            "type": "array",
            "description": "You can add direct URLs to scrape here. It can be a post URL, User Profile URL or Hot Topic URL.",
            "editor": "requestListSources",
            "sectionCaption": "🔗 Scrape by Post URLs or Profile URLs"
        },
        "topics": {
            "title": "Topics to Scrape",
            "type": "array",
            "description": "Enter the topics you want to scrape. Example: '剧情' or '#剧情'. Alternatively, you can also add Topic URLs in the Start URLs section above.",
            "editor": "stringList",
            "sectionCaption": "#️⃣ Scrape by Topics",
            "sectionDescription": "Enter the topics you want to scrape. Example: '剧情' or '#剧情'. Alternatively, you can also add Topic URLs in the Start URLs section above."
        },
        "sortTopicPostsBy": {
            "title": "Sort Topic Posts By",
            "type": "string",
            "description": "Choose how to sort the posts when scraping a Hot Topic URL or Topic. 'Hottest' sorts by popularity, while 'Latest' sorts by date with the newest posts first.",
            "enum": ["hottest", "latest"],
            "enumTitles": ["Hottest", "Latest"],
            "default": "hottest",
            "prefill": "hottest"
        },
        "maxPosts": {
            "title": "Max Posts",
            "type": "integer",
            "description": "Maximum number of posts to scrape in total. The Actor will stop scraping once this limit is reached.",
            "default": 100,
            "prefill": 100,
            "unit": "posts",
            "sectionCaption": "⚙️ Options and Limits",
            "sectionDescription": "This limit applies to the **Search Terms**, **Topics**, **Profiles** and **Hot Topics** scrapping modes. \n\n**Max Posts** means the total number of posts to be scraped per search term, topic, profile or hot topic." 
        }
    }
} -->

##### 🔍 Scraping by search terms:
- 🔍 `searchTerms` - Enter one or more keywords to search for. Each keyword runs as a separate search. Add the limit per term in the `maxPosts` field
- 🏷️ `sortSearchBy` - Choose how to sort search results: **most_relevant**, **latest** or **oldest**
- 👥 `searchWithinForum` - If you want to search within a specific forum, enter the forum name, ID or URL here. This will limit the search results to that forum. Leave empty to search across all forums.
##### 🌐 Scraping by forum tabs:
- 🗫 `forums`
    - 🗫 `forum` - Enter the forum name, ID or URL you want to scrape
    - 🗂️ `tabs` - Select the forum tabs you want to scrape. You can choose from: **highlights**, **popular**, **latest** and **video**.
    - 🗃️ `customTabs` - Write the tab names in Chinese, it must match the website exactly.
    - ⚙️ `maxPostsPerTab` - Maximum number of posts to scrape per forum tab. The Actor will stop scraping once this limit is reached for the tab.
##### 🔗 Scraping by post URLs, profile URLs or hot topic URLs:
- 🔗 `urls` - You can add direct URLs to scrape here. It can be a post URL, User Profile URL or Hot Topic URL.
##### #️⃣ Scraping by topics:
- 💬 `topics` - Enter the topics you want to scrape. Example: `剧情` or `#剧情`. Alternatively, you can also add Topic URLs in the Direct URLs section above.
- ↕️ `sortTopicPostsBy` - Choose how to sort the posts when scraping a Hot Topic URL or Topic. 'Hottest' sorts by popularity, while 'Latest' sorts by date with the newest posts first.
##### ⚙️ Options and limits:
- ⚙️ `maxPosts` - Maximum number of posts to be scraped per search term, topic, profile or hot topic.

#### ⚙️ Input Examples

###### Example 1 - Search for "AI" and "电视剧", sort results by latest and scrape up to 50 posts per search term:
```json
{
    "searchTerms": ["AI", "电视剧"],
    "sortSearchBy": "latest",
    "maxPosts": 50
}
````

###### Example 2 - Search for "电影" within the forum "影视综合吧", sort results by most relevant and scrape up to 30 posts:

```json
{
    "searchTerms": ["电影"],
    "searchWithinForum": "影视综合吧",
    "sortSearchBy": "most_relevant",
    "maxPosts": 30
}
```

###### Example 3 - Scrape the "highlights" and "latest" tabs of the forum "科技吧", and the custom tab "影视评论" of the forum "电影吧". Limit to 30 posts per tab.

```json
{
    "forums": [
        {
            "forum": "科技吧",
            "tabs": ["highlights", "latest"],
            "maxPostsPerTab": 30
        },
        {
            "forum": "https://tieba.baidu.com/f?kw=电影",
            "customTabs": ["影视评论"],
            "maxPostsPerTab": 30
        }
    ]
}
```

###### Example 4 - Scrape 50 posts from a specific user profile URL

```json
{
    "urls": [
        "https://tieba.baidu.com/home/main?id=tb.1.135d68fd.x0_ekF6cFiliserYCXzKgg%3Ft%3D1777329085&fr=pb",
    ],
    "sortTopicPostsBy": "hottest",
    "maxPosts": 50
}
```

###### Example 5 - Scrape the topic "剧情" and sort posts by latest:

```json
{
    "topics": ["剧情"],
    "sortTopicPostsBy": "latest",
    "maxPosts": 50
}
```

### 📤 Output Format

The output will be a dataset with the following fields for each post:

### 📦 Output Example

```json
{
    "postId": 153462872847,
    "type": "post",
    "url": "https://tieba.baidu.com/p/10673597972",
    "title": "不是，大早上起床就有瓜吃啊",
    "authorName": "ts汝韩爹邪",
    "authorId": 2705111892,
    "authorIsVerified": false,
    "authorLevel": 8,
    "authorAvatarUrl": "https://gss0.bdstatic.com/6LZ1dD3d1sgCo2Kml5_Y_D3/sys/portrait/item/tb.1.a755301f.gC8Lgc_ZruZdDjCRVOlmwA?t=1777389324",
    "content": "如果是真的，小钰这次应该是要没工作了",
    "images": [
        {
            "width": 560,
            "height": 1205,
            "smallPic": "https://tiebapic.baidu.com/forum/w%3D720%3Bq%3D80/sign=5127075ccdd4b31cf03c96b9b7ed5642/8435e5dde71190ef6d0c8ec0881b9d16fdfa603d.jpg?tbpicau=2026-05-09-05_d68c0afab3877fa6d85b29978f530149",
            "waterPic": "https://tiebapic.baidu.com/forum/w%3D580%3B/sign=dd9639171543fbf2c52ca62b8045cb80/8435e5dde71190ef6d0c8ec0881b9d16fdfa603d.jpg?tbpicau=2026-05-09-05_ea0df641264aa6d122bb3ffcffbf127a",
            "bigPic": "https://tiebapic.baidu.com/forum/pic/item/fe68f1d2572c11dfb226a33c252762d0f603c268.jpg?tbpicau=2026-05-09-05_36f0c9ef7ad5fe6fd9c0cf4cafb79e22"
        },
        {
            "width": 560,
            "height": 1205,
            "smallPic": "https://tiebapic.baidu.com/forum/w%3D720%3Bq%3D80/sign=32b9a2fbf51c8701d6b6b0e41744ef12/e4dde71190ef76c6bb25e734db16fdfaaf51673d.jpg?tbpicau=2026-05-09-05_087d854ea64143d7ac62a8e288b8da96",
            "waterPic": "https://tiebapic.baidu.com/forum/w%3D580%3B/sign=0cf27a6cbdf2b211e42e8546fabb6438/e4dde71190ef76c6bb25e734db16fdfaaf51673d.jpg?tbpicau=2026-05-09-05_47b33e10141bdbef08075860f3eb1087",
            "bigPic": "https://tiebapic.baidu.com/forum/pic/item/6e62542d11dfa9ec96d94a0824d0f703908fc168.jpg?tbpicau=2026-05-09-05_7b9ecfa9d4643228d2a97d3ca7c19f07"
        }
    ],
    "videoInfo": {
        "playUrl": "http://tb-video.bdstatic.com/tieba-smallvideo/39_91bb5f0a2373792849633cb6315f9366.mp4",
        "playCount": 444286,
        "duration": 40,
        "thumbnailUrl": "https://tiebapic.baidu.com/forum/w%3D960%3Bq%3D80/sign=1c5989f59700baa1ba2c4bbd772bc82f/42166d224f4a20a4c54778ded6529822720ed04a.jpg?tbpicau=2026-05-10-05_eb9af95421f9af282af320471e278e5b",
        "height": 1080,
        "width": 1920
    },
    "createTime": 1777330155,
    "createTimeUtc": "2026-04-27T22:49:15.000Z",
    "viewCount": 279527,
    "commentCount": 503,
    "collectCount": 241,
    "shareCount": 126,
    "agreeCount": 9276,
    "disagreeCount": 60,
    "diffAgreeCount": 9216,
    "validPostCount": 220,
    "forumId": 17019292,
    "forumName": "抗压背锅",
    "forumAvatarUrl": "https://tiebapic.baidu.com/forum/w%3D120%3Bh%3D120/sign=2d07ca6aec014c08193b2ca73a406a35/a2cc7cd98d1001e9fd2253ccfd0e7bec55e797d3.jpg?tbpicau=2026-05-09-05_eaa69592cd88edae251b63cb69818d4d",
    "forumPrimaryCategory": "游戏",
    "forumSecondaryCategory": "电子竞技及选手"
}
```

### 💲How much will scraping Baidu Tieba cost you?

The pricing changes according to your Apify plan.

- Free: **$5.00**/1,000 posts
- Starter: **$3.00**/1,000 posts
- Scale: **$2.50**/1,000 posts
- Business: **$2.20**/1,000 posts

### 🧩 Integrations and Baidu Tieba Scraper

Baidu Tieba Scraper can be connected with almost any cloud service or web app thanks to [integrations on the Apify platform](https://apify.com/integrations). You can integrate with Make, Zapier, Slack, Airbyte, GitHub, Google Sheets, Google Drive, [and more](https://docs.apify.com/integrations). Or you can use [webhooks](https://docs.apify.com/integrations/webhooks) to carry out an action whenever an event occurs, e.g. get a notification whenever Baidu Tieba Scraper successfully finishes a run.

### 🔌Using Baidu Tieba Scraper with the Apify API

The Apify API gives you programmatic access to the Apify platform. The API is organized around RESTful HTTP endpoints that enable you to manage, schedule, and run Apify actors. The API also lets you access any datasets, monitor actor performance, fetch results, create and update versions, and more.

To access the API using Node.js, use the apify-client NPM package. To access the API using Python, use the apify-client PyPI package.

Check out the [Apify API reference](https://docs.apify.com/api/v2) docs for full details or click on the [API tab](https://apify.com/natanielsantos/baidu-tieba-scraper/api) for code examples.

### 💬 Giving feedback

We’re always working on improving the performance of our Actors. So if you’ve got any technical feedback for Baidu Tieba scraper or simply found a bug, please create an issue on the Actor’s [Issues tab](https://apify.com/natanielsantos/baidu-tieba-scraper/issues/open) in Apify Console.
📧 Email: nathan.santos159@hotmail.com

# Actor input Schema

## `searchTerms` (type: `array`):

Enter one or more keywords to search for. Each keyword runs as a separate search.

## `sortSearchBy` (type: `string`):

Choose how to sort the search results. 'Most Relevant' sorts by relevance to the search term, 'Latest' sorts by date with the newest posts first, and 'Oldest' sorts by date with the oldest posts first.

## `searchWithinForum` (type: `string`):

If you want to search within a specific forum, enter the forum name, ID or URL here. This will limit the search results to that forum. Leave empty to search across all forums.

## `forums` (type: `array`):

Enter the forums you want to scrape. You can enter the forum name, URL or ID. This is required if you are not using search terms above.

## `urls` (type: `array`):

You can add direct URLs to scrape here. It can be a post URL, User Profile URL or Hot Topic URL.

## `topics` (type: `array`):

Enter the topics you want to scrape. Example: '剧情' or '#剧情'. Alternatively, you can also add Topic URLs in the Start URLs section above.

## `sortTopicPostsBy` (type: `string`):

Choose how to sort the posts when scraping a Hot Topic URL or Topic. 'Hottest' sorts by popularity, while 'Latest' sorts by date with the newest posts first.

## `maxPosts` (type: `integer`):

Maximum number of posts to be scraped per search term, topic, profile or hot topic.

## Actor input object example

```json
{
  "sortSearchBy": "most_relevant",
  "searchWithinForum": "",
  "sortTopicPostsBy": "hottest",
  "maxPosts": 100
}
```

# 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 = {
    "sortSearchBy": "most_relevant",
    "sortTopicPostsBy": "hottest",
    "maxPosts": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("natanielsantos/baidu-tieba-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 = {
    "sortSearchBy": "most_relevant",
    "sortTopicPostsBy": "hottest",
    "maxPosts": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("natanielsantos/baidu-tieba-scraper").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "sortSearchBy": "most_relevant",
  "sortTopicPostsBy": "hottest",
  "maxPosts": 100
}' |
apify call natanielsantos/baidu-tieba-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=natanielsantos/baidu-tieba-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Baidu Tieba Scraper",
        "description": "This powerful tool allows you to easily extract posts from forums, profiles, search terms and topics from tieba.baidu.com. Only pay for what you use. Works with MCP and AI tools.",
        "version": "0.0",
        "x-build-id": "e4haja8gToXu3iWWt"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/natanielsantos~baidu-tieba-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-natanielsantos-baidu-tieba-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/natanielsantos~baidu-tieba-scraper/runs": {
            "post": {
                "operationId": "runs-sync-natanielsantos-baidu-tieba-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/natanielsantos~baidu-tieba-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-natanielsantos-baidu-tieba-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "searchTerms": {
                        "title": "Search Terms",
                        "type": "array",
                        "description": "Enter one or more keywords to search for. Each keyword runs as a separate search.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "sortSearchBy": {
                        "title": "Sort Search Results By",
                        "enum": [
                            "most_relevant",
                            "latest",
                            "oldest"
                        ],
                        "type": "string",
                        "description": "Choose how to sort the search results. 'Most Relevant' sorts by relevance to the search term, 'Latest' sorts by date with the newest posts first, and 'Oldest' sorts by date with the oldest posts first.",
                        "default": "most_relevant"
                    },
                    "searchWithinForum": {
                        "title": "Search within this forum (provide the forum name, URL or ID)",
                        "type": "string",
                        "description": "If you want to search within a specific forum, enter the forum name, ID or URL here. This will limit the search results to that forum. Leave empty to search across all forums.",
                        "default": ""
                    },
                    "forums": {
                        "title": "Forums to Scrape",
                        "type": "array",
                        "description": "Enter the forums you want to scrape. You can enter the forum name, URL or ID. This is required if you are not using search terms above.",
                        "items": {
                            "type": "object",
                            "properties": {
                                "forum": {
                                    "title": "Forum (name, URL or ID)",
                                    "type": "string",
                                    "editor": "textfield",
                                    "minLength": 1,
                                    "description": "Enter the forum name, ID or URL you want to scrape"
                                },
                                "tabs": {
                                    "title": "Forum Tabs",
                                    "type": "array",
                                    "editor": "select",
                                    "description": "Select the tabs you want to scrape.",
                                    "items": {
                                        "type": "string",
                                        "enum": [
                                            "highlights",
                                            "popular",
                                            "latest",
                                            "video"
                                        ],
                                        "enumTitles": [
                                            "精华(Highlights)",
                                            "热门(Popular)",
                                            "最新(Latest)",
                                            "视频(Video)"
                                        ]
                                    }
                                },
                                "customTabs": {
                                    "title": "Custom Forum Tabs",
                                    "type": "array",
                                    "editor": "stringList",
                                    "description": "Write the tab names in Chinese, it must match the website exactly"
                                },
                                "maxPostsPerTab": {
                                    "title": "Max Posts Per Tab",
                                    "type": "integer",
                                    "description": "Maximum number of posts to scrape per forum tab. The Actor will stop scraping once this limit is reached for the tab.",
                                    "minimum": 1,
                                    "unit": "posts"
                                }
                            }
                        }
                    },
                    "urls": {
                        "title": "Start URLs (Post URLs, Profile URLs or Hot Topic URLs)",
                        "type": "array",
                        "description": "You can add direct URLs to scrape here. It can be a post URL, User Profile URL or Hot Topic URL.",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "topics": {
                        "title": "Topics to Scrape",
                        "type": "array",
                        "description": "Enter the topics you want to scrape. Example: '剧情' or '#剧情'. Alternatively, you can also add Topic URLs in the Start URLs section above.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "sortTopicPostsBy": {
                        "title": "Sort Topic Posts By",
                        "enum": [
                            "hottest",
                            "latest"
                        ],
                        "type": "string",
                        "description": "Choose how to sort the posts when scraping a Hot Topic URL or Topic. 'Hottest' sorts by popularity, while 'Latest' sorts by date with the newest posts first.",
                        "default": "hottest"
                    },
                    "maxPosts": {
                        "title": "Max Posts",
                        "type": "integer",
                        "description": "Maximum number of posts to be scraped per search term, topic, profile or hot topic.",
                        "default": 100
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
