ZipRecruiter Job Scraper avatar

ZipRecruiter Job Scraper

Pricing

from $1.00 / 1,000 jobs

Go to Apify Store
ZipRecruiter Job Scraper

ZipRecruiter Job Scraper

Scrape job listings from ZipRecruiter, including title, company, location, description, and employment type. Search by keyword with optional locations and radius filters.

Pricing

from $1.00 / 1,000 jobs

Rating

0.0

(0)

Developer

Scraptivo

Scraptivo

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

a day ago

Last modified

Share

ZipRecruiter Job Scraper collects job listings from ZipRecruiter and turns them into structured data for market research, salary benchmarking, and automated job alerts. Provide search terms with optional locations and a radius, run the Actor, and export titles, companies, descriptions, employment types, and geo-coordinates to JSON, CSV, Excel, or your preferred integration. Use it to analyze hiring demand, track compensation trends, and feed recruitment pipelines. Pricing starts at $1 per 1,000 jobs.

What can you automate with ZipRecruiter Job Scraper?

  • Build a job database — Collect titles, companies, locations, descriptions, and employment types from any ZipRecruiter search query.
  • Monitor hiring demand — See which skills, roles, and locations employers are posting for, in real time.
  • Track compensation trends — Pull structured, normalized listings for salary benchmarking across regions and industries.
  • Schedule recurring collection — Run daily or weekly on the Apify Scheduler to keep job data fresh.
  • Feed recruitment workflows — Push structured job data through the Apify API or a webhook into a CRM, dashboard, or internal tool.

Who is this scraper for?

TeamWorkflow
Market researchersAnalyzing job-market trends, in-demand skills, and hiring volume.
Recruiters and agenciesBuilding prospect lists of active openings by role and location.
Data analystsFeeding normalized job data into analytics dashboards and models.
Job-board operatorsAggregating listings into their own platform or recommendation engine.

What data can you collect from ZipRecruiter?

Data groupExample fieldsHow it helps
Job identitytitle, url, datePosted, validThrough, descriptionIdentify and deduplicate records with the stable job url.
EmployercompanyName, companyUrl, companySameAsUnderstand who is hiring and enrich company profiles.
LocationlocationLocality, locationRegion, locationCountry, locationPostalCode, latitude, longitudeMap openings geographically.
EmploymentemploymentType, directApplyFilter by full-time/part-time/contract and application type.

How to use ZipRecruiter Job Scraper

  1. Open the ZipRecruiter Job Scraper on Apify.
  2. Enter one or more Search Queries such as "Python Developer" or "Data Scientist".
  3. Optionally add Locations and a Search Radius in miles.
  4. Set Max Jobs to control the number of listings (0 = unlimited).
  5. Run the Actor and export the dataset or connect it to your workflow.
{
"searchQueries": ["Web Developer"],
"locations": ["Berlin"],
"radius": 0,
"maxJobs": 20,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
}
}

Example workflow

Track weekly Web Developer openings in Berlin

  1. Schedule a run every Monday with searchQueries = ["Web Developer"] and locations = ["Berlin"].
  2. Export the dataset to a spreadsheet and keep title, companyName, datePosted, and url.
  3. Compare this week's postings against last week's to spot new openings and closed roles.
  4. Deduplicate user-side against the stable job url.

Automate and integrate your results

  • Schedules — Job postings change daily. Run daily for close hiring monitoring or weekly for market research. Create separate scheduled tasks per search query so each keeps its own dataset.
  • Webhooks — Enable a webhook on run completion to push fresh listings into a CRM, Google Sheets, or Slack pipeline.
  • Exports and API — Download results as JSON, CSV, or Excel from the Apify Console, or call the Actor from the API:
curl "https://api.apify.com/v2/acts/scraptivo/ziprecruiter-scraper/runs?token=YOUR-APIFY-TOKEN" \
-H "Content-Type: application/json" \
-d '{
"searchQueries": ["Web Developer"],
"locations": ["Berlin"],
"radius": 0,
"maxJobs": 20,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
}
}'
  • Deduplication — The Actor appends new results on every run and does not deduplicate across runs. Use the stable job url when merging results.

Input reference

FieldTypeRequiredDefaultWhat it controls
searchQueriesArray of stringsNo[]Job titles, skills, or keywords to search.
startUrlsArray of URLsNoFull ZipRecruiter search URLs (ignored when searchQueries is provided).
locationsArray of stringsNo[]Cities, regions, or "Remote"; combined with each search query.
radiusIntegerNo0Search radius in miles from each location (0 = any distance).
maxJobsIntegerNo0Maximum job listings to scrape (0 = unlimited).
proxyConfigurationProxy objectNoApify proxy, RESIDENTIALProxy settings for the run.

Output example

Each dataset item is one job listing:

{
"title": "Web Developer",
"url": "https://www.ziprecruiter.com/jobs/web-developer-123",
"datePosted": "2025-01-15",
"validThrough": "2025-03-15",
"description": "We are looking for a skilled Web Developer to join our team...",
"employmentType": "FULL_TIME",
"directApply": true,
"companyName": "Tech Corp",
"companyUrl": "https://techcorp.com",
"locationLocality": "Berlin",
"locationRegion": "Berlin",
"locationCountry": "DE",
"locationPostalCode": "10115",
"latitude": "52.5200",
"longitude": "13.4050"
}

How much does it cost to scrape ZipRecruiter?

The Actor uses pay-per-event pricing. Each job record pushed to the dataset counts as one job event, billed at $0.001 per job — that is $1 per 1,000 jobs. A one-time actor-start event is also charged per run (one event per GB of memory, minimum one). Compute units consumed are deducted from your Apify plan, and volume discounts on paid Apify plans reduce the per-1,000 rate. When your event spending limit is reached, the run stops gracefully.

Reliability and responsible use

  • Proxy requirement — The Actor defaults to the Apify proxy with the RESIDENTIAL group. Residential IPs are recommended for reliable access to ZipRecruiter.
  • Retries and rate limits — The Actor includes built-in retry logic and handles rate limiting gracefully.
  • Conditional fields — Location coordinates and postal codes are populated when available; some fields are nullable.
  • Public data — The Actor collects publicly visible job listings from ZipRecruiter.
  • Responsible use — Only use the data in ways that comply with ZipRecruiter's terms of service and applicable law.

Frequently asked questions

Can I scrape ZipRecruiter by keyword and location?

Yes. Enter any keyword in searchQueries and optionally add locations and a radius in miles. Each search query is combined with each location for targeted results.

Can I schedule the ZipRecruiter Job Scraper to run automatically?

Yes. Open the Scheduler tab in Apify Console and set a recurring schedule — daily for close hiring monitoring or weekly for market research. Create separate scheduled tasks per search query.

What counts as one result?

A job record pushed to the dataset counts as one job result ($1 per 1,000 jobs). A small one-time actor-start event is also charged at the start of each run.

Why are some fields empty?

Fields such as locationPostalCode, latitude, and longitude are populated only when the platform provides them. A null value usually means ZipRecruiter has no data for that field.

How do I avoid duplicate records?

The Actor appends results on every run and does not deduplicate across runs. Use the stable job url as the key when merging a fresh run into existing data.

Do I need a proxy?

The Actor works out of the box with the default Apify residential proxy, which is recommended for reliable access to ZipRecruiter.

Support and custom workflows

Need a different field, source, or delivery workflow? Contact Scraptivo at scraptivo@gmail.com. Include the Actor name, sample URL, required fields, and expected volume so we can assess the request.