# Baidu Search Scraper - SERP Results, AI Overview & Related (`parseforge/baidu-search-scraper`) Actor

Scrape Baidu search results for any query: organic listings with real URLs, snippets, dates and thumbnails, plus AI overview, encyclopedia, news, ads and related searches. No login or API key. Export CSV, Excel, JSON or XML.

- **URL**: https://apify.com/parseforge/baidu-search-scraper.md
- **Developed by:** [ParseForge](https://apify.com/parseforge) (community)
- **Categories:** SEO tools, Developer tools, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.20 / 1,000 result rows

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

![ParseForge Banner](https://raw.githubusercontent.com/ParseForge/apify-assets/main/banner-v3.webp)

## 🔎 Baidu Search Scraper

> 🚀 **Export Baidu search results in seconds.** Organic results with the real destination URL, snippet, source, date and thumbnail, plus Baidu's AI overview, encyclopedia cards, ads and related searches. No login and no API key.

Baidu is where China searches, and its results look very different from Google's or Bing's. This Actor takes one or more queries, reads the public Baidu results pages and gives you one flat row per result. In our last cloud test, two queries over three pages came back as 50 rows in 24 seconds.

Each row has 25 fields. Organic rows carry the real destination URL (not Baidu's redirect link), the title, the snippet, the site or author name, the date as Baidu prints it and as an ISO date, the thumbnail and the favicon. Optional rows add the AI overview, Baike encyclopedia cards, news, image and product blocks, ads, and one summary row per query with the related searches.

| 🎯 Target Audience | 💡 Primary Use Cases |
| --- | --- |
| SEO and market researchers | Rank tracking and share of voice on Baidu |
| Brands selling in China | Seeing what Chinese users find when they search your brand |
| Data and AI teams | Chinese web discovery, query suggestions and AI overview text |
| Agencies | Competitor and ad monitoring on China's main search engine |

### 📋 What the Baidu Search Scraper does

> 💡 **Why it matters:** Baidu ranks Chinese platforms (Baijiahao, Zhihu, WeChat, CSDN) that are barely visible elsewhere. Google and Bing tools do not show what a user in China sees.

- Searches one or many queries, in Chinese or English, with Baidu operators such as `site:` passed through.
- Reads up to 25 result pages per query, with the `position` and `page` of every row.
- Replaces Baidu's tracking link with the real destination URL and domain.
- Outputs special blocks as their own rows with a `type`: AI overview, encyclopedia, news, images, products, notes and others.
- Optional ad rows (type `ad`) with title and snippet.
- Optional summary row per query with related searches and the "people also search" list.
- Restricts results to one site and to the past day, week, month or year.

### 🎬 Full Demo

🚧 Coming soon.

### 📊 Output

Every row has a `type` column: organic, ad, aiOverview, encyclopedia, news, images, products, notes, finance, cars, other or querySummary.

| Field | Meaning |
| --- | --- |
| 🖼 `imageUrl` | Thumbnail of the result, or N/A |
| 🏷 `type` | Kind of row |
| 🔎 `query` | The query the row belongs to |
| #️⃣ `position` / 📄 `page` | Organic position across pages, and the page it came from |
| 📌 `title` / 🔗 `url` / 🌐 `domain` | Title, destination URL and hostname |
| 📝 `snippet` | Description under the result |
| 📰 `source` / 🏢 `company` | Site or author name, and the company Baidu verified, when shown |
| 📅 `publishedText` / 🕒 `publishedAt` | Date as printed (for example 3天前) and as ISO 8601 |
| ⭐ `faviconUrl` / 🏷 `tags` | Avatar and badges such as 官方 |
| 🥇 `baiduRank` / ↪ `baiduLink` / 🧩 `template` | Baidu's own rank, redirect link and template |
| 📚 `pagesFetched` / 🔢 `organicResults` / 🔁 `relatedSearches` / 👥 `peopleAlsoSearch` | Summary row only |
| 🕐 `scrapedAt` / ⚠️ `error` | Scrape time and error message, if any |

Three real records from a run (long values shortened):

```json
{
  "imageUrl": "https://t9.baidu.com/it/u=3796310846,1850140733&fm=3035&app=3035&size=...",
  "type": "organic",
  "query": "人工智能",
  "position": 2,
  "page": 1,
  "title": "什么叫人工智能?人工智能:定义、发展、应用与未来展望",
  "url": "https://baijiahao.baidu.com/s?id=1830192727684546586&wfr=spider&for=pc",
  "domain": "baijiahao.baidu.com",
  "displayedUrl": "N/A",
  "snippet": "从广义上讲，人工智能是指通过计算机系统模拟人类智能的能力，包括学习、推理、问题解决、感知和语言理解等。它不仅仅是一种单一的技术，而是涵盖了深...",
  "source": "许老师数学自主学习课堂",
  "company": "Not Disclosed",
  "tags": [],
  "publishedText": "2025年4月23日",
  "publishedAt": "2025-04-23T00:00:00.000Z",
  "faviconUrl": "https://gimg3.baidu.com/search/src=https%3A%2F%2Fpic.rmb.bdstatic.com%2Fbjh%2Fportrait%2Ff1c77bf4fc9f3651df29e52acde36e94.jpeg&refer=http%3A%2F%2Fwww.baidu.com&app=2021&size=r1,1&n=0&g=4&er=404&q=100&maxorilen2heic=2000000?sec=1792947600&t=df8e934d5f4df3af58b7c85ff7c993b7",
  "baiduRank": 9,
  "baiduLink": "http://www.baidu.com/link?url=SgMBN4JmAnk3fkCwJG7e...",
  "template": "www_index",
  "pagesFetched": 0,
  "organicResults": 0,
  "relatedSearches": [],
  "peopleAlsoSearch": [],
  "scrapedAt": "2026-10-23T21:46:50.192Z",
  "error": null
}
```

```json
{
  "imageUrl": "https://gimg3.baidu.com/topone/src=https%3A%2F%2Fbkimg.cdn.bcebos.com%...",
  "type": "encyclopedia",
  "query": "人工智能",
  "position": 0,
  "page": 1,
  "title": "人工智能 - 百度百科",
  "url": "https://baike.baidu.com/item/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/9180",
  "domain": "baike.baidu.com",
  "displayedUrl": "N/A",
  "snippet": "人工智能 - 百度百科 提出时间：1956年简介：人工智能（Artificial Intelligence，缩写AI）是研究、开发用于模拟...",
  "source": "Not Disclosed",
  "company": "Not Disclosed",
  "tags": [],
  "publishedText": "Not Disclosed",
  "publishedAt": "Not Disclosed",
  "faviconUrl": "Not Disclosed",
  "baiduRank": 1,
  "baiduLink": "Not Disclosed",
  "template": "sg_kg_entity_san",
  "pagesFetched": 0,
  "organicResults": 0,
  "relatedSearches": [],
  "peopleAlsoSearch": [],
  "scrapedAt": "2026-10-23T21:46:50.192Z",
  "error": null
}
```

```json
{
  "imageUrl": "N/A",
  "type": "querySummary",
  "query": "人工智能",
  "position": 0,
  "page": 0,
  "title": "人工智能",
  "url": "https://www.baidu.com/s?ie=utf-8&wd=%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD",
  "domain": "baidu.com",
  "displayedUrl": "N/A",
  "snippet": "Not Disclosed",
  "source": "Baidu",
  "company": "Not Disclosed",
  "tags": [],
  "publishedText": "Not Disclosed",
  "publishedAt": "Not Disclosed",
  "faviconUrl": "Not Disclosed",
  "baiduRank": 0,
  "baiduLink": "Not Disclosed",
  "template": "summary",
  "pagesFetched": 2,
  "organicResults": 12,
  "relatedSearches": [
    "人工智能ai软件",
    "人工智能的定义和概念",
    "人工智能app哪个好用"
  ],
  "peopleAlsoSearch": [
    "人工智能ai软件",
    "人工智能的定义和概念",
    "人工智能app哪个好用"
  ],
  "scrapedAt": "2026-10-23T21:46:54.052Z",
  "error": null
}
```

Fields Baidu does not show hold `Not Disclosed`, or `N/A` when they do not apply, never an empty cell. Ad rows keep Baidu's ad redirect link, because resolving it would click the ad. A row that could not be read carries only an `error` message and is never charged.

### ✨ Why choose this Actor

- **No key, no login.** It reads the public results pages, with no paid SERP service behind it.
- **Plain HTTP, no browser.** About 0.3 MB per page and a couple of seconds per query on 512 MB.
- **Self-healing.** Blocked answers are retried on a fresh address, and the run falls back to residential proxies if all datacenter ones are refused.
- **Clean rows.** Dates in ISO form, tracking links replaced by the real URL, no empty cells.
- **More than links.** AI overview, encyclopedia, ads and related searches arrive in the same table.

### 📈 How it compares to alternatives

| | This Actor | Typical Baidu scraper |
| --- | --- | --- |
| Real destination URL | ✅ | Often Baidu redirect links |
| AI overview and Baike blocks | ✅ as rows | Some |
| Related searches | ✅ | Some |
| Ads | ✅ optional | Rare |
| Result total count | ❌ Baidu no longer prints it | n/a |
| Depth | About 20 to 25 pages | Same ceiling |
| Yandex | ❌ not included | Separate actors |

### 🚀 How to use

1. Create a free Apify account. New accounts get $5 in free credit: [sign up here](https://console.apify.com/sign-up?fpr=vmoqkp).
2. Open the Baidu Search Scraper and click **Try for free**.
3. Add your queries, one per line.
4. Choose pages per query, and optionally a site or time range.
5. Set **Max Items** and switch on ads, special blocks or the summary row.
6. Click **Start** and watch the run log.
7. Open the **Storage** tab and download CSV, Excel, JSON or XML, or read the rows through the Apify API.

Input examples:

```json
{ "queries": ["人工智能", "python教程"], "maxPagesPerQuery": 3, "maxItems": 100 }
```

```json
{ "queries": ["iphone 16"], "site": "zhihu.com", "timeRange": "month", "includeAds": true, "maxItems": 50 }
```

Free Apify plans return up to 10 rows as a preview.

### 💼 Business use cases

#### Rank tracking

Run your keywords daily and compare `position` over time.

#### Brand monitoring

Search your brand and see which platforms and what text Baidu surfaces.

#### Market research

`relatedSearches` and `peopleAlsoSearch` show how Chinese users phrase a topic.

#### AI and data pipelines

Feed `aiOverview` text and result URLs to a crawler or an LLM.

### 🔌 Automating Baidu Search Scraper

- **Make and Zapier**: run the Actor on a schedule and push ranking changes into a sheet.
- **Slack**: post an alert when a brand query shows a new top result.
- **Airbyte**: sync rows into a warehouse and join on `query`.
- **GitHub Actions**: run weekly and commit the CSV so a ranking history builds itself.
- **Google Drive**: drop each export into a shared folder for the SEO team.
- **Apify Scheduler**: run daily, weekly or hourly with no external tooling.

### 🌟 Beyond business use cases

- **Research**: study which platforms dominate Chinese-language information.
- **Personal**: see what people in China actually search around a topic before you travel or study.
- **Non-profit**: monitor media coverage of an issue on China's main search engine.
- **Experimentation**: build a Chinese-language query and snippet corpus.

### 🤖 Ask an AI assistant about this scraper

Paste this into ChatGPT, Claude or any assistant:

> I am using the Baidu Search Scraper on Apify. It returns rows with type, query, position, page, title, url, domain, snippet, source, publishedAt and baiduRank, plus summary rows with relatedSearches. Help me design an analysis that shows which platforms rank for my ten brand keywords and how that changes week to week.

### ❓ Frequently Asked Questions

#### 🔑 Does it need a login or API key?

No. It reads public results pages.

#### 🌏 Is Yandex included?

No. Yandex shows a captcha to almost every automated request, and in our tests only the first results page passed some of the time, never page two onward. About 10 to 12 results per query is not a product, so this Actor covers Baidu only.

#### 🔢 How deep can I go?

Baidu serves roughly 20 to 25 pages of results per query. Some queries, especially English ones, run out after 2 or 3 pages. The Actor stops when Baidu starts repeating itself.

#### 🔗 Why is the URL different from what I see on Baidu?

Baidu links through a redirect. The Actor returns the real destination and keeps the redirect in `baiduLink`.

#### 📣 Are ad URLs real?

Ad rows keep Baidu's ad redirect link, because resolving it would click the ad.

#### ❔ Why are some cells Not Disclosed?

Baidu does not show a date, source or company for every result. The Actor says so instead of leaving empty cells.

#### 📊 Is there a total result count?

No. Baidu stopped printing it.

#### 🌐 Can I filter by language or region?

Not at the moment. The language filter was unreliable in our tests, so it is not offered. You can filter by site and by time range.

#### 🛡 Do I need a proxy?

The default Apify datacenter proxy is enough in normal runs. Residential is used only as an automatic fallback when datacenter addresses are refused.

#### 🛑 What happens when Baidu blocks a request?

The Actor retries on a new address. If a page still cannot be read it writes an error row, which is never charged.

#### 🔟 Can I set a result limit?

Yes, with Max Items. Free users get 10 rows.

#### 💵 How is it billed?

Pay per event: one event per row delivered (organic results, special blocks, ads and summary rows all count as rows). Error rows are free. Current prices are on the Actor's Pricing tab.

### 🔌 Integrate with any app

Every run writes to an Apify dataset you can read over the REST API, stream into a webhook, or export as CSV, Excel, JSON or XML. Apify's integrations cover Make, Zapier, Airbyte, Slack, Google Drive, GitHub, Google Sheets and plain HTTP webhooks, so the rows land wherever your team already works.

### 🔗 Recommended Actors

- [Google Search Scraper](https://apify.com/parseforge/google-search-scraper) for Google results with the same row-per-result layout.
- [Bing Search Scraper](https://apify.com/parseforge/bing-search-scraper) for Bing results.
- [DuckDuckGo Search Scraper](https://apify.com/parseforge/duckduckgo-search-scraper) for DuckDuckGo results.

> 💡 **Pro Tip:** browse the complete [ParseForge collection](https://apify.com/parseforge) for more scrapers.

**🆘 Need Help?** [Open our contact form](https://tally.so/r/BzdKgA)

> **⚠️ Disclaimer:** This is an independent tool and is not affiliated with, endorsed by, or connected to Baidu. It collects only publicly available data. You are responsible for using it in line with Baidu's terms and applicable laws, including GDPR.

# Actor input Schema

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

One query per line. Chinese and English both work. Baidu operators such as site: are passed through.

## `maxItems` (type: `integer`):

Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000

## `maxPagesPerQuery` (type: `integer`):

How many result pages to read for each query. Baidu serves roughly 20 to 25 pages of 10 results at most; the run stops early when a query runs out of results.

## `site` (type: `string`):

Restrict results to one domain, for example zhihu.com. Same as adding site: to the query.

## `timeRange` (type: `string`):

Only pages Baidu dates inside this window.

## `includeSpecialBlocks` (type: `boolean`):

Also output Baidu's AI overview, encyclopedia (Baike) cards, news, image, product and notes blocks as their own rows (column type).

## `includeAds` (type: `boolean`):

Also output the paid ads Baidu shows on the page (type ad).

## `includeQuerySummary` (type: `boolean`):

One extra row per query with the related searches, the 'people also search' list, the pages read and the AI overview text.

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

Datacenter proxies are enough: every request goes out on a fresh address. The Actor falls back to residential on its own if they are all refused.

## Actor input object example

```json
{
  "queries": [
    "人工智能",
    "iphone 16"
  ],
  "maxItems": 10,
  "maxPagesPerQuery": 3,
  "timeRange": "any",
  "includeSpecialBlocks": true,
  "includeAds": false,
  "includeQuerySummary": true,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `overview` (type: `string`):

Key fields of every result

## `fullData` (type: `string`):

Complete dataset with all 25 fields

# 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": [
        "人工智能",
        "iphone 16"
    ],
    "maxItems": 10,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("parseforge/baidu-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 = {
    "queries": [
        "人工智能",
        "iphone 16",
    ],
    "maxItems": 10,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("parseforge/baidu-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 '{
  "queries": [
    "人工智能",
    "iphone 16"
  ],
  "maxItems": 10,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call parseforge/baidu-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,parseforge/baidu-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/Eua7lI4urmoprLY5P/builds/PnnmPwfHQi5amlXi8/openapi.json
