ZipRecruiter Jobs Scraper
Pricing
from $5.00 / 1,000 results
ZipRecruiter Jobs Scraper
ZipRecruiter Jobs Scraper collects job listings by keyword and location. You get titles, salaries, company names, and descriptions in a clean dataset, ready to use.
Pricing
from $5.00 / 1,000 results
Rating
0.0
(0)
Developer
Kawsar
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
ZipRecruiter Jobs Scraper: collect job listings by keyword and location
ZipRecruiter Jobs Scraper pulls job listings from ZipRecruiter by search term and location. Each result includes the job title, company, salary range, location, and a direct link. Turn on "Fetch full job details" to also grab the full job description, posted date, and employment type from each listing's page.
What data does this actor collect?
| Field | Type | Description |
|---|---|---|
| jobTitle | String | Job position title |
| companyName | String | Hiring company name |
| location | String | City and state |
| isRemote | Boolean | True if the listing is marked remote |
| salaryText | String | Raw salary string as shown, e.g. $40 - $75/hr |
| salaryMin | Number | Parsed minimum salary value |
| salaryMax | Number | Parsed maximum salary value |
| salaryInterval | String | Pay period: HOUR, YEAR, or MONTH |
| easyApply | Boolean | True if quick-apply is available |
| jobUrl | String | Direct URL to the listing |
| jobId | String | ZipRecruiter internal job ID |
| companyUrl | String | URL to the company's ZipRecruiter profile |
| jobDescription | String | Full plain-text description (fetchJobDetails only) |
| datePosted | String | ISO date the job was posted (fetchJobDetails only) |
| employmentType | String | e.g. FULL_TIME (fetchJobDetails only) |
| scrapedAt | String | UTC timestamp of when this record was collected |
How to use this actor
Input
| Field | Type | Default | Description |
|---|---|---|---|
| searchQuery | String | required | Job title or keywords to search |
| location | String | blank | City and state, e.g. "Austin, TX" |
| fetchJobDetails | Boolean | false | Visit each listing page for full description and posted date |
| maxItems | Integer | 50 | Max listings to collect, up to 1000 |
| requestTimeoutSecs | Integer | 30 | Per-request timeout in seconds |
Example input
{"searchQuery": "data analyst","location": "New York, NY","fetchJobDetails": true,"maxItems": 100}
Example output
{"jobTitle": "Senior Data Analyst","companyName": "Acme Corp","location": "New York, NY","isRemote": false,"salaryText": "$85K - $110K/yr","salaryMin": 85000,"salaryMax": 110000,"salaryInterval": "YEAR","easyApply": true,"jobUrl": "https://www.ziprecruiter.com/c/Acme-Corp/Job/Senior-Data-Analyst/-in-New-York,NY?jid=abc123","jobId": "abc123","companyUrl": "https://www.ziprecruiter.com/co/Acme-Corp/Jobs","jobDescription": "We are looking for a Senior Data Analyst...","datePosted": "2025-04-20","employmentType": "FULL_TIME","scrapedAt": "2025-04-28T10:30:00+00:00"}
Use cases
- Salary research: find out what a role actually pays across dozens of live listings, not just Glassdoor averages
- Recruitment: see what competitors are posting before writing your own job description
- Job feed: pipe listings into your own app, spreadsheet, or database on a schedule
- Resume targeting: pull 50 postings for a role and see which requirements keep coming up
Performance
With fetchJobDetails off (the default), the actor collects around 20 listings per page request. Each page takes 3-5 seconds. A run of 100 listings finishes in roughly 20-30 seconds.
With fetchJobDetails on, it makes one extra request per job. Expect a few minutes for 100 listings.
FAQ
How many listings can it collect per run? Up to 1000. Use maxItems to set the limit.
Does it work for remote jobs? Leave location blank, or type "Remote" to filter for remote listings.
Why are some jobs missing salary data? ZipRecruiter only shows salary when the employer provides it. Jobs without it return null for salaryMin, salaryMax, and salaryInterval.
What does fetchJobDetails actually do? It visits each job's own page to collect the full description, posted date, and employment type. This adds roughly one request per listing. For a run of 100 jobs it is the difference between 30 seconds and a few minutes.
Can I run this on a schedule? Yes. The Apify scheduler handles daily or weekly runs without any extra setup.