Zhaopin Scraper 智联招聘: China Jobs & Salary API
Pricing
from $1.12 / 1,000 jobs
Zhaopin Scraper 智联招聘: China Jobs & Salary API
Zhaopin API for public 智联招聘数据采集 across China. Export normalized job listings, salary data, skills, companies, locations, and hiring changes to Google Sheets, databases, and hiring-intelligence workflows. No login. $1.49 per 1,000 results.
Pricing
from $1.12 / 1,000 jobs
Rating
0.0
(0)
Developer
GetAScraper
Maintained by CommunityActor stats
0
Bookmarked
11
Total users
5
Monthly active users
10 hours ago
Last modified
Categories
Share
Turn live Zhaopin (智联招聘) listings into China jobs and salary data you can monitor. Export normalized job, salary, skill, company, and hiring-change data to CSV, Excel, Google Sheets, databases, dashboards, or alerts. No account on the source site is required.
| CHINA JOBS SUITE • Live job data from China's major hiring platforms | |||
|
51job Scraper Mainstream job board |
Lagou Scraper Technology jobs |
Liepin Scraper White-collar recruitment |
Zhaopin Scraper ➤ You are here |
|
Monitor hiring across China without maintaining a job scraper Collect current jobs across keywords and cities, then receive only new, updated, reappeared, or expired listings on later runs. |
|
🌆 Multi-city batches Run several keywords and cities together |
🔄 Change tracking See job changes without duplicate rows |
💴 Salary fields Compare monthly pay in normalized CNY |
📦 Clean exports Choose full or compact records |
🎯 Who uses this China jobs data?
- I am a job-data product manager adding current China coverage to a job board, search product, or data feed.
- I am a labor-market researcher comparing salaries, skills, education, and hiring demand across Chinese cities.
- I am a talent-intelligence analyst tracking which employers and industries are expanding their teams.
- I am a recruiter or HR-tech operator monitoring new roles without checking the same searches every day.
📊 China salary data and hiring intelligence
Use salaryMin, salaryMax, and currency to compare monthly CNY salary ranges across cities, job titles, and employers. Pair those fields with skills, education, experience, company, and posting-time data to build a China hiring dataset or monitor changes over time.
🚀 How to use it
|
STEP 1 Choose searches Enter one keyword and city, or add batch lists. |
STEP 2 Select the output Use full records, compact rows, or change monitoring. |
STEP 3 Run or schedule Download once or schedule a daily hiring feed. |
⚙️ Input
| Field | Type | Required | Description |
|---|---|---|---|
query | string | No | One job keyword for a standard search. The default is Python when no batch keywords or exact URLs are provided. |
queries | array of strings | No | Batch keywords. Each keyword is combined with every batch city. |
startUrls | array of URLs | No | Public Zhaopin /sou search URLs with jl and kw. Supported legacy filter parameters carry forward. |
city | enum | No | One city for a standard search. The default is Beijing. |
cities | array of strings | No | Batch city codes. Each city is combined with every batch keyword. |
education | enum | No | Minimum education filter, including college, bachelor, master, and doctor levels. |
experience | enum | No | Required work experience range, applied directly by Zhaopin's public search API. |
jobType | enum | No | Employment type filter for full-time, part-time, or internship roles. |
salary | string | No | Legacy salary-band code 1–7, or an explicit monthly CNY range such as 15001,25000. |
companyType | string | No | Company-type code for state-owned, private, or foreign employers. |
companySize | string | No | Company-size code used by the source search. |
maxItems | integer | No | Maximum jobs per keyword and city search. The source exposes up to 100. |
incrementalMode | boolean | No | Compare this run with the saved state for the same search scope. |
stateName | string | No | Isolates one monitor or client from another. Defaults to default. |
outputMode | enum | No | Choose full records or a smaller compact row for workflows. |
includeUnchanged | boolean | No | Include unchanged jobs during monitoring. Disabled by default to avoid duplicate charges. |
notificationWebhookUrl | string | No | Secret HTTPS endpoint for monitoring change summaries. Requires incremental mode. |
notificationEvents | array | No | Change types that trigger delivery: NEW, UPDATED, REAPPEARED, and/or EXPIRED. |
notifyOnNoChanges | boolean | No | Send a successful-run heartbeat when no actionable changes were detected. Disabled by default. |
proxyConfiguration | object | No | Datacenter proxy fallback. Direct API requests run first to minimize proxy cost. |
Reliable filters, lower run cost
| API-first collection. The Actor reads Zhaopin's public search API instead of a CAPTCHA-prone HTML page. It validates each response, retries an inconsistent page safely, and never writes partial rows or monitoring state after a failed search. |
- Education, employment type, salary, company type, and company size are matched only against fields returned by Zhaopin.
- Requests are capped at 20 per minute; proxy traffic is used only as a recovery fallback after a direct API request fails.
- Open the non-chargeable Run diagnostics output to inspect direct requests, proxy fallbacks, and bounded retries.
📦 Output example
This live sample shows the compact fields plus monitoring metadata:
{"jobId": "40862177714","jobUrl": "https://www.zhaopin.com/jobdetail/CCL1510062160J40862177714.htm","title": "电话销售(人工智能)","companyName": "企袖会人工智能科技(北京)有限公司","city": "北京","cityEn": "Beijing","district": "海淀","salaryMin": 6000,"salaryMax": 12000,"currency": "CNY","educationEn": "Junior College","experienceMin": 0,"sourcePostedAt": "2026-07-20T03:55:46.000Z","scrapedAt": "2026-07-22T16:42:50.623Z","changeType": "NEW","firstSeenAt": "2026-07-22T16:42:50.639Z","lastSeenAt": "2026-07-22T16:42:50.639Z"}
🧾 Selected output fields
| Field | Type | Description |
|---|---|---|
jobId | string | Stable Zhaopin job identifier used for deduplication and monitoring. |
jobUrl | string | Public job detail link. |
title | string | Position title. |
description | string | Full job description when available. |
benefits | array | Benefits and highlights supplied with the listing. |
skills | array | Skill tags attached to the job. |
city, cityEn, district | string | Source city, English city name, and district. |
address, latitude, longitude | mixed | Workplace address and coordinates when published. |
educationRaw, educationEn | string | Original and normalized education requirements. |
experienceRaw, experienceMin, experienceMax | mixed | Original and normalized experience requirements. |
salaryRaw, salaryMin, salaryMax | mixed | Original salary text and normalized monthly CNY range. |
companyName, companyId, companySize | mixed | Employer identity and size. |
companyIndustry, companyFinancing | string | Employer industry and financing stage when available. |
recruiterName, recruiterTitle | string | Public business contact name and role when supplied with the posting. |
employmentType, jobCategory, recruitCount | mixed | Employment terms, category, and advertised opening count. |
sourcePostedAt | string | Source publication time in ISO 8601 format. |
scrapedAt | string | Time the Actor collected the row. |
changeType | string | NEW, UPDATED, REAPPEARED, UNCHANGED, or EXPIRED. |
firstSeenAt, lastSeenAt, expiredAt | string | Monitoring history for the listing. |
🔄 How job monitoring works
- The first run marks every current job as
NEW. - Later runs compare stable job IDs and meaningful field changes.
- Unchanged jobs stay out of the dataset unless
includeUnchangedis enabled. - A missing job must be absent from two complete identical scans before it becomes
EXPIRED. Expiry is skipped whenmaxItemsdoes not cover the search window. - Failed or partial crawls never advance missing-job state.
- A job that returns after expiry is marked
REAPPEARED.
Use a different stateName for each client, schedule, or independent monitoring project.
Webhook change summaries
Set notificationWebhookUrl to your secret HTTPS automation endpoint to receive one concise JSON summary after a complete, successful monitoring run. Choose the triggering changes with notificationEvents. Enable notifyOnNoChanges only when your workflow needs a heartbeat confirming that the scheduled scan completed without actionable changes.
The versioned payload includes the run and monitoring state, change counts, dataset URL, and at most 10 lightweight job samples. Delivery uses a timeout and bounded retries. Redirects and local or private network destinations are blocked. A webhook error never changes monitoring state, removes data, or turns a successful scrape into a failed run.
Successful runs with no changes
When a monitoring run finds only unchanged jobs and includeUnchanged is off, the dataset is intentionally empty. This is a successful zero-change run, not a scrape failure, and it creates no result charge. Open the Output tab's Run summary link (the run-summary record in the default Key-Value Store) to see currentJobs, datasetRows, zeroChangeRun, and the counts for every change type.
💰 Pricing
Pricing is pay per result. Empty runs, the Key-Value Store run summary, and monitoring runs with no changed rows produce no result charges. There is no subscription. The Store price remains $1.49 per 1,000 saved jobs.
The API-first path and 256 MB default memory reduce compute and proxy cost without changing this price.
⭐ Enjoying Zhaopin Scraper?
|
⭐ ⭐ ⭐ ⭐ ⭐ Building a useful China hiring feed without scraper maintenance? A 5-star rating takes 10 seconds and helps job-data teams and researchers find it. Your feedback also guides the next release. |
| ★ Rate this Actor on Apify |
💡 Tips
- Combine related keywords with several cities to create one larger dataset.
- Keep a stable
stateNamewhen scheduling incremental runs. - Connect a secret HTTPS webhook when a downstream workflow needs immediate change summaries or successful-run heartbeats.
- Use compact output for alerts and databases. Use full output for research and enrichment.
- Build longitudinal history from the first scheduled run. This Actor does not claim historical postings that the source no longer publishes.
❓ FAQ
智联招聘爬虫可以每天监控岗位变化吗?
Yes. Enable incremental mode, keep the same search and state name, then schedule the Actor daily or weekly.
智联招聘数据采集 API 可以导出薪资数据吗?
Yes. When Zhaopin publishes a salary range, the Actor keeps the original salary text and returns normalized monthly CNY minimum and maximum fields for analysis.
Does the Zhaopin API require a source-site login?
No. The Actor collects publicly available job postings without requiring your personal source-site account.
Can I collect several Chinese cities in one run?
Yes. Add batch keywords and city codes. The Actor runs every keyword and city combination, then removes duplicate job IDs.
Can a blocked or incomplete run expire my saved jobs?
No. A run with failed pages stops before updating monitoring state or saving a partial dataset.
Why did a successful scheduled run return an empty dataset?
With incremental mode enabled and unchanged rows disabled, an empty dataset means no job changed. Check run-summary for the successful scan totals and change counts.
🛡️ Responsible use and support
This Actor retrieves public job-posting data. Follow applicable laws and the source site's terms. Do not use the output to collect private candidate or resume information.
Open an issue from the Actor page for bug reports, field questions, or feature requests.
🔗 Other actors
- 51job Scraper ↗ - collect mainstream China job listings with bilingual fields.
- Lagou Tech Jobs Scraper ↗ - collect technology and startup roles from Lagou.
- Liepin China Jobs Scraper ↗ - collect professional and white-collar roles from Liepin.
- Japan Dev Scraper ↗ - collect Japan technology roles with salary and visa fields.
- CareerCross Scraper ↗ - collect bilingual jobs in Japan with language requirements.