ZipRecruiter Jobs Scraper avatar

ZipRecruiter Jobs Scraper

Pricing

from $0.90 / 1,000 results

Go to Apify Store
ZipRecruiter Jobs Scraper

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

Alwin

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

17 days ago

Last modified

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 structured salaryMin / salaryMax / interval / currency.
  • 🏠 Remote / Hybrid / On-site work arrangement and employment type (Full-time, Part-time, Contract…).
  • 🗓️ Posted date (UTC) and a daysOld filter 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 maxItems and automatic de-duplication.
  • 📤 Export to JSON, CSV, Excel, or pull via the Apify API.

What data you get

FieldDescription
title, company, companyUrl, companyLogoJob + employer
location, city, state, countryNormalized location
workArrangementRemote / Hybrid / On-site
employmentTypeFull-time / Part-time / Contract / …
salary, salaryMin, salaryMax, salaryInterval, salaryCurrencyPay, structured
salaryEstimatedtrue if ZipRecruiter estimated it, false if employer-provided
postedAtWhen the job was posted (UTC)
descriptionJob description snippet
url, jid, listingKeyLinks / IDs
searchQuery, searchLocationWhich of your searches returned this job

Input

FieldDescription
searchJob title / keyword — e.g. software engineer, registered nurse. Blank = every job in the location.
locationCity, state, or ZIP — e.g. New York, NY or 60601. Blank = nationwide (all of the US).
searchesSeveral keywords in one run. Replaces search when set.
locationsSeveral 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.
maxItemsHow many jobs to return (pages fetched automatically, ~20/page).
daysOldOnly jobs posted within this many days (optional).
radiusMilesSearch radius around the location (optional).
proxyConfigurationUS 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

  1. Enter a search keyword and optional location — or lists of searches and locations to cover many at once.
  2. Set maxItems (and optionally daysOld for fresh jobs only).
  3. Keep the proxy on US residential (the default).
  4. 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.