ZipRecruiter Jobs Scraper avatar

ZipRecruiter Jobs Scraper

Pricing

from $2.50 / 1,000 results

Go to Apify Store
ZipRecruiter Jobs Scraper

ZipRecruiter Jobs Scraper

Collect ZipRecruiter job listings - salary, company, location.

Pricing

from $2.50 / 1,000 results

Rating

0.0

(0)

Developer

String

String

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

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

FieldTypeNotes
jobIdstringZipRecruiter's own listing key — stable, use it to de-duplicate
titlestring
companystring
salaryMin, salaryMaxnumberThe advertised pay, e.g. 85000 and 110000. null when the posting advertises none — see below
salaryPeriodstringThe interval the pay is quoted over, e.g. "year", "hour"
currencystringISO code, e.g. "USD"
employmentTypestringe.g. "full_time"
locationstringAs ZipRecruiter displays it, e.g. "Melbourne, FL US"
city, statestringSplit out, so you can group without parsing
postedAtstringISO 8601 timestamp from ZipRecruiter's own posted date — a real timestamp, not a day count
jobUrlstringDirect link to the ZipRecruiter posting
query, sourceUrl, collectedAtstringProvenance for every row

Input

{ "queries": ["software engineer", "registered nurse"], "location": "Austin, TX" }
FieldDescription
queriesJob titles or keywords. Required, 1–50. Duplicates collapse to one fetch.
locationCity, state or ZIP. Default "United States". One location per run.
maxItemsCap on dataset items. Default 1000. Free plans stop at 250 requests and 250 results — see below.
concurrencySearches 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.