Baidu Rank Tracker: China SEO Keyword Monitoring
Turn Baidu searches into a rank tracker for the Chinese market. Run a keyword, read the organic positions, match your domain, and repeat on a schedule to build a Baidu tracking history: where you rank, where competitors rank, and how that moves over time.
When to use this skill
- The user wants Baidu tracking or Baidu monitoring for keywords, a brand, or a domain.
- They want to check where a site ranks on Baidu for a set of keywords.
- They want recurring China SEO reporting: positions per keyword over time.
- They want competitor watch on the Chinese web: who holds the top spots for their terms.
Not for: one-off Baidu SERP exports (use the apify-baidu-search-api skill), Google or Yandex rank tracking, or Baidu paid-ads reporting.
What each check returns (one dataset item per SERP page)
Each dataset item is one page of results. The ranking signal lives in the nested organic_results array: every row has position, title, and link, with displayed_link, rich_snippet, and sitelinks on rows where Baidu shows them. Match your domain against link (often a Baidu redirect URL) and displayed_link when present. The item also carries related_searches (query, link) and people_also_search_for (text, link) for keyword expansion, top_searches trending data, and run metadata: query, device, localization, page, search_timestamp (the tracking timestamp), total_results_found, pages_processed, and pagination_info.
Prerequisites
The Actor
Run it with the Apify CLI
One rank check, top 10 only (one page):
apify actors call "johnvc/Baidu-Search-Scraper" -i '{"query":"项目管理软件","localization":2,"max_pagination":1}' \
--json \
--user-agent apify-awesome-skills/apify-baidu-rank-tracker \
2>/dev/null
A deeper check across the top 30 (three pages):
apify actors call "johnvc/Baidu-Search-Scraper" -i '{"query":"crm 软件","localization":2,"num_results":10,"max_pagination":3}' \
--json \
--user-agent apify-awesome-skills/apify-baidu-rank-tracker \
2>/dev/null
Read a finished run's items later, for example from a scheduled run:
apify datasets get-items <DATASET_ID> --format json --user-agent apify-awesome-skills/apify-baidu-rank-tracker 2>/dev/null
Every call carries the three flags this repo expects: --json (or --format json), --user-agent apify-awesome-skills/apify-baidu-rank-tracker, and 2>/dev/null.
Run it from Claude or another AI agent (MCP)
The Actor is MCP-ready. Add the hosted server URL:
https://mcp.apify.com/?tools=actors,docs,johnvc/Baidu-Search-Scraper
Then ask, for example: "Check where example.cn ranks on Baidu for 项目管理软件 and list the top 10 with positions." MCP setup docs: https://docs.apify.com/platform/integrations/mcp
Workflow
- Define the tracking set. One keyword per Actor call: the brand term, product names, and the competitor terms that matter. Chinese-language keywords track the market your users actually search in.
- Fix the SERP variant. Set
localization (2 for Simplified Chinese, 3 for Traditional) and device (desktop or mobile) once and keep them constant across checks, so position changes reflect the market and not the settings.
- Bound the depth.
max_pagination 1 tracks the top 10; 3 tracks roughly the top 30. Depth is the cost driver, so track only as deep as the report needs.
- Estimate cost per check and per month, then confirm with the user. See
references/gotchas.md.
- Run the checks and score them. For each keyword, scan
organic_results for rows whose link or displayed_link matches the tracked domain, and record position with the item's search_timestamp. No match across all pages means not ranked in the tracked depth: record it as such.
- Persist and repeat. Append each check to your store (sheet, database, or JSON file) keyed by keyword, domain, and date. For recurring tracking, wrap the same input in an Apify Schedule or a cron job, and alert when a position drops below a threshold.
Inputs
query (string, required): the keyword to track
device (enum: desktop, mobile, tablet; default desktop): keep constant across checks
localization (integer: 1 all languages, 2 Simplified Chinese, 3 Traditional Chinese; default 1)
num_results (integer, default 10, max 50): rows per page
max_pagination (integer, default 3): tracked depth in pages, the cost driver
page (integer, default 1): starting page
time_period (string): stf=START_UNIX,END_UNIX|stftype=1 date window, rarely needed for tracking
Cost
Billing is a small one-time start fee per run plus a per-page fee, pre-charged from max_pagination. A one-page rank check costs a few cents; a daily one-page check on 10 keywords lands in the ballpark of $10 per month. Estimate with the live prices in references/gotchas.md before scheduling.
Honest limits
- Positions reflect the SERP at crawl time; Baidu results fluctuate run to run, so trends across checks matter more than any single reading.
- Organic
link values are often Baidu redirect URLs; when displayed_link is absent, match on your domain name inside title and resolve redirects client-side for certainty.
- This skill reads and scores the SERP per run; the position history lives in your store, not in the Actor.
- Tracking depth is bounded by
max_pagination; a site outside that depth reads as unranked.
Troubleshooting
- Domain never matches: check whether
link is a Baidu redirect URL; resolve it or match on displayed_link and title instead.
- Positions jump between checks: keep
device and localization constant, and compare same-time-of-day checks.
- Empty
organic_results: the keyword has no results on Baidu; verify the query manually and try a Chinese phrasing.
- Run exits early with a budget warning: raise the run's budget limit or lower
max_pagination.
See references/gotchas.md for cost guardrails and error recovery, and references/actor-index.md for the Actor routing table.
Related international rank-tracking Actors
1---2name: apify-baidu-rank-tracker3description: Track where a brand, domain, or competitor ranks on Baidu with the Apify Baidu Search Scraper Actor (johnvc/Baidu-Search-Scraper), built for China SEO. Run your keywords on a schedule, read each SERP page's nested organic_results (position, title, link), match your domain, and build a Baidu tracking history for rank checks, brand monitoring, and competitor watch in the Chinese market. Filters by device, Simplified or Traditional Chinese, and time period. Use when the user wants baidu tracking or baidu monitoring, a Baidu rank tracker or rank checker, to check keyword rankings on Baidu, to monitor a brand or competitor on the Chinese web, or China SEO reporting for a site. Pay-per-page billing, MCP-ready for Claude and other AI agents.4license: MIT5---67# Baidu Rank Tracker: China SEO Keyword Monitoring89Turn Baidu searches into a rank tracker for the Chinese market. Run a keyword, read the organic positions, match your domain, and repeat on a schedule to build a Baidu tracking history: where you rank, where competitors rank, and how that moves over time.1011## When to use this skill1213- The user wants Baidu tracking or Baidu monitoring for keywords, a brand, or a domain.14- They want to check where a site ranks on Baidu for a set of keywords.15- They want recurring China SEO reporting: positions per keyword over time.16- They want competitor watch on the Chinese web: who holds the top spots for their terms.1718Not for: one-off Baidu SERP exports (use the apify-baidu-search-api skill), Google or Yandex rank tracking, or Baidu paid-ads reporting.1920## What each check returns (one dataset item per SERP page)2122Each dataset item is one page of results. The ranking signal lives in the nested `organic_results` array: every row has `position`, `title`, and `link`, with `displayed_link`, `rich_snippet`, and `sitelinks` on rows where Baidu shows them. Match your domain against `link` (often a Baidu redirect URL) and `displayed_link` when present. The item also carries `related_searches` (`query`, `link`) and `people_also_search_for` (`text`, `link`) for keyword expansion, `top_searches` trending data, and run metadata: `query`, `device`, `localization`, `page`, `search_timestamp` (the tracking timestamp), `total_results_found`, `pages_processed`, and `pagination_info`.2324## Prerequisites2526- Apify account (sign up at https://apify.com?fpr=9n7kx3&fp_sid=skillrepo).27- Authentication via `apify login`, or an `APIFY_TOKEN` environment variable (Apify Console, Settings, Integrations).2829## The Actor3031- Store page: https://apify.com/johnvc/Baidu-Search-Scraper?fpr=9n7kx3&fp_sid=skillrepo32- Actor ID: `johnvc/Baidu-Search-Scraper`33- Pricing: a small per-run start fee plus a per-page fee (see `references/gotchas.md`).3435## Run it with the Apify CLI3637One rank check, top 10 only (one page):3839```bash40apify actors call "johnvc/Baidu-Search-Scraper" -i '{"query":"项目管理软件","localization":2,"max_pagination":1}' \41 --json \42 --user-agent apify-awesome-skills/apify-baidu-rank-tracker \43 2>/dev/null44```4546A deeper check across the top 30 (three pages):4748```bash49apify actors call "johnvc/Baidu-Search-Scraper" -i '{"query":"crm 软件","localization":2,"num_results":10,"max_pagination":3}' \50 --json \51 --user-agent apify-awesome-skills/apify-baidu-rank-tracker \52 2>/dev/null53```5455Read a finished run's items later, for example from a scheduled run:5657```bash58apify datasets get-items <DATASET_ID> --format json --user-agent apify-awesome-skills/apify-baidu-rank-tracker 2>/dev/null59```6061Every call carries the three flags this repo expects: `--json` (or `--format json`), `--user-agent apify-awesome-skills/apify-baidu-rank-tracker`, and `2>/dev/null`.6263## Run it from Claude or another AI agent (MCP)6465The Actor is MCP-ready. Add the hosted server URL:6667`https://mcp.apify.com/?tools=actors,docs,johnvc/Baidu-Search-Scraper`6869Then ask, for example: "Check where example.cn ranks on Baidu for 项目管理软件 and list the top 10 with positions." MCP setup docs: https://docs.apify.com/platform/integrations/mcp7071## Workflow72731. Define the tracking set. One keyword per Actor call: the brand term, product names, and the competitor terms that matter. Chinese-language keywords track the market your users actually search in.742. Fix the SERP variant. Set `localization` (2 for Simplified Chinese, 3 for Traditional) and `device` (`desktop` or `mobile`) once and keep them constant across checks, so position changes reflect the market and not the settings.753. Bound the depth. `max_pagination` 1 tracks the top 10; 3 tracks roughly the top 30. Depth is the cost driver, so track only as deep as the report needs.764. Estimate cost per check and per month, then confirm with the user. See `references/gotchas.md`.775. Run the checks and score them. For each keyword, scan `organic_results` for rows whose `link` or `displayed_link` matches the tracked domain, and record `position` with the item's `search_timestamp`. No match across all pages means not ranked in the tracked depth: record it as such.786. Persist and repeat. Append each check to your store (sheet, database, or JSON file) keyed by keyword, domain, and date. For recurring tracking, wrap the same input in an Apify Schedule or a cron job, and alert when a position drops below a threshold.7980## Inputs8182- `query` (string, required): the keyword to track83- `device` (enum: `desktop`, `mobile`, `tablet`; default `desktop`): keep constant across checks84- `localization` (integer: 1 all languages, 2 Simplified Chinese, 3 Traditional Chinese; default 1)85- `num_results` (integer, default 10, max 50): rows per page86- `max_pagination` (integer, default 3): tracked depth in pages, the cost driver87- `page` (integer, default 1): starting page88- `time_period` (string): `stf=START_UNIX,END_UNIX|stftype=1` date window, rarely needed for tracking8990## Cost9192Billing is a small one-time start fee per run plus a per-page fee, pre-charged from `max_pagination`. A one-page rank check costs a few cents; a daily one-page check on 10 keywords lands in the ballpark of $10 per month. Estimate with the live prices in `references/gotchas.md` before scheduling.9394## Honest limits9596- Positions reflect the SERP at crawl time; Baidu results fluctuate run to run, so trends across checks matter more than any single reading.97- Organic `link` values are often Baidu redirect URLs; when `displayed_link` is absent, match on your domain name inside `title` and resolve redirects client-side for certainty.98- This skill reads and scores the SERP per run; the position history lives in your store, not in the Actor.99- Tracking depth is bounded by `max_pagination`; a site outside that depth reads as unranked.100101## Troubleshooting102103- Domain never matches: check whether `link` is a Baidu redirect URL; resolve it or match on `displayed_link` and `title` instead.104- Positions jump between checks: keep `device` and `localization` constant, and compare same-time-of-day checks.105- Empty `organic_results`: the keyword has no results on Baidu; verify the query manually and try a Chinese phrasing.106- Run exits early with a budget warning: raise the run's budget limit or lower `max_pagination`.107108See `references/gotchas.md` for cost guardrails and error recovery, and `references/actor-index.md` for the Actor routing table.109110## Related international rank-tracking Actors111112- Yandex Search Scraper (Russia and the CIS): https://apify.com/johnvc/Scrape-Yandex?fpr=9n7kx3&fp_sid=skillrepo113- Naver Search API (Korea): https://apify.com/johnvc/naver-search-api?fpr=9n7kx3&fp_sid=skillrepo114- DuckDuckGo Scraper (privacy-focused Western markets): https://apify.com/johnvc/DuckDuckGo-Scraper-for-serp-rankings?fpr=9n7kx3&fp_sid=skillrepo