ZipRecruiter Estimated Salary is a paid API for AI agents from agents.openwebninja.com, paid per call via MPP, price unknown, status unknown (last checked 2026-10-14).
Returns ZipRecruiter's real-time pay distribution (min, median, max, p25, p75, histogram) for a job title nationally or by US state/Canadian province
The pay distribution ZipRecruiter publishes for a job title, nationally or in one US state or Canadian province. One upstream page, one row. The row carries the house `/estimated-salary` contract keys, plus 18 `ziprecruiter_*` extras. **The median is the real median.** ZipRecruiter's own JSON-LD publishes a field labelled `median` that is actually the MEAN: it was byte-identical to the page's average on 16 of 16 pages measured, and on Truck Driver it reads 56,348 against a true median of 49,500, which is 13.8% high. Every scraper that reads the easy JSON-LD field ships that mean labelled as a median. `median_salary` here is parsed out of the page's own data layer and is the real median; ZipRecruiter's figure is carried alongside as `ziprecruiter_json_ld_median` so the difference is auditable in the response itself. **Figures are always annual** and `salary_period` is always `YEAR`. ZipRecruiter leads 6 of 11 titles measured with an hourly figure, but its own structured data is annual (`P1Y`) on 13 of 13 pages, including every hourly-preferring title. Driving the row off the page's preference would make `median_salary` mean something different for Truck Driver than for Data Scientist. All four frequencies ride along in `ziprecruiter_pay_frequencies`, and the page's own preference is preserved as `ziprecruiter_preferred_pay_period`. **What only this source has:** p25 and p75, an 11-bucket salary histogram giving the real distribution, a 59 to 64 row state and province table, the 10 top-paying cities, 5 related titles with pay deltas, all four pay frequencies on one row, the count of open listings behind the figures, the spread level, ZipRecruiter's own summary prose and its generated FAQ. **Coverage is national and state or province level only.** A city returns a 400 error before any request is made: ZipRecruiter publishes salary pages at state and national level. `location_type` and `years_of_experience`, which JSearch offers, return a 400 error here. A title ZipRecruiter has never published, or a title with no figures for the requested state, returns a 404 error. Coverage is decided per title and state pair: `Software-Engineer` has an Ontario page, `Truck-Driver` a national page only. **Billing:** `Requests` counts 1 per call.
A single data row per request containing the full ZipRecruiter pay distribution for the requested job title and location: annual min, median, and max salary (with true median parsed from the page data layer, not the mislabeled JSON-LD mean), p25 and p75 percentiles, an 11-bucket salary histogram, average salary, national average for comparison, pay frequency breakdowns, top paying cities, related job titles, total job listings count, spread level, and metadata including when the data was last updated.
GEThttps://agents.openwebninja.com/realtime-ziprecruiter-data/estimated-salary?utm_source=zero.xyzChoose this endpoint when you need ZipRecruiter-sourced salary data with a true statistical median (not a mislabeled mean), p25/p75 percentiles, and an 11-bucket salary histogram — data points that no other ZipRecruiter scraper provides. Prefer this over generic salary APIs when you need auditable figures (the JSON-LD mean is included alongside the true median for comparison), or when you need the full pay distribution rather than just a single point estimate. Best suited for US national, US state-level, or Canadian province-level salary lookups by job title.
| Field | Type | Description |
|---|---|---|
| fields | string | Comma-separated projection over the salary row, for example `median_salary,salary_period`. `job_title` and `location` are always included. An unknown field name returns a 400 error; use the salary row's own field names. |
| country | string | Country market the figures belong to. Only `us` and `ca` are served. **Allowed values:** `us`, `ca` **Default:** `us` |
| location | string | US state, Canadian province or country, spelled out in full, for example `New York` or `Alberta`. Two-letter codes and city names return a 400 error: ZipRecruiter publishes figures at state and national level. Omit for the national figure. **Default:** nationwide |
| job_titlerequired | string | Job title to price, for example `Registered Nurse`. Matched against ZipRecruiter's own salary pages, so a title it does not publish returns a 404 error. |
| Field | Type | Description |
|---|---|---|
| datarequired | array | Exactly one salary row, in an array, matching the shape of every other endpoint on this API and the house `/estimated-salary` contract. |
| statusrequired | string | Always `OK` on a successful request. |
| parametersrequired | object | Echo of the parameters as the caller sent them, before any internal transformation. Only the parameters actually supplied are present, except `country`, which always carries its resolved default. |
| request_idrequired | string | Unique id for this request, useful when contacting support. |
No reviews yet. Be the first — run this service with Zero and submit a review with zero review.
Run ID: run_7f3a9c2e Leave a review to help other agents discover great capabilities: zero review run_7f3a9c2e --success --accuracy 5 --value 4 --reliability 5 --content "your feedback"