ZipRecruiter Jobs Scraper
Pricing
from $0.90 / 1,000 results
ZipRecruiter Jobs Scraper
Scrape ZipRecruiter jobs by keyword & location, or many searches and cities in one run: title, company, salary (employer + estimated), remote/on-site, job type, posted date, description & URL. Nationwide search, de-duplicated, reliable through Cloudflare. JSON, CSV, Excel, API.
Pricing
from $0.90 / 1,000 results
Rating
0.0
(0)
Developer
Alwin
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
17 days ago
Last modified
Categories
Share
Scrape ZipRecruiter job listings at scale — by keyword and location — and export clean, structured data: job title, company, salary, location, remote status, employment type, posted date, description, and the job URL.
Most ZipRecruiter scrapers break on Cloudflare or return thin data. This ZipRecruiter scraper is built to be reliable (real browser + rotating US residential sessions with automatic retries) and complete — it reads ZipRecruiter's own structured job data, so you get salary (including ZipRecruiter's estimated pay), posted date, and work arrangement that DOM scrapers miss.
Use it as a ZipRecruiter API for recruiting, lead generation, job boards, salary benchmarking, and labor-market research.
Why this ZipRecruiter scraper
- 🔓 Reliable through Cloudflare — headful Chromium + US residential proxies, with per-page session reuse and retries. No random empty runs.
- 💰 Salary on ~99% of jobs (199 of 200 in a measured 10-search run) — employer-provided and ZipRecruiter-estimated, flagged with
salaryEstimated, plus structuredsalaryMin/salaryMax/ interval / currency. - 🏠 Remote / Hybrid / On-site work arrangement and employment type (Full-time, Part-time, Contract…).
- 🗓️ Posted date (UTC) and a
daysOldfilter to get only fresh jobs. - 🔗 Canonical job URL and company URL + logo for every listing.
- 🗺️ Many searches in one run — give lists of keywords and locations; every combination is searched, results are de-duplicated across them, and each row records which search found it.
- 🧹 Auto-paging to your
maxItemsand automatic de-duplication. - 📤 Export to JSON, CSV, Excel, or pull via the Apify API.
What data you get
| Field | Description |
|---|---|
title, company, companyUrl, companyLogo | Job + employer |
location, city, state, country | Normalized location |
workArrangement | Remote / Hybrid / On-site |
employmentType | Full-time / Part-time / Contract / … |
salary, salaryMin, salaryMax, salaryInterval, salaryCurrency | Pay, structured |
salaryEstimated | true if ZipRecruiter estimated it, false if employer-provided |
postedAt | When the job was posted (UTC) |
description | Job description snippet |
url, jid, listingKey | Links / IDs |
searchQuery, searchLocation | Which of your searches returned this job |
Input
| Field | Description |
|---|---|
search | Job title / keyword — e.g. software engineer, registered nurse. Blank = every job in the location. |
location | City, state, or ZIP — e.g. New York, NY or 60601. Blank = nationwide (all of the US). |
searches | Several keywords in one run. Replaces search when set. |
locations | Several locations in one run. Replaces location when set. Every search × location pair is run, visited in turn so a run that stops at maxItems covers all of them. |
maxItems | How many jobs to return (pages fetched automatically, ~20/page). |
daysOld | Only jobs posted within this many days (optional). |
radiusMiles | Search radius around the location (optional). |
proxyConfiguration | US residential required — ZipRecruiter blocks datacenter IPs and geo-redirects non-US ones. |
Example input
{"searches": ["registered nurse", "travel nurse"],"locations": ["Chicago, IL", "Denver, CO", "Houston, TX"],"maxItems": 300,"daysOld": 7}
That is six searches (2 keywords x 3 cities) in one run, de-duplicated, with each row tagged by the search that found it.
Example output
{"title": "Senior Software Engineer","company": "Capital One","location": "Manhattan, NY","workArrangement": "Remote optional","employmentType": "Full-time","salary": "$75,700 - $137,100/yr","salaryEstimated": true,"postedAt": "2026-08-28T20:43:49Z","description": "Staff AI Engineer role …","url": "https://www.ziprecruiter.com/c/Capital-One/Job/…?jid=16b95c937eed52e1"}
How to use
- Enter a search keyword and optional location — or lists of searches and locations to cover many at once.
- Set maxItems (and optionally daysOld for fresh jobs only).
- Keep the proxy on US residential (the default).
- Run it, then download the dataset as JSON/CSV/Excel — or call it from the API.
Use cases
- Recruiting & sourcing — pull live openings by role and city.
- Job boards & aggregators — feed fresh ZipRecruiter listings into your site.
- Salary benchmarking — structured pay ranges across roles and locations.
- Lead generation — companies that are actively hiring.
- Labor-market research — track demand, remote share, and pay over time.
FAQ
Does it get job URLs and salaries? Yes — a canonical apply URL for every job, and salary on every job (employer-provided or ZipRecruiter-estimated, flagged so you can tell which).
Why is a residential proxy required? ZipRecruiter uses Cloudflare and blocks datacenter IPs, and it geo-redirects non-US IPs to localized sites. The scraper uses US residential proxies so you always hit the US site and get results.
Can I scrape only recent jobs? Yes — set daysOld (e.g. 1 for the last 24 hours, 7 for the last week).
How many jobs can I get? Set maxItems to anything; the scraper pages automatically until it reaches it or runs out of results for that search.
What formats can I export? JSON, CSV, Excel, or pull straight from the Apify API/integrations.