ZipRecruiter Scraper | $1 / 1k | Fast & Reliable
Pricing
from $1.99 / 1,000 results
ZipRecruiter Scraper | $1 / 1k | Fast & Reliable
ZipRecruiter scraper extracts publicly available job listings, company names, job titles, locations, salaries (when available), posting dates, and job details 💼📊 Perfect for recruitment, talent sourcing, job market research, and employment trend analysis.
Pricing
from $1.99 / 1,000 results
Rating
0.0
(0)
Developer
Scrapers Hub
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
7 days ago
Last modified
Categories
Share
ZipRecruiter Search Scraper (Actor)
Scrapes ZipRecruiter job-search results into structured job objects. Built with requests → curl_cffi fallback, parsel (CSS selectors), regex, and an optional proxy path for Cloudflare.
Input
{"queries": ["software engineer", "data analyst"],"location": "New York, NY","radius": 25,"location_remote": true,"days": "10","refineByApplyType": true,"limit": 1500,"proxy_url": null,"max_pages_per_query": 40}
| Field | Meaning |
|---|---|
queries | One ZipRecruiter search per term. |
location / radius | Base location and search radius (miles). |
location_remote | true → refine_by_location_type=remote. |
days | Only jobs posted in the last N days ("" = any time). |
refineByApplyType | Enables ZipRecruiter's apply-type refinement. |
limit | Max jobs across all queries (deduped by listing key). |
proxy_url | Residential/unblocker proxy — required in production (see below). |
Output
One object per job, matching the reference schema:
{ job, source, company, location, compensation, employment, descriptions, application }
application.apply_urlcarries a base64match_token; the scraper decodes it to recoverlisting_key,match_id,bid_tracking_data, and the external apply URL.sourcerecords the search URL, page index, scrape time, and seed.
How it fetches (requests → curl_cffi → proxy)
- Plain
requestsGET (cheapest). - On a block signature (403/429/503 or a Cloudflare interstitial), retry with
curl_cffiimpersonating real Chrome/Safari TLS fingerprints, cycling profiles. - All requests can route through
proxy_url.
Extraction is layered so it survives markup changes:
embedded application-state JSON → application/ld+json JobPosting → parsel CSS
job cards.
⚠️ Cloudflare note
ZipRecruiter is behind a Cloudflare managed challenge (
cf-mitigated: challengeproxy_url that clears the challenge (residential proxy or a
Cloudflare-solving unblocker/scraping API). Without it the actor runs cleanly
and returns an empty dataset instead of crashing.
Run
pip install -r requirements.txt# Standalone (reads ./INPUT.json, writes ./output/dataset.json)python main.pypython main.py path/to/input.json# As an Apify Actorapify run