ZipRecruiter Jobs Scraper
Pricing
from $2.50 / 1,000 results
Pricing
from $2.50 / 1,000 results
Rating
0.0
(0)
Developer
String
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
ZipRecruiter Jobs Scraper — advertised salary, company, location
The ZipRecruiter Jobs Scraper collects job listings from ZipRecruiter search results. Give it search terms and a location, and it returns each listing with the advertised pay as numbers, the pay interval and currency, the employment type, a split city and state, ZipRecruiter's own posted timestamp and the apply URL.
To scrape ZipRecruiter jobs, put one or more job titles or keywords in queries and a location
such as "Austin, TX" or a ZIP code. No ZipRecruiter account, login or cookies are used; this Actor
reads what a logged-out visitor sees. Around 20 jobs per search.
What it returns
| Field | Type | Notes |
|---|---|---|
jobId | string | ZipRecruiter's own listing key — stable, use it to de-duplicate |
title | string | |
company | string | |
salaryMin, salaryMax | number | The advertised pay, e.g. 85000 and 110000. null when the posting advertises none — see below |
salaryPeriod | string | The interval the pay is quoted over, e.g. "year", "hour" |
currency | string | ISO code, e.g. "USD" |
employmentType | string | e.g. "full_time" |
location | string | As ZipRecruiter displays it, e.g. "Melbourne, FL US" |
city, state | string | Split out, so you can group without parsing |
postedAt | string | ISO 8601 timestamp from ZipRecruiter's own posted date — a real timestamp, not a day count |
jobUrl | string | Direct link to the ZipRecruiter posting |
query, sourceUrl, collectedAt | string | Provenance for every row |
Input
{ "queries": ["software engineer", "registered nurse"], "location": "Austin, TX" }
| Field | Description |
|---|---|
queries | Job titles or keywords. Required, 1–50. Duplicates collapse to one fetch. |
location | City, state or ZIP. Default "United States". One location per run. |
maxItems | Cap on dataset items. Default 1000. Free plans stop at 250 requests and 250 results — see below. |
concurrency | Searches run in parallel. Default 3. |
Use cases
- Compensation benchmarking on advertised pay only, with no estimates mixed in
- Talent-market research by role, city and state
- Filling an ATS or job board with live ZipRecruiter postings
- Recruiting lead lists by role, employer or metro
- Tracking ZipRecruiter postings over time by re-running on a schedule, joined on
jobId
Reliability
The ZipRecruiter Jobs Scraper reads the search page's own data payload rather than the schema.org
markup beside it. That markup is an ItemList carrying a title and a link per job; the payload
carries pay as numbers with an explicit interval and currency, the employer's posted date, a resolved
city and state, and the employment type.
Only advertised pay is returned. ZipRecruiter also computes its own salary estimate for postings
that quote none, and marks it as not for display. This Actor drops that block rather than passing an
estimate off as the advertised range, so salaryMin is null exactly when the employer named no
figure. A flat rate — "$57 an hour" — returns salaryMin: 57 and salaryMax: null, because one
figure is a rate and not a range.
A ZipRecruiter search that cannot be read is recorded in the run's SUMMARY under failures, and a
run where every search failed exits with an error.
Frequently asked questions
Do I need a ZipRecruiter account, login or API key? No. The ZipRecruiter Jobs Scraper uses no account, login, cookies or API key — only public ZipRecruiter search pages are read.
Is the ZipRecruiter salary advertised or estimated? Advertised. ZipRecruiter's own estimate for
postings that quote no pay is deliberately discarded, so salaryMin and salaryMax are null
rather than filled with a guess.
Is the salary a number? Yes — salaryMin and salaryMax are numbers, with salaryPeriod
("year", "hour") and currency ("USD") alongside, so hourly and annual pay are never confused.
How many ZipRecruiter jobs does one search return? Around 20, which is what one ZipRecruiter results page carries. Ten search terms therefore return roughly 200 jobs.
Can I get the full ZipRecruiter job description? No. This Actor returns the fields ZipRecruiter
exposes on the search results page; it does not open each posting. Follow jobUrl for the full
description.
Can I search several locations in one run? No — one run searches one location across all of
its queries. Start one run per location.
What happens on a free Apify plan? The run stops at 250 requests and 250 results and reports that it hit the limit. Any paid plan runs the full input.
Limitations
The ZipRecruiter Jobs Scraper reads one results page per search, so it collects the first page rather than paginating a whole market; run several narrower queries to widen coverage. Full job descriptions, company profiles, applicant counts and recruiter contacts are out of scope, as is searching more than one location per run.
Free plan limit
Runs started from an Apify free plan stop at 250 requests and 250 results, and the run
reports that it reached the limit. Any paid plan runs the full input and maxItems you set.
The limit exists because this Actor fetches through our own infrastructure, which Apify does not cover for free-plan runs. It binds on requests as well as results so that a large input list cannot spend those fetches for rows the run will not return.