ZipRecruiter Jobs Scraper avatar

ZipRecruiter Jobs Scraper

Pricing

from $2.19 / 1,000 jobs

Go to Apify Store
ZipRecruiter Jobs Scraper

ZipRecruiter Jobs Scraper

Scrape ZipRecruiter job listings by keyword and location or from URLs: titles, companies, salaries, benefits, workplace type, full descriptions, posting dates and employer apply links.

Pricing

from $2.19 / 1,000 jobs

Rating

0.0

(0)

Developer

ParseBird

ParseBird

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

1

Monthly active users

21 hours ago

Last modified

Categories

Share

ZipRecruiter Jobs Scraper

ZipRecruiter Jobs Scraper extracts job listings from ZipRecruiter by keyword and location, or from ZipRecruiter search, category and job URLs. You get the job title, company, salary, benefits, location, workplace type, job type, posting date and apply link, plus optional full job details, as clean JSON, CSV or Excel.

Search ZipRecruiter with its own filters (job type, date posted, remote or hybrid, experience level, salary range, distance and 1-Click Apply) and get 56 fields per job, including ZipRecruiter's pay estimates, the full description, company profile, and the employer's own apply link.

Copy to your AI assistant

Copy this block into ChatGPT, Claude, Cursor, or any LLM to start using this actor.

Apify Actor: parsebird/ziprecruiter-jobs-scraper. Scrapes job listings from ZipRecruiter (ziprecruiter.com, US jobs). Call via ApifyClient: client.actor("parsebird/ziprecruiter-jobs-scraper").call(run_input={"searches": ["data analyst"], "location": "San Francisco, CA", "jobType": "full_time", "postedWithin": "week", "maxItems": 100, "includeDetails": false}). Inputs: searches (array of strings, job titles/skills/companies, one search each), location (string, city + state, ZIP code, state, "United States", or "Remote"; default United States), startUrls (array of {url}, ZipRecruiter /jobs-search URLs, /Jobs/<keyword>/-in-<City>,<ST> category pages, or job URLs with ?jid=), jobType (string: full_time | part_time | contract | contract_to_hire | temporary | as_needed | other), postedWithin (string: anytime | today | 3days | week | 2weeks | month, default anytime), remoteType (string: only_remote | hybrid | no_remote), experienceLevel (string: no_experience | junior | mid | senior), salaryRange (string, minimum annual USD, e.g. "50000"), salaryMax (string, maximum annual USD), radius (string miles: 5 | 10 | 25 | 50 | 100, default 25), easyApplyOnly (boolean, default false), maxItems (integer, total jobs, default 20), maxPages (integer, pages of 20 per search, default 25, ZipRecruiter shows about 25 pages max), includeDetails (boolean, default false; opens each job page for full description, industry, category, validThrough, company profile, employer apply URL; billed as an extra event). Output fields per job: id, url, title, company, companyWebsite, companyZipRecruiterUrl, companyLogo, companyDescription, companyIndustries, companySize, companyHeadquarters, companyRating, companyRatingCount, location, city, state, stateName, county, postalCode, country, workplaceType, isRemote, salaryMin, salaryMax, salaryInterval, salaryCurrency, salaryText, salaryIsEstimated, salaryMinAnnual, salaryMaxAnnual, benefits, employmentType, employmentTypes, industry, category, educationLevel, educationRequired, skills, experienceRequirements, highlights, shortDescription, description, descriptionText, postedDate, repostedDate, validThrough, postedHumanDate, isActive, directApply, applyUrl, employerJobId, detailsScraped, searchQuery, searchLocation, scrapedAt, dataType. Pricing: pay per job saved, plus a details event per job when includeDetails is on. Full API spec: https://apify.com/parsebird/ziprecruiter-jobs-scraper/api. Get your token: https://console.apify.com/settings/integrations.

What is ZipRecruiter Jobs Scraper?

ZipRecruiter is a US job marketplace where employers post jobs and candidates apply, often with "1-Click Apply". ZipRecruiter Jobs Scraper turns ZipRecruiter search results into a structured dataset, so you can collect thousands of jobs without copying them by hand. It's a simple ZipRecruiter API alternative: you don't need a ZipRecruiter account, an API key or any code.

Type a job title and a location, press Start, and download the jobs as JSON, CSV, Excel or HTML.

  • 🔎 Search by keyword and location. City and state, ZIP code, state, the whole United States, or Remote for remote jobs nationwide.
  • 🧰 All of ZipRecruiter's filters. Job type, date posted, remote/hybrid/on-site, experience level, minimum and maximum salary, distance, and 1-Click Apply only.
  • 🔗 Paste URLs. ZipRecruiter search URLs (filters are kept), category pages like /Jobs/Nurse/-in-Chicago,IL, and single job URLs.
  • 💵 Salary data on almost every job. Pay range, pay period, annual equivalent, and a flag that tells you whether the employer posted the pay or ZipRecruiter estimated it.
  • 📄 Optional full job details. Turn on includeDetails to add the full description, industry, occupational category, expiry date, company profile and rating, and the employer's own apply link.
  • 🧹 No duplicates. ZipRecruiter repeats some jobs across result pages; the scraper saves each job once per run.
  • 📅 Scheduling and monitoring. Run daily or weekly with Apify Schedules and use postedWithin to collect only new jobs.
  • 🔌 API and integrations. Use the Apify API, or send jobs to Google Sheets, Zapier, Make, Slack, or webhooks with Apify integrations.

What data can you extract from ZipRecruiter?

FieldDescriptionNeeds details
id / urlZipRecruiter job ID (jid) and job page URL
title / shortDescriptionJob title and the snippet shown in search results
company / companyLogo / companyZipRecruiterUrlHiring company, logo, and its ZipRecruiter jobs page
location / city / state / postalCode / countryJob location, split into parts
workplaceType / isRemoteOn-site, Remote, Hybrid, or a mix
salaryMin / salaryMax / salaryInterval / salaryCurrency / salaryTextPay range and period (hour, year and others)
salaryIsEstimated / salaryMinAnnual / salaryMaxAnnualWhether ZipRecruiter estimated the pay, and the yearly equivalent
benefitsBenefits listed by the employer, such as Medical, Dental, 401(k)
employmentTypeFULL_TIME, PART_TIME, CONTRACTOR, TEMPORARY, and others
postedDate / repostedDate / postedHumanDateWhen the job was posted or reposted
directApply / applyUrlWhether you can apply on ZipRecruiter (1-Click Apply), and the apply link
description / descriptionTextFull job description as HTML and as plain text✅
industry / categoryIndustry and occupational category (O*NET code)✅
validThrough / employerJobIdListing expiry date and the employer's own requisition ID✅
companyWebsite / companyDescription / companyIndustries / companySize / companyHeadquartersCompany profile✅
companyRating / companyRatingCountEmployer rating (out of 10) and number of worker responses, shown on ZipRecruiter✅
educationLevel / educationRequired / skillsEducation requirement and skills, when ZipRecruiter lists them✅

Fields marked ✅ are filled when includeDetails is on (and for pasted job URLs). Fields stay empty when ZipRecruiter doesn't show that information for a job.

How to scrape ZipRecruiter jobs

  1. Open ZipRecruiter Jobs Scraper and click Try for free.
  2. Enter one or more search keywords, such as software engineer or registered nurse.
  3. Enter a location, such as New York, NY, a ZIP code, or Remote.
  4. Optionally set filters: job type, date posted, remote/hybrid, experience level, salary or distance.
  5. Set Max jobs and choose whether to add full job details.
  6. Click Start. When the run finishes, download the jobs from the Output tab as JSON, CSV, Excel or HTML.

How much does it cost to scrape ZipRecruiter?

ZipRecruiter Jobs Scraper uses pay-per-event pricing. You pay for each job saved, and for job details only when you turn them on. Compute and proxy costs are included in these prices; there's nothing else to pay.

EventFreeBronzeSilverGold
Job saved (job-scraped)$2.49 / 1,000$2.39 / 1,000$2.29 / 1,000$2.19 / 1,000
Job details added (job-details)$3.99 / 1,000$3.89 / 1,000$3.79 / 1,000$3.69 / 1,000

For example, on the Free plan 1,000 jobs from search results cost $2.49, and 1,000 jobs with full details cost $6.48 ($2.49 + $3.99). The details event is charged only for jobs whose job page was read; if a job page can't be loaded, that job is saved with search data and no details charge. Apify's free plan includes monthly platform credit you can use to try the scraper. Set a maximum cost per run in the run options and the scraper stops when it reaches it.

Input

Search by keyword and location, or paste ZipRecruiter URLs. See the Input tab for every option.

ParameterTypeDefaultDescription
searchesarray—Job titles, skills or company names; each runs as its own search
locationstringUnited StatesCity and state, ZIP code, state, United States, or Remote
startUrlsarray—ZipRecruiter search URLs, /Jobs/... category pages, or job URLs (?jid=)
jobTypestringanyfull_time, part_time, contract, contract_to_hire, temporary, as_needed, other
postedWithinstringanytimetoday, 3days, week, 2weeks, month
remoteTypestringanyonly_remote, hybrid, no_remote
experienceLevelstringanyno_experience, junior, mid, senior
salaryRangestring—Minimum annual salary in USD, e.g. 50000
salaryMaxstring—Maximum annual salary in USD
radiusstring25Miles around the location: 5, 10, 25, 50, 100
easyApplyOnlybooleanfalseOnly jobs with 1-Click Apply on ZipRecruiter
maxItemsinteger20Maximum jobs in total
maxPagesinteger25Maximum result pages (20 jobs each) per search
includeDetailsbooleanfalseOpen each job page for full details (extra event)

Example: full-time data analyst jobs posted this week

{
"searches": ["data analyst"],
"location": "San Francisco, CA",
"jobType": "full_time",
"postedWithin": "week",
"maxItems": 100
}

Example: remote jobs paying $150K+

{
"searches": ["machine learning engineer"],
"location": "Remote",
"salaryRange": "150000",
"maxItems": 50
}

Example: a ZipRecruiter search URL, with full details

{
"startUrls": [
{ "url": "https://www.ziprecruiter.com/jobs-search?search=nurse&location=Chicago%2C+IL" }
],
"maxItems": 100,
"includeDetails": true
}

Output example

One job with includeDetails on (description shortened):

{
"id": "16b95c937eed52e1",
"url": "https://www.ziprecruiter.com/c/Capital-One/Job/Staff-AI-Engineer-role-(Remote-Eligible)/-in-Manhattan,NY?jid=16b95c937eed52e1",
"title": "Staff AI Engineer role (Remote Eligible)",
"company": "Capital One",
"companyWebsite": "https://www.capitalone.com/",
"companyZipRecruiterUrl": "https://www.ziprecruiter.com/co/Capital-One/Jobs",
"companyLogo": "https://www.ziprecruiter.com/svc/fotomat/public-nosensitive-ziprecruiter-logos/company/60122984.png",
"companyIndustries": ["Funds, Trusts and Financial Programs", "Real Estate"],
"companySize": "10000+ Employees",
"companyHeadquarters": "McLean, VA, US",
"companyRating": 7.8,
"companyRatingCount": 149,
"location": "Manhattan, NY",
"city": "Manhattan",
"state": "NY",
"postalCode": "10012",
"country": "US",
"workplaceType": "On-site, Remote",
"isRemote": true,
"salaryMin": 75700,
"salaryMax": 137100,
"salaryInterval": "YEAR",
"salaryCurrency": "USD",
"salaryText": "$75,700 - $137,100/yr",
"salaryIsEstimated": true,
"benefits": [],
"employmentType": "FULL_TIME",
"industry": "Engineering",
"category": "17-2199.00: Engineers, All Other",
"descriptionText": "Staff AI Engineer role (Remote Eligible)\n\nAt Capital One, we are creating responsible and reliable AI systems...",
"postedDate": "2026-08-28T20:43:49Z",
"repostedDate": "2026-09-27T20:43:49Z",
"validThrough": "2026-11-08",
"postedHumanDate": "12 days ago",
"isActive": true,
"directApply": false,
"applyUrl": "https://capitalone.wd12.myworkdayjobs.com/Capital_One/job/Staff-AI-Engineer-role--Remote-Eligible-_R1002560-1/apply?utm_source=ziprecruiter",
"employerJobId": "R1002560",
"detailsScraped": true,
"searchQuery": "software engineer",
"searchLocation": "New York, NY",
"scrapedAt": "2026-10-10T02:50:47Z",
"dataType": "job"
}

Download the dataset in JSON, CSV, Excel, XML or HTML from the Output tab or through the API.

Use the ZipRecruiter Jobs Scraper API

Start a run and read the results with the Apify API client for Python:

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("parsebird/ziprecruiter-jobs-scraper").call(run_input={
"searches": ["registered nurse"],
"location": "Houston, TX",
"jobType": "full_time",
"maxItems": 100,
})
for job in client.dataset(run["defaultDatasetId"]).iterate_items():
print(job["title"], "|", job["company"], "|", job["salaryText"])

Or with the Apify API client for JavaScript:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('parsebird/ziprecruiter-jobs-scraper').call({
searches: ['registered nurse'],
location: 'Houston, TX',
jobType: 'full_time',
maxItems: 100,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((job) => console.log(job.title, '|', job.company, '|', job.salaryText));

See the API tab for the HTTP endpoints, and the Apify API docs for scheduling runs and fetching datasets.

Use cases

  • Job market research. Track how many jobs are posted for a role in each city, and how pay ranges compare.
  • Salary benchmarking. Collect posted and estimated pay ranges by job title, location, and experience level.
  • Recruiting and lead generation. Find companies that are hiring for a role in your area, with their websites and company size.
  • Job boards and aggregators. Feed fresh ZipRecruiter jobs into your own job site or newsletter on a schedule.
  • Remote work tracking. Monitor remote and hybrid jobs for a skill across the US.

How it works

  1. For each keyword, the scraper opens ZipRecruiter's search with your location and filters, page by page (20 jobs per page).
  2. It reads the job data ZipRecruiter puts in each results page, skips jobs it has already saved, and stops at your maxItems, maxPages, or the end of the results.
  3. With includeDetails on, it also opens each job page for the description, company profile, and the employer's apply link.
  4. Every job is saved to the dataset as soon as its page is done, so you can watch results arrive.

FAQ

Do I need a ZipRecruiter account or API key? No. The scraper collects public job listings that anyone can see on ZipRecruiter without logging in.

How many jobs can I get per search? ZipRecruiter shows about 25 pages (roughly 500 jobs) for one search. To collect more, split it into several searches by city, job type, date posted, or salary range. Results are combined and duplicates are skipped.

What does salaryIsEstimated mean? When an employer doesn't post pay, ZipRecruiter shows its own estimate. salaryIsEstimated is false when the employer posted the pay and true for ZipRecruiter's estimate. Salaries are shown as entered, so an employer can occasionally post an hourly rate as yearly pay.

Can I sort jobs by date? ZipRecruiter no longer offers sorting; results come in ZipRecruiter's relevance order. Use postedWithin (for example today or 3days) to get only recent jobs. You can then sort the dataset by postedDate.

Is there an internship filter? ZipRecruiter has no internship job type. Add "intern" or "internship" to your search keyword instead.

Should I turn on includeDetails? Turn it on if you need the full description, industry, expiry date, company profile, or the employer's own apply link. It costs an extra event per job and runs slower, because every job page is opened separately. Search data alone already includes salary, benefits, location, job type, and a short description.

How long does a run take? ZipRecruiter limits automated traffic, so requests go through an unblocking proxy, which takes several seconds each. A results page brings 20 jobs at once, so search-only runs are much faster than runs with details, where every job is an extra request.

Does it work outside the US? The scraper works with jobs on ziprecruiter.com, which lists US jobs and some Canadian ones. ZipRecruiter's UK site (ziprecruiter.co.uk) isn't supported.

Something isn't working. What should I do? Open an issue in the Issues tab with your run link, and we'll take a look.

ZipRecruiter Jobs Scraper collects only public job listings that are visible without logging in. It doesn't collect personal data of job seekers. Job listings may still contain contact details of recruiters, so make sure your use complies with applicable laws such as GDPR and with ZipRecruiter's terms. If you're unsure, consult a lawyer. Read more in Apify's blog post Is web scraping legal?

Other job scrapers

ActorWhat it scrapes
Indeed Jobs ScraperJob listings from Indeed
LinkedIn Jobs ScraperJob postings from LinkedIn
Dice Jobs ScraperTech jobs from Dice
BuiltIn Jobs ScraperTech and startup jobs from Built In
Greenhouse Jobs ScraperJobs from company Greenhouse job boards
FlexJobs Jobs ScraperRemote and flexible jobs from FlexJobs