ParseForge Scrapers

Job Postings Scraper for ZipRecruiter

parseforge/ziprecruiter-scraper

JobsAutomationDeveloper tools

Scrape ZipRecruiter job postings and salary data in the US, Canada, UK, Ireland, Germany, France, Australia, India and NZ: company, pay, location, description. Independent tool, not affiliated with, endorsed by, or sponsored by ZipRecruiter, Inc. All trademarks belong to their respective owners.

Run this scraper See the API call
Total runs
245
Bookmarked
0
Last modified
2 days ago

This scraper was last updated on .

What does the Job Postings Scraper for ZipRecruiter return?

ParseForge

Job Postings Scraper for ZipRecruiter

โš ๏ธ Independent tool. This Actor is not affiliated with, endorsed by, or sponsored by ZipRecruiter, Inc. or any of its subsidiaries. All trademarks mentioned are the property of their respective owners.

Scrape ZipRecruiter job postings and salary data in the United States, Canada, the United Kingdom, Ireland, Germany, France, Australia, India and New Zealand, by keyword, location, or URL. Every posting returns title, company, location, pay range as numbers (minimum, maximum, currency, period, and the annual equivalent), employment type, workplace type, benefits, and posting date. Turn on full descriptions to add the complete job text. Export to CSV, JSON, Excel, or XML.

ZipRecruiter is one of the largest job boards in the United States, and it runs separate sites for eight other countries. This Actor covers all of them from one input: pick a country, type a job title and a location, and it returns every matching job in one consistent schema. In the United States and Canada it uses ZipRecruiter's own filters for date posted, workplace, employment type, experience level, salary range, and Quick Apply, so the results match what a candidate sees on the site.

Who uses it What they scrape ZipRecruiter for
Recruitment agencies A live feed of every new role in their niche, city by city, without checking the site by hand.
Compensation and market researchers Pay ranges as numbers, normalized to an annual figure, to compare roles, cities, and seniority levels.
Job boards and aggregators Fresh listings with full descriptions and apply links to publish on their own platform.
Sales and business development teams Companies hiring for specific roles right now, as a signal for lead generation.

What it does

This Actor searches ZipRecruiter the way a candidate does and returns each job as a flat row. It can also open every job page to add the full description.

  • ๐ŸŒŽ Nine countries in one Actor: the United States and Canada on ziprecruiter.com, plus the UK, Ireland, Germany, France, Australia, India, and New Zealand sites.
  • ๐Ÿ” Keyword and location search: a job title like "nurse" or "software engineer" and a location like "Austin, TX", "Toronto, ON" or "Manchester". Leave the location empty to search the whole country.
  • ๐Ÿ’ฐ Pay as numbers: salaryMin, salaryMax, salaryCurrency, salaryPeriod (hour, week, month, year), and salaryMinAnnual / salaryMaxAnnual so hourly and yearly pay can be compared directly.
  • ๐ŸŽ›๏ธ ZipRecruiter's own filters in the US and Canada: posted within N days, radius in miles, remote / hybrid / on-site, employment type, experience level, minimum and maximum annual salary, and Quick Apply only.
  • ๐Ÿ“‹ Direct URL input: paste search URLs with filters already applied, or individual job URLs, from any of the nine sites. One run can mix countries.
  • ๐Ÿ“„ Full job descriptions: the complete text and the original HTML, plus share links and, when the posting has them, requirements, skills, and a contact email.

Results export to CSV, JSON, Excel, or XML, or straight from the API.

What you can do with ZipRecruiter job postings and salary data

๐Ÿ“ˆ Track pay by role and city.

A compensation analyst pulls every "registered nurse" job in Dallas, Houston, and Austin each week and charts salaryMinAnnual and salaryMaxAnnual by city, with hourly and yearly postings on the same scale.

๐Ÿข Power a remote jobs board.

A remote-work job board pulls ZipRecruiter remote jobs every day with the Remote filter and "posted within 1 day", adds full descriptions and apply links, and republishes the listings.

๐ŸŽฏ Find companies that are hiring.

A sales team searches "sales manager" across the US every Monday, groups the results by companyName, and prioritizes outreach to the companies with the most open roles.

๐ŸŒ Compare markets across countries.

A research firm runs the same job title in the US, the UK, Germany, and Australia and compares volume, pay, and remote share between markets.

Why choose this scraper

What you get
Every ZipRecruiter market The US, Canada, and all seven international ZipRecruiter sites from one Actor and one schema.
Pay you can compute with Numeric minimum and maximum with currency and period, an annual equivalent, and where the figure came from (salarySource).
The site's own filters Date posted, radius, workplace, employment type, experience level, salary range, and Quick Apply in the US and Canada.
Full descriptions on demand Complete job text and HTML when you need it; fast search-only runs when you don't.
No login, no API key Reads the public job postings. Call it through the Apify API and it works like a jobs API that returns JSON.

How it compares

Features as listed on each Actor's Store page on 25 September 2026.

Feature ParseForge ZipRecruiter Jobs Scraper Pro ZipRecruiter Jobs Scraper (silentflow) Job Scraper for ZipRecruiter (7 Country Markets)
United States Yes Yes Yes Needs extra account setup
Canada Yes Not listed Yes No
UK, Ireland, Germany, France, India, New Zealand Yes No No Yes
Australia Yes No No No
Salary as numbers with currency Yes Min, max and period, no currency Yes Yes
Annual pay equivalent Yes Not listed Not listed Not listed
Full job description Yes Yes Yes Yes
Experience level filter Yes Not listed Not listed Not listed
Salary range filter Minimum and maximum Not listed Minimum Not listed
Quick Apply filter Yes Not listed Not listed Not listed
Job URLs as input Yes Start URLs Yes Not listed

Configure the run

Search by keyword and location, or paste ZipRecruiter URLs. Set a maximum number of listings per run (and per URL) so your dataset stays the size you need. The Input tab lists every parameter.

A first run with the defaults:

{
  "country": "us",
  "query": "software engineer",
  "location": "New York, NY",
  "maxItems": 10,
  "includeDetails": true
}

Remote, full-time data analyst jobs posted in the last week that pay at least $70,000 a year, anywhere in the US, without opening each job page:

{
  "country": "us",
  "query": "data analyst",
  "workplace": "remote",
  "daysPosted": 7,
  "employmentTypes": ["full_time"],
  "salaryMin": 70000,
  "maxItems": 500,
  "includeDetails": false
}

Nurses in Toronto, and electricians in Manchester, from URLs in one run:

{
  "startUrls": [
    { "url": "https://www.ziprecruiter.com/jobs-search?search=nurse&location=Toronto%2C+ON&country=ca" },
    { "url": "https://www.ziprecruiter.co.uk/jobs/search?q=electrician&l=Manchester" }
  ],
  "maxItems": 200,
  "maxItemsPerStartUrl": 100
}

A ZipRecruiter US search goes about 25 to 29 pages deep, roughly 500 to 580 jobs. To collect more for a broad keyword, split it by location or filters, or paste several URLs.

Output

One row per job. A US example (description shortened):

{
  "jobId": "HWdEqkOO0ad7L-G2Rn9e4g",
  "title": "Entry-Level Occupational Safety and Health Data Analyst",
  "companyName": "ERG",
  "location": "Alexandria, VA",
  "city": "Alexandria",
  "state": "VA",
  "countryCode": "US",
  "employmentType": "Full-time",
  "workplaceType": "Remote",
  "isRemote": true,
  "salary": "$58K - $70K/yr",
  "salaryMin": 58000,
  "salaryMax": 70000,
  "salaryCurrency": "USD",
  "salaryPeriod": "year",
  "salaryMinAnnual": 58000,
  "salaryMaxAnnual": 70000,
  "salarySource": "provided",
  "salaryIsEstimated": false,
  "benefits": ["Medical", "Dental", "Paid time off", "Life insurance", "Retirement"],
  "postedDate": "2026-09-22T19:38:05Z",
  "firstPostedDate": "2026-09-22T19:38:05Z",
  "jobUrl": "https://www.ziprecruiter.com/c/ERG/Job/Entry-Level-Occupational-Safety-and-Health-Data-Analyst/-in-Alexandria,VA?jid=d126a86d89ffd032",
  "isExternalApply": false,
  "companyProfileUrl": "https://www.ziprecruiter.com/co/ERG/Jobs",
  "description": "Job Description ERG is a research and consulting firm that provides a wide range of support to federal, state, and commercial clients...",
  "searchCountry": "us"
}

salarySource says where the pay figures come from: provided by the employer, parsed from the description, estimated by ZipRecruiter, or not_displayed when ZipRecruiter has figures for the job but does not show them to candidates. postedDate is the date the site shows and filters by; firstPostedDate is when the listing first went up, which can be much older for roles the employer keeps reopening.

On the international sites the search results carry title, company, location, summary, and posting date; with full descriptions on, the row also gets the description, employment type, coordinates, apply details, and the salary when the posting states it.

Run it

  1. Create a free Apify account with $5 in credit.
  2. Open the Job Postings Scraper for ZipRecruiter.
  3. Pick a country, type a job title and a location, then click Start.
  4. Export the results as CSV, Excel, JSON, or XML from the Dataset tab.

Run it programmatically through the Apify API (run-sync-get-dataset-items) or the ApifyClient for JavaScript and Python.

Use with AI agents (MCP)

Give an AI agent live access to ZipRecruiter job postings through the Model Context Protocol. Add the Actor to Claude, Cursor, or any MCP client:

claude mcp add --transport http apify "https://mcp.apify.com?tools=parseforge/ziprecruiter-scraper"

Then prompt it in plain language, for example "find remote data analyst jobs in the US posted this week that pay over $80k".

Troubleshooting

Why am I getting no results?

Check that the keyword and location return results on the matching ZipRecruiter site first, and that the country is right: "Dublin" alone searches a Dublin in the United States, while "Dublin, Ireland" searches the Irish site. Very narrow filter combinations can also return nothing.

The run is taking a long time.

With full descriptions on, the Actor opens every job page, which takes a few seconds per job in the United States and Canada. Turn it off if the search fields are enough; a search-only run reads 20 jobs per page.

Some jobs have no salary.

Not every posting states pay. In the US and Canada, salarySource tells you where the figures came from, and showSalary says whether ZipRecruiter displays them.

I pasted a URL and filled in the keyword, and the run stopped.

The URL field and the search fields are mutually exclusive. Clear one of them and run again.

I need more than about 500 jobs for one keyword in the US.

ZipRecruiter stops paging a single search after roughly 25 to 29 pages. Run the keyword per state or city, or add filters, and the Actor removes duplicates across the searches in one run.

FAQ

Question Answer
Which countries does it cover? The United States and Canada (ziprecruiter.com), the United Kingdom (ziprecruiter.co.uk), Ireland (.ie), Germany (.de), France (.fr), Australia (.com.au), India (.in), and New Zealand (.nz).
What happens if I leave the country empty? The country is read from the location, so "Cork, Ireland" searches Ireland and "Toronto, Canada" searches Canada. With no country named anywhere, the United States is searched.
Can I get the full job description? Yes. Leave "Include full job description" on and the Actor opens each job page for the full text and HTML.
Which filters work in which countries? Posted within N days and workplace work everywhere. Employment type, experience level, salary range, and Quick Apply use ZipRecruiter's own filters in the United States and Canada. Sort by newest applies to the international sites.
Is the radius in miles or kilometres? Miles in the United States and Canada (ZipRecruiter offers 5, 10, 25, 50 and 100). The international sites use their own radius unit.
Can I paste a URL with filters already applied? Yes, search URLs and individual job URLs from any of the nine sites. One run can mix countries.
Does it handle pagination? Yes. It keeps loading result pages until it reaches your maximum or the search runs out, and it removes duplicate jobs.
What output formats are supported? CSV, JSON, Excel, or XML from the Apify platform, or through the API and integrations.
Can I keep only jobs that apply on the employer's site? Yes. Turn on "External apply only". In the US and Canada, "Quick Apply only" does the opposite and keeps jobs you apply to directly on ZipRecruiter.

๐Ÿ†˜ Need help? Email parseforge@protonmail.com with your run ID, your input, and what you expected.

โš ๏ธ Disclaimer. This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by ZipRecruiter, Inc. or any of its subsidiaries. All trademarks mentioned are the property of their respective owners. It collects only publicly available data. You are responsible for using the collected data in compliance with the source's terms of service and applicable data-protection laws, including GDPR, CCPA, and PIPL. Do not use it to collect personal data unlawfully.

What input does the Job Postings Scraper for ZipRecruiter accept?

FieldTypeWhat it doesDefault
country string (9 options) Which ZipRecruiter market to search. The United States and Canada share ziprecruiter.com; the other countries each have their own ZipRecruiter site. Left empty, the country is read from the location (for example "Dublin, Ireland"), and otherwise the United States is searched. Ignored when you paste URLs, since each URL already names its site. us
query string The job keyword to search for, such as nurse, software engineer, truck driver, or sales. software engineer
location string City, state, region, or ZIP code, such as "Austin, TX", "Toronto, ON", "Manchester" or "Dublin, Ireland". Leave empty to search the whole country. New York, NY
maxItems integer How many job listings to collect per run. A single ZipRecruiter US search goes about 25 to 29 pages deep (roughly 500 to 580 jobs); for more, split the search by location or filters, or paste several URLs. 10
includeDetails boolean Open each job page to add the full description (text and HTML) and share links, plus requirements, skills and contact email when the posting has them. On the international sites it also adds structured data such as coordinates and apply details. Search results alone already include title, company, pay, location, employment type, workplace type, benefits and posting date. true
startUrls array Paste ZipRecruiter search URLs with filters already applied, or individual job URLs, from any supported country (ziprecruiter.com, .ca, .co.uk, .ie, .de, .fr, .com.au, .in, .nz). Use either URLs or the search fields above, not both. not set
maxItemsPerStartUrl integer A separate cap for each URL in ZipRecruiter URLs, while Maximum job listings stays the overall run limit. 10
distance integer How far around the location to search. In the United States and Canada this is in miles (ZipRecruiter offers 5, 10, 25, 50 and 100; the site default is 25). On the international sites it uses that site's own radius unit. not set
daysPosted integer Only jobs posted in the last N days, for example 1, 3, 7 or 30. not set
workplace string (3 options) Keep only on-site, remote, or hybrid jobs. In the United States and Canada this is ZipRecruiter's own filter; elsewhere it is read from the location and description. not set
employmentTypes array Keep only these employment types. Pick one or more. not set
experienceLevels array Keep only jobs at these experience levels. Pick one or more. not set
salaryMin integer Keep only jobs whose annual pay reaches at least this amount, for example 80000. not set
salaryMax integer Keep only jobs whose annual pay does not exceed this amount. not set
quickApplyOnly boolean Keep only jobs you can apply to directly on ZipRecruiter. not set
externalApplyOnly boolean Keep only jobs whose apply button sends candidates to the employer's own site or applicant tracking system. not set
sortBy string (2 options) Best match or newest first. ZipRecruiter US and Canada have no sort option, so this applies to the other countries only. not set
latitude number Optional latitude for a coordinate-based search on the international sites. not set
longitude number Optional longitude for a coordinate-based search on the international sites. not set

How much does the Job Postings Scraper for ZipRecruiter cost?

from $13.99 per 1,000 results

Charged forWhat it isPrice each
Actor Start Charged once when the run starts. $0.005
Result Item Charged once per result collected. $0.01399 to $0.01866

Tiered: the lower figure is the price on a higher Apify plan. Billing and the free credit live on Apify.

How do I call the Job Postings Scraper for ZipRecruiter API?

One POST returns the dataset directly. Same shape for every scraper in the library, so swapping the slug is the only change.

POST ยท run and get results
curl -X POST "https://api.apify.com/v2/acts/parseforge~ziprecruiter-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "country": "us",
    "query": "software engineer",
    "location": "New York, NY",
    "maxItems": 10,
    "includeDetails": true
  }'

What example inputs can I use?

Use these inputs to see how a run is configured.

input.json
{
  "country": "us",
  "query": "software engineer",
  "location": "New York, NY",
  "maxItems": 10,
  "includeDetails": true
}

What do users say about the Job Postings Scraper for ZipRecruiter?

No reviews yet. Be the first.

How do I report an issue with the Job Postings Scraper for ZipRecruiter?

We build and maintain this scraper, so a problem with it comes to us. Report it on the Apify listing and the thread stays attached to the scraper where the next person can find it: open an issue.

Broken and urgent, or you would rather not post in public? Write to parseforge@protonmail.com and it reaches the people who wrote it.

What related scrapers can I use?

Run Job Postings Scraper for ZipRecruiter on Apify All scrapers