Zhipin APIzhipin.com ↗
Retrieve job listings, job details, and recommended jobs from BOSS直聘 (zhipin.com). Search by city, keyword, and page via 3 structured endpoints.
What is the Zhipin API?
This API exposes 3 endpoints for accessing job data from BOSS直聘 (zhipin.com), China's major direct-hire job platform. The search_jobs endpoint accepts keyword and city-code parameters to return paginated job listings, while get_job_detail returns the full job description and salary for a specific posting. A third endpoint, get_recommend_jobs, surfaces up to 81 trending and recommended jobs from the homepage in a single request.
// select an endpoint above
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace zhipin-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: Zhipin SDK — browse recommended jobs by city."""
from parse_apis.zhipin import Zhipin, City, NotFoundError
client = Zhipin()
# List recommended jobs for Beijing, capped at 5 items
for job in client.jobs.list(city=City.BEIJING, limit=5):
print(job.job_name, job.city_name, job.brand_name, job.job_experience, job.job_degree)
# Drill into one job from all cities
job = client.jobs.list(city=City.ALL, limit=1).first()
if job:
print(job.job_name, job.brand_industry, job.brand_stage_name, job.salary_desc)
print("Labels:", job.job_labels)
# Typed error handling around a list call
try:
for job in client.jobs.list(city=City.SHENZHEN, limit=3):
print(job.job_name, job.encrypt_job_id, job.security_id)
except NotFoundError as exc:
print(f"Error: {exc}")
print("exercised: jobs.list with City.BEIJING / City.ALL / City.SHENZHEN")
About the Zhipin API
Endpoints and Data Coverage
The search_jobs endpoint accepts a query string (e.g., IT技术总监), a city code (e.g., 101010100 for Beijing, 100010000 for all cities), and a page integer for pagination. It returns a jobList array of job objects and a hasMore boolean indicating whether additional pages exist. Note that salaryDesc values in search results are masked unless a valid __zp_stoken__ cookie value is supplied via the zp_stoken parameter.
Job Detail
The get_job_detail endpoint takes three identifiers from a search result — lid, security_id, and encrypt_job_id — and returns a jobInfo object containing jobName, salaryDesc, and postDescription, which is the full job posting text. These identifiers are returned as part of individual job objects in search_jobs results, so the typical workflow is to search first and then fetch details for specific listings.
Recommended Jobs
The get_recommend_jobs endpoint retrieves trending and editorially surfaced job listings. It accepts an optional city code and returns up to 81 jobs per request. Each job object includes fields such as encryptJobId, jobName, salaryDesc, cityName, jobExperience, jobDegree, jobLabels, brandName, and a totalCount integer for the result set. This endpoint is useful for monitoring which roles are currently highlighted on the platform without needing a search query.
The Zhipin API is a managed, monitored endpoint for zhipin.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when zhipin.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official zhipin.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Aggregate Chinese job market data by city using the
citycode parameter insearch_jobs - Monitor salary ranges for specific roles in China by fetching
salaryDescfromget_job_detail - Track trending job categories on BOSS直聘 using
get_recommend_jobswithjobLabelsandjobDegreefields - Build a job alert system by polling
search_jobswith a keyword and checkinghasMorefor new pages - Extract full job descriptions via
postDescriptioninget_job_detailfor NLP or skills analysis - Compare hiring activity across Beijing, Shanghai, and other cities using supported city codes
- Identify in-demand companies by aggregating
brandNamefields across recommended job listings
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does BOSS直聘 have an official developer API?+
Why is salary information missing from some search results?+
salaryDesc) in search_jobs results is hidden by the platform unless a valid __zp_stoken__ cookie value is provided via the zp_stoken parameter. When that value is absent or invalid, salary fields will be masked. The get_job_detail endpoint returns salaryDesc as part of the jobInfo object and tends to have more complete salary data.Does the API cover company profiles or recruiter information beyond what appears in job listings?+
brandName and basic company metadata attached to each job object, but there are no standalone company-profile or recruiter-profile endpoints. You can fork this API on Parse and revise it to add an endpoint targeting company or recruiter pages.How does pagination work in `search_jobs`?+
search_jobs endpoint accepts a page integer parameter. The response includes a hasMore boolean: when true, additional pages are available for the same query and city combination. Increment page and repeat the request to walk through results.Does the API support filtering jobs by industry, experience level, or degree requirement in search?+
search_jobs endpoint currently accepts query, city, and page as filters. Experience and degree fields (jobExperience, jobDegree) appear in the response objects but are not available as input filters for search. The get_recommend_jobs endpoint exposes these fields per job in its output. You can fork this API on Parse and revise it to add experience or degree filter parameters to the search endpoint.