ZipRecruiter Job Post Scraper
Pricing
from $1.00 / 1,000 results
Pricing
from $1.00 / 1,000 results
Rating
0.0
(0)
Developer
Blue Puppy
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
What does ZipRecruiter Job Search Scraper do?
ZipRecruiter Job Search Scraper extracts job listings from ZipRecruiter by keyword, location, radius, and posting date. It returns structured job data such as title, company, location, salary, employment type, benefits, posting date, company logo, apply URL, canonical job URL, and optionally the full job description.
Run it on Apify to get API access, scheduling, integrations, proxy rotation, monitoring, and downloadable datasets without maintaining scraper infrastructure yourself.
Why use ZipRecruiter Job Search Scraper?
Use this Actor to monitor hiring trends, collect leads, research compensation ranges, compare employers, enrich recruiting workflows, or build job-market datasets. It is designed for repeated searches where you want structured output instead of manually opening job posts one by one.
The scraper uses ZipRecruiter's own frontend job-card API when available. This means most metadata is fetched in batches, while full descriptions can be enabled when you need complete job text.
How to use ZipRecruiter Job Search Scraper
- Open the Actor on Apify.
- Enter a search query such as
software engineer,driver, ornurse. - Enter a location such as
San Francisco, CA. - Choose radius, posting date, and result limit.
- Keep the default Residential proxy for reliable runs, or change the proxy settings to suit your Apify plan.
- Start the run.
- Download results from the Dataset tab or access them through the Apify API.
Input
You can configure the scraper from the Input tab.
{"search": "software engineer","location": "San Francisco, CA","radius": "25","days": "30","limit": 50,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}
Main input fields:
| Field | Description |
|---|---|
search | Job title, keyword, or company name. Leave blank to search all jobs. |
location | City, state, or ZIP code. Required. |
radius | Search radius in miles. |
days | Posting age filter. Use 0 for anytime. |
limit | Maximum number of jobs to save. Use 0 for unlimited. |
proxyConfiguration | Apify proxy settings. The Residential proxy group is enabled by default for more reliable requests and safer concurrency. |
Residential proxy configuration
The Actor uses Apify Residential Proxy by default. Residential IPs help reduce blocking and keep the browser session, cookies, and IP identity consistent while job pages are collected.
Output
Each dataset item represents one job post. You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.
{"title": "Software Engineer","company": "Example Technologies","companyLogo": "https://www.ziprecruiter.com/svc/fotomat/public-ziprecruiter/uploads/job_page_images_v2/example.png","companyUrl": "https://www.ziprecruiter.com/c/Example-Technologies/Jobs","location": "San Francisco, CA","city": "San Francisco","state": "California","stateCode": "CA","country": "United States","countryCode": "US","locationType": "Hybrid","employmentType": "Full-time","salary": "$120,000 - $160,000/year","salaryInterval": "year","salaryMin": 120000,"salaryMax": 160000,"salaryMinAnnual": 120000,"salaryMaxAnnual": 160000,"currency": "USD","benefits": ["Medical", "Dental", "Vision"],"datePosted": "2026-07-30T12:00:00.000Z","validThrough": null,"description": "Example job description text...","externalApplyUrl": "https://example.com/apply","jobUrl": "https://www.ziprecruiter.com/jobs/example-job"}
Data table
| Field | Type | Description |
|---|---|---|
title | Text | Job title. |
company | Text | Hiring company name. |
companyLogo | Image URL | Company logo when available. |
companyUrl | URL | Company page URL when available. |
location | Text | Display location. |
city, state, stateCode, county, country, countryCode, postalCode | Text | Structured location fields when available. |
locationType | Text | Remote, hybrid, or on-site signal when available. |
locationTypes | Array | All source location-type enums, such as REMOTE or HYBRID. |
employmentType | Text | Full-time, part-time, contract, temporary, or similar type. |
employmentTypes | Array | All source employment-type enums, such as FULL_TIME. |
salary | Text | Display salary string. |
salaryInterval, salaryMin, salaryMax, salaryMinAnnual, salaryMaxAnnual, currency | Text/Number | Structured pay fields when available. |
benefits | Array | Benefits listed on the job card or detail payload. |
datePosted | Date | Posting date when available. |
description | Text | Full job description. |
externalApplyUrl | URL | Employer or application URL when available. |
jobUrl | URL | Canonical ZipRecruiter job URL. |
Pricing / Cost estimation
How much does it cost to scrape ZipRecruiter? Cost depends on result count, proxy settings, and retries caused by anti-bot checks. Each result includes a full job-description request.
The Actor fetches metadata in batches, usually one request per group of about 20 jobs, then makes one lightweight GetJobDetails request per result to collect its full description.
Tips or Advanced options
Use limit while testing so runs finish quickly. Without a proxy the Actor forces one worker to avoid sending all parallel traffic from the same container IP. Operators can tune internal worker concurrency with the ZR_WORKERS environment variable.
Every output includes full job text, making it suitable for downstream search, matching, summarization, or compliance workflows.
Environment variables can tune advanced behavior, including request timeouts, delay ranges, batch size, session request caps, and the ZipRecruiter job-card API base URL.
FAQ, disclaimers, and support
Is scraping ZipRecruiter legal? Public web data may be scraped in many cases, but you are responsible for ensuring your use complies with applicable laws, ZipRecruiter's terms, and privacy requirements. Do not collect or store sensitive personal data unless you have a lawful basis and permission to do so.
Why are some fields missing? ZipRecruiter does not provide every field for every job. The Actor returns null or an empty array when a value is unavailable.
Why are descriptions sometimes missing? ZipRecruiter may omit a description or the detail endpoint may be unavailable for an individual listing. The Actor logs the case and returns the remaining job data.
For bugs, feature requests, or custom scraping needs, use the Issues tab on the Actor page.