# Real-Time ZipRecruiter Data - ZipRecruiter Job Search, Job Details & Salary Estimates > Fast and Reliable Job Search, Full Job Details, Salary Estimates, Job Descriptions, Salaries, Benefits, Employer Ratings, Pay Distributions, and More on ZipRecruiter in Real-Time (US and Canada). ## Overview Real-Time ZipRecruiter Data is a fast and reliable API for job postings and salary data from ZipRecruiter's public job and salary pages in real-time. It returns structured JSON via REST, and covers the United States and Canada - the only two markets ZipRecruiter operates. Who is this API for: developers building job boards and aggregators, recruiting and talent-intelligence tools, hiring-trend analytics, and compensation research. What it returns: keyword job search with the filters ZipRecruiter honors server-side, including scoping every result to one company; full job details for up to 20 job ids per request - description in both text and HTML, key responsibilities, employer FAQ, benefits, company size, headquarters and industries; and the pay distribution for a job title, nationally or in one US state or Canadian province, with the real median plus the 10th, 25th, 75th and 90th percentiles per year, month, week and hour. Need help integrating? Contact support@openwebninja.com. For high volume / large scale plans, please contact support@openwebninja.com. ## Endpoints ### GET /search - Search Jobs Search ZipRecruiter job postings by keyword, with the filters ZipRecruiter honors server-side: `location` with a kilometre `radius`, `date_posted`, `employment_types`, `experience_level`, `salary_min` / `salary_max`, `remote_jobs_only`, `zipapply_only` and `company_id`. Parameters: - **query** (string, required, e.g. `software engineer`): Free-text job search query, for example `software engineer` or `registered nurse`. Exactly one `query` is accepted; a second one returns a 400 error. - location (string): Free-text location, for example `New York, NY` or `Toronto, ON`. This is what drives geography on ZipRecruiter. Omit it to search the whole country. - page (integer, default: `1`): 1-based page of results to start from. ZipRecruiter returns 20 jobs per page. The real ceiling is `ceil(total_results / 20)`, and the largest result set observed was 946 jobs. **Allowed values:** `1-50` **Default:** `1` - num_pages (integer, default: `1`): Number of consecutive pages to fetch starting at `page`. Each page is 20 jobs. Duplicate listings ZipRecruiter repeats across pages are removed, so a page may yield fewer than 20 new jobs. **Allowed values:** `1-20` **Default:** `1` - country (string, default: `us`, allowed: us | ca): Country market to search. Only `us` and `ca` are served. **Allowed values:** `us`, `ca` **Default:** `us` - date_posted (string, default: `all`, allowed: all | today | 3days | week | month): Only return jobs posted within this window. Applied by ZipRecruiter server-side, and each window maps exactly onto 1, 3, 7 and 30 days. **Allowed values:** `all`, `today`, `3days`, `week`, `month` **Default:** `all` - employment_types (string): Comma-separated employment types to include, for example `FULLTIME,CONTRACTOR`. Values are OR-ed: a job matching any of them is returned. Applied by ZipRecruiter. **Allowed values:** `FULLTIME`, `PARTTIME`, `CONTRACTOR`, `TEMPORARY`, `CONTRACT_TO_HIRE`, `AS_NEEDED`, `OTHER` - experience_level (string, allowed: no_experience | junior | mid | senior): Only return jobs at this experience level. A single value; a comma-separated list is rejected, because ZipRecruiter's behaviour for multiple levels is unverified. Applied by ZipRecruiter. **Allowed values:** `no_experience`, `junior`, `mid`, `senior` - remote_jobs_only (boolean, default: `false`): Set to `true` to return only remote jobs. Applied by ZipRecruiter server-side, so recall is ZipRecruiter's own remote classification. **Default:** `false` - salary_min (integer): Minimum ANNUAL salary in whole dollars, for example `80000`. When set, ZipRecruiter limits results to jobs that state a salary. - salary_max (integer): Maximum ANNUAL salary in whole dollars, for example `150000`. Must be greater than or equal to `salary_min`. - radius (integer): Search radius around `location`, in KILOMETRES, converted to the miles ZipRecruiter expects. Any positive integer is accepted. Requires `location`. ZipRecruiter's own default is 25 miles. - zipapply_only (boolean, default: `false`): Set to `true` to return only jobs that support ZipApply, ZipRecruiter's one-click apply. Applied by ZipRecruiter. **Default:** `false` - company_id (string): Return only jobs from one company, identified by the `ziprecruiter_company_id` carried on a previous `/search` result. Send `location` too: ZipRecruiter applies this filter far more reliably with one. Every card is verified, and an unknown id returns a 404 error. - include_details (boolean, default: `false`): Set to `true` to fetch each job's full description and detail-only fields. Costs one extra request per job, so it is much slower and is billed accordingly. Caps `num_pages` at 5. **Default:** `false` - fields (string): Comma-separated projection over the job object, for example `job_title,employer_name,job_apply_link`. `job_id` and `job_title` are always included. An unknown field name returns a 400 error. Full URL: `https://api.openwebninja.com/realtime-ziprecruiter-data/search` ### GET /job-details - Job Details Full details for up to 20 ZipRecruiter job postings in one call, fetched concurrently. Parameters: - **job_id** (string, required, e.g. `emlwcmVjcnVpdGVyOjkzNjIxNWNiNTAzZDhiZTI`): Comma-separated job ids from a `/search` response, up to 20 per request. The raw `job_uid` of a previous response is also accepted. - country (string, default: `us`, allowed: us | ca): Country market the posting belongs to. Only `us` and `ca` are served. **Allowed values:** `us`, `ca` **Default:** `us` - fields (string): Comma-separated projection over the job object, for example `job_title,employer_name,job_apply_link`. `job_id` and `job_title` are always included. An unknown field name returns a 400 error. Full URL: `https://api.openwebninja.com/realtime-ziprecruiter-data/job-details` ### GET /estimated-salary - Estimated Salary The pay distribution ZipRecruiter publishes for a job title, nationally or in one US state or Canadian province. Parameters: - **job_title** (string, required, e.g. `Registered Nurse`): 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. - 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 - country (string, default: `us`, allowed: us | ca): Country market the figures belong to. Only `us` and `ca` are served. **Allowed values:** `us`, `ca` **Default:** `us` - 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. Full URL: `https://api.openwebninja.com/realtime-ziprecruiter-data/estimated-salary` ## Base URL and Authentication - Base URL: `https://api.openwebninja.com/realtime-ziprecruiter-data` - Auth: API key in the `x-api-key` header. Get a key by subscribing (free tier available) at https://app.openwebninja.com/api/realtime-ziprecruiter-data ## Topics ziprecruiter api, ziprecruiter jobs api, ziprecruiter job search api, job postings api, job details api, salary estimate api, pay distribution api, recruiting api, talent intelligence api, jobs data api ## Links - API page: https://www.openwebninja.com/api/real-time-ziprecruiter-data - Get an API key / subscribe: https://app.openwebninja.com/api/realtime-ziprecruiter-data - Pricing & plans: https://app.openwebninja.com/api/realtime-ziprecruiter-data/pricing - Website: https://www.openwebninja.com - OpenAPI spec: https://openwebninja.s3.us-east-1.amazonaws.com/portal/openapi/realtime_ziprecruiter_data.yaml - Support: support@openwebninja.com _Last updated: 2026-09-23_