# ChinaHR Jobs Scraper 中华英才网: China Hiring Data (`getascraper/chinahr-jobs-scraper`) Actor

Extract current public ChinaHR job listings with salary, location, experience, education, employer, and industry data. 中华英才网招聘数据 for job-data products, labor research, and hiring intelligence.

- **URL**: https://apify.com/getascraper/chinahr-jobs-scraper.md
- **Developed by:** [GetAScraper](https://apify.com/getascraper) (community)
- **Categories:** Jobs, Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.12 / 1,000 job postings

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 web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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

## 💼 ChinaHR Jobs Scraper 中华英才网: China Hiring Data

<table width="100%" style="table-layout:fixed;border-collapse:collapse">
<tr>
<td colspan="4" style="padding:14px 18px;background:#F1F5FF;border-top:3px solid #2457A7;border-left:1px solid #D6D3D1;border-right:1px solid #D6D3D1;border-radius:8px 8px 0 0">
<span style="font-size:16px;font-weight:700;color:#1C1917">Turn ChinaHR listings into a clean, spreadsheet-ready hiring dataset.</span> <span style="font-size:15px;color:#57534E">Collect public job titles, normalized monthly salary bounds, locations, requirements, and employer context from ChinaHR without manually copying individual listings.</span>
</td>
</tr>
<tr>
<td colspan="4" style="padding:10px 14px;background:#2457A7;border-left:1px solid #D6D3D1;border-right:1px solid #D6D3D1">
<span style="color:#FFFFFF;font-size:14px;font-weight:700;letter-spacing:0.5px">China jobs source comparison</span>
<span style="color:#FBD5D5;font-size:13px">&nbsp;&nbsp;&bull;&nbsp;&nbsp;Zhaopin, 51Job, Liepin, and ChinaHR listings side by side</span>
</td>
</tr>
<tr>
<td style="padding:10px 12px;border-left:1px solid #D6D3D1;border-bottom:1px solid #D6D3D1;vertical-align:top;width:25%;background:#FFFFFF;border-radius:0 0 0 8px">
<span style="overflow-wrap:break-word;word-break:break-word"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/jNDbFabbVxMhnQNb4-actor-y4gjuGAC4xGshlm6m-lb3TrznfpI-CompressJPEG.Online_img%28512x512%29_%288%29.jpg" width="20" height="20" style="vertical-align:middle;border-radius:4px"> &nbsp;<a href="https://apify.com/getascraper/zhaopin-jobs-scraper" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">Zhaopin</a></span><br>
<span style="color:#57534E;font-size:11px">Jobs, salary &amp; hiring-change monitoring</span>
</td>
<td style="padding:10px 12px;border-left:1px solid #D6D3D1;border-bottom:1px solid #D6D3D1;vertical-align:top;width:25%;background:#FFFFFF">
<span style="overflow-wrap:break-word;word-break:break-word"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/jNDbFabbVxMhnQNb4-actor-e2mxWFMIH10tIVN0f-yhHOLwlfsM-CompressJPEG.Online_img%28512x512%29_%289%29.jpg" width="20" height="20" style="vertical-align:middle;border-radius:4px"> &nbsp;<a href="https://apify.com/getascraper/51job-scraper" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">51job</a></span><br>
<span style="color:#57534E;font-size:11px">Jobs, salary &amp; employer context</span>
</td>
<td style="padding:10px 12px;border-left:1px solid #D6D3D1;border-bottom:1px solid #D6D3D1;vertical-align:top;width:25%;background:#FFFFFF">
<span style="overflow-wrap:break-word;word-break:break-word"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/jNDbFabbVxMhnQNb4-actor-BuC7iEzhhplgO8ZX4-l5qn04Im5u-CompressJPEG.Online_img%28512x512%29_%2811%29.jpg" width="20" height="20" style="vertical-align:middle;border-radius:4px"> &nbsp;<a href="https://apify.com/getascraper/liepin-scraper" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">Liepin</a></span><br>
<span style="color:#57534E;font-size:11px">White-collar roles &amp; salary data</span>
</td>
<td style="padding:10px 12px;border-left:1px solid #D6D3D1;border-right:1px solid #D6D3D1;border-bottom:1px solid #D6D3D1;vertical-align:top;width:25%;background:#F1F5FF;border-radius:0 0 8px 0">
<span style="overflow-wrap:break-word;word-break:break-word"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/jNDbFabbVxMhnQNb4-actor-EhSPkTwTCROda2Czz-DG8Q4VPIkU-1631301125523.jpeg" width="20" height="20" style="vertical-align:middle;border-radius:4px"> &nbsp;<a href="https://apify.com/getascraper/chinahr-jobs-scraper" style="color:#2457A7;text-decoration:none;font-weight:700;font-size:13px">ChinaHR</a></span><br>
<span style="color:#2457A7;font-size:11px;font-weight:700">&#10148; You are here</span>
</td>
</tr>
</table>

<table width="100%">
<tr>
<td style="padding:24px 28px;background:#F1F5FF;border:1px solid #BED0F5;border-top:4px solid #2457A7;border-radius:12px">
<span style="font-size:23px;font-weight:800;color:#1C1917;line-height:1.3">ChinaHR listings turned into a spreadsheet-ready hiring dataset</span><br>
<span style="font-size:15px;color:#57534E;line-height:1.6">Collect public ChinaHR (中华英才网) job titles, normalized monthly CNY salary bounds, locations, requirements, and employer context without manually copying individual listings.</span>
</td>
</tr>
</table>

<table width="100%">
<tr>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #BED0F5;border-radius:10px 0 0 10px;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#2457A7">💰 CNY salary bounds</span><br>
<span style="font-size:12px;color:#57534E">Monthly bounds for supported Nk to Nk元/月 salary formats.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #BED0F5;border-left:none;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#2457A7">🎓 Requirement fields</span><br>
<span style="font-size:12px;color:#57534E">Education and experience filters matched to published listings.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #BED0F5;border-left:none;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#2457A7">🏢 Employer context</span><br>
<span style="font-size:12px;color:#57534E">Industry, company size, and logo when ChinaHR publishes them.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #BED0F5;border-left:none;border-radius:0 10px 10px 0;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#2457A7">🗂️ Multiple data views</span><br>
<span style="font-size:12px;color:#57534E">Browse jobs, employer context, or role requirements separately.</span>
</td>
</tr>
</table>

ChinaHR (中华英才网) is a public Chinese jobs source. This Actor turns the public listings you choose into a spreadsheet-ready hiring dataset. It is for job-data teams, labor researchers, and market-intelligence workflows. It does not collect applicant profiles or private contact information.

### 🎯 Who uses this China jobs data?

- **Job-data teams** add current ChinaHR listings to a broader hiring product.
- **Labor-market researchers** compare salary text, locations, education, and experience requirements.
- **Talent-intelligence teams** see which employers are advertising roles in their monitored sources.
- **Market researchers** use job activity as one input for employer and industry research.

### 🚀 How to use it

<table width="100%">
<tr>
<td style="padding:16px 14px;width:33%;background:#F1F5FF;border:1px solid #BED0F5;border-radius:10px 0 0 10px;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#2457A7;letter-spacing:1px">STEP 1</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Choose listing sources</span><br>
<span style="font-size:12px;color:#57534E">Use the prefilled ChinaHR jobs page or paste public listing pages.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#F1F5FF;border:1px solid #BED0F5;border-left:none;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#2457A7;letter-spacing:1px">STEP 2</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Set a useful cap</span><br>
<span style="font-size:12px;color:#57534E">Start with 10 jobs, then raise the global result cap when needed.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#F1F5FF;border:1px solid #BED0F5;border-left:none;border-radius:0 10px 10px 0;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#2457A7;letter-spacing:1px">STEP 3</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Use the right data view</span><br>
<span style="font-size:12px;color:#57534E">Open Jobs, Employer context, or Role requirements in the dataset.</span>
</td>
</tr>
</table>

### ⚙️ Input

| Field                       | Type          | Required | Description                                                                                                                                                                                    |
| --------------------------- | ------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `startUrls`                 | array of URLs | No       | Public ChinaHR listing pages to collect. The current ChinaHR jobs page is used by default.                                                                                                     |
| `maxItems`                  | integer       | No       | Caps distinct jobs saved across all listing URLs. ChinaHR result pages are requested sequentially until this global cap is reached or the search is exhausted. The default returns 10 records. |
| `keyword`                   | string        | No       | ChinaHR public job keyword search.                                                                                                                                                             |
| `jobType`                   | select        | No       | Full-time or internship, using ChinaHR's public job-type values.                                                                                                                               |
| `location`                  | select        | No       | A ChinaHR public location-selector city, including Beijing, Shanghai, Guangzhou, Shenzhen, Hangzhou, Chengdu, and other major cities.                                                          |
| `salaryMinK` / `salaryMaxK` | number        | No       | ChinaHR custom monthly salary bounds, in thousands of CNY.                                                                                                                                     |
| `education`                 | select        | No       | ChinaHR's public education filters: associate, bachelor's, master's, or doctorate and above.                                                                                                   |
| `experience`                | select        | No       | ChinaHR's public current-student, graduate, under-one-year, or 1–3-years experience filters.                                                                                                   |
| `industry`                  | select        | No       | ChinaHR's published employer-industry choices.                                                                                                                                                 |
| `companySize`               | select        | No       | ChinaHR's published employer-size choices.                                                                                                                                                     |
| `sort`                      | select        | No       | Latest published or highest salary. Distance sorting is intentionally not exposed because it requires device coordinates.                                                                      |

All guided filters map directly to the public ChinaHR jobs frontend and its public search request. Supplied `startUrls` remain supported: each is first verified as a public ChinaHR listing page, then used as the source provenance for its sequential search results.

### 📊 Data table

| Field                     | Type   | Description                                                                                                                                    |
| ------------------------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------- |
| `listingId`               | string | Stable listing identifier published by ChinaHR.                                                                                                |
| `title`                   | string | Job title.                                                                                                                                     |
| `listingUrl`              | string | Public ChinaHR job-detail page.                                                                                                                |
| `salary`                  | string | Salary text published with the job.                                                                                                            |
| `salaryMin` / `salaryMax` | number | Monthly CNY bounds when ChinaHR publishes a supported `Nk–Nk元/月` salary format. Missing bounds are omitted, including for negotiable salary. |
| `salaryPeriod`            | string | `month` when salary bounds were normalized.                                                                                                    |
| `employmentType`          | string | Employment type when published.                                                                                                                |
| `education`               | string | Education requirement when published.                                                                                                          |
| `experience`              | string | Experience requirement when published.                                                                                                         |
| `openings`                | number | Number of openings when ChinaHR publishes an exact `招N人` value. Indeterminate counts are omitted.                                            |
| `location`                | string | Work location.                                                                                                                                 |
| `companyId`               | string | Source employer identifier when published.                                                                                                     |
| `companyName`             | string | Employer name.                                                                                                                                 |
| `industry`                | string | Employer industry when published.                                                                                                              |
| `companySize`             | string | Employer size when published.                                                                                                                  |
| `companyLogoUrl`          | string | Public employer logo when published.                                                                                                           |
| `sourceUrl`               | string | Listing page used for collection.                                                                                                              |
| `sourceApiUrl`            | string | The public ChinaHR search endpoint used for the listing page.                                                                                  |
| `sourcePage`              | number | ChinaHR result-page number that supplied this record.                                                                                          |
| `scrapedAt`               | string | Time the record was collected.                                                                                                                 |

### 🗂️ Choose the right data view

- **💼 ChinaHR jobs**: use this as the default view for current vacancies.
- **🏢 Employer context**: use this for company and industry research.
- **🎓 Role requirements**: use this to compare education, experience, openings, and salary text.

The dataset views remain the place to browse and download job records. The Output panel provides a direct dataset link and the non-chargeable run summary. It does not repeat individual database views.

### 💰 Pricing

Pricing is pay per result. Only job rows saved to the dataset are chargeable. Valid empty runs and the `OUTPUT` run summary do not create result charges. There is no subscription.

### ⭐ Enjoying ChinaHR Jobs Scraper?

<table width="100%">
<tr>
<td style="padding:20px 24px 14px;background:#F1F5FF;border:1px solid #BED0F5;border-left:5px solid #2457A7;border-radius:10px 10px 0 0">
<span style="font-size:20px;letter-spacing:4px">⭐ ⭐ ⭐ ⭐ ⭐</span><br>
<span style="font-size:17px;font-weight:800;color:#1C1917">Found a ChinaHR listing dataset that fits your research or hiring workflow?</span><br>
<span style="font-size:14px;color:#57534E">A rating helps other job-data teams find it. It also tells us which public hiring fields matter most to your work.</span>
</td>
</tr>
<tr>
<td style="padding:0;background:#2457A7;border:1px solid #BED0F5;border-top:none;border-radius:0 0 10px 10px;text-align:center">
<a href="https://apify.com/getascraper/chinahr-jobs-scraper/reviews" style="display:block;padding:13px 16px;color:#FFFFFF;text-decoration:none;font-weight:800;font-size:15px;letter-spacing:0.3px">★&nbsp;&nbsp;Rate this Actor on Apify</a>
</td>
</tr>
</table>

### ❓ FAQ

##### Is this an official ChinaHR API?

No. This is an independent data tool for public ChinaHR listing pages. It is not affiliated with ChinaHR.

##### 中华英才网招聘数据可以导出吗？

Yes. Each run saves genuine public listing fields in the Apify dataset, which you can download in the formats available in the Console.

##### Does it collect private candidate data?

No. The Actor only collects public job and employer fields visible on supplied listing pages.

##### Why can a public listing URL return zero rows?

The source may have no current jobs, the selected filters may have no matches, or the page may have changed. The non-chargeable run summary distinguishes a verified empty result from blocked, malformed, and partial source responses.

##### Are all salary and openings fields normalized?

Only source formats that can be parsed without guessing are normalized. The actor preserves ChinaHR's original salary text, adds monthly CNY bounds only for supported ranges, and adds `openings` only for exact numeric `招N人` values. Missing or indeterminate details are omitted.

### 🔗 Other actors

- [Zhaopin Scraper 智联招聘: China Jobs & Salary API](https://apify.com/getascraper/zhaopin-jobs-scraper) ↗ - Monitor China job listings, salaries, skills, and hiring changes.
- [51job China Jobs Scraper](https://apify.com/getascraper/51job-scraper) ↗ - Collect public 51job listings with job and employer details.
- [Lagou Tech Jobs Scraper](https://apify.com/getascraper/lagou-tech-jobs-scraper) ↗ - Find public China technology roles and hiring signals.
- [Liepin Scraper](https://apify.com/getascraper/liepin-scraper) ↗ - Collect public professional job listings in China.

# Actor input Schema

## `startUrls` (type: `array`):

Paste one or more public ChinaHR listing pages. Each URL is collected once. The current jobs page is used when this is left empty.

## `keyword` (type: `string`):

ChinaHR's public job keyword search. Leave empty to use no keyword restriction.

## `jobType` (type: `string`):

Restrict to one public ChinaHR job type.

## `location` (type: `string`):

A city verified in ChinaHR's public location selector.

## `salaryMinK` (type: `number`):

ChinaHR's public custom salary lower bound in thousands of CNY per month.

## `salaryMaxK` (type: `number`):

ChinaHR's public custom salary upper bound in thousands of CNY per month. It must be at least the minimum when both are set.

## `education` (type: `string`):

ChinaHR's public education requirement filter.

## `experience` (type: `string`):

ChinaHR's public work-experience filter.

## `industry` (type: `string`):

ChinaHR's public employer-industry filter.

## `companySize` (type: `string`):

ChinaHR's public employer-size filter.

## `sort` (type: `string`):

ChinaHR's public sort options that do not require your device location.

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

Maximum distinct job listings to save across all supplied listing URLs. The Actor follows ChinaHR public search pages sequentially until this global cap is reached or the source is exhausted.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.chinahr.com/job"
    }
  ],
  "maxItems": 10
}
```

# Actor output Schema

## `results` (type: `string`):

No description

## `runSummary` (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 = {
    "startUrls": [
        {
            "url": "https://www.chinahr.com/job"
        }
    ],
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("getascraper/chinahr-jobs-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 = {
    "startUrls": [{ "url": "https://www.chinahr.com/job" }],
    "maxItems": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("getascraper/chinahr-jobs-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 '{
  "startUrls": [
    {
      "url": "https://www.chinahr.com/job"
    }
  ],
  "maxItems": 10
}' |
apify call getascraper/chinahr-jobs-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,getascraper/chinahr-jobs-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/EhSPkTwTCROda2Czz/builds/05Yns7v7zEQWBPG5s/openapi.json
