ZipRecruiter Jobs Scraper
Pricing
from $2.19 / 1,000 jobs
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
Maintained by CommunityActor 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
Remotefor 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
includeDetailsto 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
postedWithinto 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?
| Field | Description | Needs details |
|---|---|---|
id / url | ZipRecruiter job ID (jid) and job page URL | |
title / shortDescription | Job title and the snippet shown in search results | |
company / companyLogo / companyZipRecruiterUrl | Hiring company, logo, and its ZipRecruiter jobs page | |
location / city / state / postalCode / country | Job location, split into parts | |
workplaceType / isRemote | On-site, Remote, Hybrid, or a mix | |
salaryMin / salaryMax / salaryInterval / salaryCurrency / salaryText | Pay range and period (hour, year and others) | |
salaryIsEstimated / salaryMinAnnual / salaryMaxAnnual | Whether ZipRecruiter estimated the pay, and the yearly equivalent | |
benefits | Benefits listed by the employer, such as Medical, Dental, 401(k) | |
employmentType | FULL_TIME, PART_TIME, CONTRACTOR, TEMPORARY, and others | |
postedDate / repostedDate / postedHumanDate | When the job was posted or reposted | |
directApply / applyUrl | Whether you can apply on ZipRecruiter (1-Click Apply), and the apply link | |
description / descriptionText | Full job description as HTML and as plain text | ✅ |
industry / category | Industry and occupational category (O*NET code) | ✅ |
validThrough / employerJobId | Listing expiry date and the employer's own requisition ID | ✅ |
companyWebsite / companyDescription / companyIndustries / companySize / companyHeadquarters | Company profile | ✅ |
companyRating / companyRatingCount | Employer rating (out of 10) and number of worker responses, shown on ZipRecruiter | ✅ |
educationLevel / educationRequired / skills | Education 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
- Open ZipRecruiter Jobs Scraper and click Try for free.
- Enter one or more search keywords, such as
software engineerorregistered nurse. - Enter a location, such as
New York, NY, a ZIP code, orRemote. - Optionally set filters: job type, date posted, remote/hybrid, experience level, salary or distance.
- Set Max jobs and choose whether to add full job details.
- 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.
| Event | Free | Bronze | Silver | Gold |
|---|---|---|---|---|
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.
| Parameter | Type | Default | Description |
|---|---|---|---|
searches | array | — | Job titles, skills or company names; each runs as its own search |
location | string | United States | City and state, ZIP code, state, United States, or Remote |
startUrls | array | — | ZipRecruiter search URLs, /Jobs/... category pages, or job URLs (?jid=) |
jobType | string | any | full_time, part_time, contract, contract_to_hire, temporary, as_needed, other |
postedWithin | string | anytime | today, 3days, week, 2weeks, month |
remoteType | string | any | only_remote, hybrid, no_remote |
experienceLevel | string | any | no_experience, junior, mid, senior |
salaryRange | string | — | Minimum annual salary in USD, e.g. 50000 |
salaryMax | string | — | Maximum annual salary in USD |
radius | string | 25 | Miles around the location: 5, 10, 25, 50, 100 |
easyApplyOnly | boolean | false | Only jobs with 1-Click Apply on ZipRecruiter |
maxItems | integer | 20 | Maximum jobs in total |
maxPages | integer | 25 | Maximum result pages (20 jobs each) per search |
includeDetails | boolean | false | Open 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 ApifyClientclient = 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
- For each keyword, the scraper opens ZipRecruiter's search with your location and filters, page by page (20 jobs per page).
- 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. - With
includeDetailson, it also opens each job page for the description, company profile, and the employer's apply link. - 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.
Is it legal to scrape ZipRecruiter?
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
| Actor | What it scrapes |
|---|---|
| Indeed Jobs Scraper | Job listings from Indeed |
| LinkedIn Jobs Scraper | Job postings from LinkedIn |
| Dice Jobs Scraper | Tech jobs from Dice |
| BuiltIn Jobs Scraper | Tech and startup jobs from Built In |
| Greenhouse Jobs Scraper | Jobs from company Greenhouse job boards |
| FlexJobs Jobs Scraper | Remote and flexible jobs from FlexJobs |