ZipRecruiter Jobs Scraper avatar

ZipRecruiter Jobs Scraper

Pricing

from $3.69 / 1,000 results

Go to Apify Store
ZipRecruiter Jobs Scraper

ZipRecruiter Jobs Scraper

Scrape ZipRecruiter job listings by keyword, country, location, remote, distance, job type, and recency with structured job and company fields.

Pricing

from $3.69 / 1,000 results

Rating

0.0

(0)

Developer

AgentX

AgentX

Maintained by Community

Actor stats

2

Bookmarked

26

Total users

9

Monthly active users

19 hours ago

Last modified

Share

ZipRecruiter Jobs Scraper - Job Listings API for 4 Markets

ZipRecruiter Jobs Scraper exports up to 10,000 structured job listings per run across four supported markets. Search Canada, Ireland, the United Kingdom, or the United States with market-specific controls and receive a consistent 41-field dataset covering job details, salary, employer information, application signals, and public contacts when available.

TL;DR: Enter a keyword, choose one of four countries, set the result limit, and optionally add a location. The US and Canada additionally support Remote Only, Distance, Posted Since, and Job Type; Ireland and the UK use keyword and location only.

ZipRecruiter 4 Markets 41 Fields


Why Choose This API

Market-aware ZipRecruiter data with one output contract

๐ŸŒ Four supported markets

Choose Canada, Ireland, the United Kingdom, or the United States. All four produce the same normalized output contract.

๐ŸŽฏ Accurate filter boundaries

The US and Canada support location, distance, posting age, employment type, and remote-only controls. Ireland and the UK support location but not the other four filters.

๐Ÿ“‹ 41 normalized fields

Every result uses the same field names for source URLs, job attributes, salary, employer data, application signals, and public contacts. Source-dependent values remain null when unavailable.

๐Ÿ  Remote and employment signals

Output records may contain remote-work and employment-type signals from source listing data in any supported market, even where those values are not available as search controls.

๐Ÿ’ฐ Salary normalization

Collect salary fields when ZipRecruiter exposes them. The optional currency field converts available salary values after collection and does not filter which jobs are found.


Quick Start Guide

Export ZipRecruiter jobs in 3 steps

Open Actor Input

Enter keyword, choose country, set max_results, and optionally enter a city or region. Add US/Canada-only filters only when one of those markets is selected.

Step 2: Run the Actor

Click Start. Leave location empty for a country-level search; no city or region is invented.

Step 3: Use the dataset

Preview the default dataset or export it in JSON, CSV, Excel, XML, RSS, or another format supported by Apify.


Input Parameters

Configuration fields

ParameterTypeRequiredMarket scopeDescriptionExample
keywordstringYesAll fourJob title, skill, or company nameSoftware Engineer
countryselectYesAll fourCanada, Ireland, United Kingdom, or United StatesUnited States
max_resultsintegerYesAll fourMaximum jobs to return, from 1 to 10,000500
remote_onlybooleanNoUS/CanadaReturn only remote listingstrue
distanceintegerNoUS/Canada50 miles stays exact; larger values use a broad 5,000-mile range50
locationstringNoAll fourCity or region; country-level search is used when omittedAustin, TX
posted_sincedateNoUS/CanadaPosting age uses the next 1, 5, 10, or 30-day window7 days
job_typeselectNoUS/Canadafulltime, parttime, or contractcontract
currencyselectNoAll fourTarget currency for converting available salary valuesUSD

Market and filter behavior

BehaviorUnited StatesCanadaIrelandUnited Kingdom
Keyword searchAvailableAvailableAvailableAvailable
Optional locationAvailableAvailableAvailableAvailable
remote_onlyAvailableAvailableNot availableNot available
distanceAvailableAvailableNot availableNot available
posted_sinceAvailableAvailableNot availableNot available
job_typeAvailableAvailableNot availableNot available

Exact US and Canada filter rules

  • distance: 50 searches within 50 miles; any accepted value above 50 uses a broad 5,000-mile range.
  • Posting age up to 1 day uses 1 day, up to 5 days uses 5 days, up to 10 days uses 10 days, and older values use 30 days.
  • job_type accepts fulltime, parttime, or contract.
  • remote_only: true restricts results to remote listings.
  • currency converts available salary values after collection and never filters jobs.

Example US input

{
"keyword": "Software Engineer",
"country": "United States",
"max_results": 500,
"location": "Austin, TX",
"distance": 50,
"posted_since": "7 days",
"job_type": "contract",
"remote_only": true,
"currency": "USD"
}

Example Ireland input

{
"keyword": "Data Analyst",
"country": "Ireland",
"max_results": 500,
"location": "Dublin",
"currency": "EUR"
}

Output Data Schema

Complete 41-field job record

Every dataset item uses the fields below. Nullable fields make missing source data explicit.

Run and source fields

FieldTypeDescription
processorstring or nullApify Actor URL that processed the record
processed_atstring or nullUTC processing timestamp
platformstring or nullSource platform, normally ZipRecruiter
platform_urlstring or nullZipRecruiter job listing URL
official_urlstring or nullEmployer's original listing URL when available

Core job fields

FieldTypeDescription
titlestring or nullJob title
posted_datestring or nullPosting date or relative age when available
valid_throughstring or nullClosing or expiration date when available
locationobject or nullStructured location with raw and standardized values
applicant_countinteger or nullApplicant count when available
is_remoteboolean or nullRemote or hybrid signal identified in the listing
descriptionstring or nullJob description and requirements

Classification fields

FieldTypeDescription
job_typestring or nullEmployment type parsed from the listing
job_levelstring or nullCareer or seniority level when available
job_functionstring or nullDepartment or job function
listing_typestring or nullListing classification when available
skillsstring or nullSkills and attributes identified for the role
work_from_homestring or nullRemote or hybrid arrangement when identified
vacancy_countinteger or nullNumber of openings when available
experience_rangestring or nullExperience requirement when available
easy_applyboolean or nullWhether direct application is available

Salary fields

FieldTypeDescription
salary_periodstring or nullPay period, such as monthly or yearly
salary_minimumnumber or nullMinimum disclosed salary
salary_maximumnumber or nullMaximum disclosed salary
salary_currencystring or nullISO currency code

Employer fields

FieldTypeDescription
company_namestring or nullHiring company name
company_typestring or nullCompany ownership type when available
company_foundedinteger or nullFounding year when available
company_industrystring or nullIndustry or sector
company_urlstring or nullZipRecruiter or employer profile URL
company_websitestring or nullOfficial company website
company_logostring or nullCompany logo URL
company_addressesstring or nullCompany address text
company_revenuestring or nullRevenue range when available
company_descriptionstring or nullCompany overview
company_ratingnumber or nullCompany rating when available
employee_countstring or nullEmployee range when available
review_countinteger or nullReview count when available

Public contact fields

FieldTypeDescription
emailsarray or nullPublic company or hiring emails when discoverable
phonesarray or nullPublic company or hiring phone numbers when discoverable
social_linksobject or nullPublic company social URLs grouped by platform

Integration Examples & Options

The verified Actor ID is hlBPHbTwOaik20WFR.

Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("hlBPHbTwOaik20WFR").call(
run_input={
"keyword": "Software Engineer",
"country": "United States",
"max_results": 100,
}
)
items = client.dataset(run["defaultDatasetId"]).list_items().items

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('hlBPHbTwOaik20WFR').call({
keyword: 'Software Engineer',
country: 'United States',
max_results: 100,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();

Direct API request

curl -X POST "https://api.apify.com/v2/acts/hlBPHbTwOaik20WFR/runs?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"keyword":"Software Engineer","country":"United States","max_results":100}'

Make and n8n

Use the Apify integration in Make or n8n, select Actor ID hlBPHbTwOaik20WFR, pass the same input object, wait for the run to finish, and read the default dataset items.

  • Open the Actor's API tab for generated requests in other supported languages.
  • Connect completed runs to webhooks or another Apify integration.
  • Read the default dataset directly or export it in an Apify-supported format.

JSON-LD Metadata

{
"@context": "https://schema.org",
"@graph": [
{
"@type": "SoftwareApplication",
"@id": "https://apify.com/agentx/ziprecruiter-jobs-scraper#software",
"name": "ZipRecruiter Jobs Scraper",
"description": "Scrape ZipRecruiter job listings across Canada, Ireland, the United Kingdom, and the United States and export 41 structured fields when available.",
"applicationCategory": "BusinessApplication",
"applicationSubCategory": "Job Scraping API",
"operatingSystem": "Web, Cloud",
"url": "https://apify.com/agentx/ziprecruiter-jobs-scraper",
"dateModified": "2026-07-19",
"featureList": [
"Searches four supported ZipRecruiter markets",
"Returns a consistent 41-field dataset",
"Applies remote, distance, posting-age, and job-type filters only in the US and Canada",
"Exports results through Apify datasets and integrations"
],
"author": { "@id": "https://apify.com/agentx#organization" },
"publisher": { "@id": "https://apify.com#organization" }
},
{
"@type": "Organization",
"@id": "https://apify.com/agentx#organization",
"name": "AgentX",
"url": "https://apify.com/agentx",
"sameAs": ["https://apify.com/agentx", "https://t.me/AiAgentApi"]
},
{
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "Which ZipRecruiter markets can I select?",
"acceptedAnswer": { "@type": "Answer", "text": "Canada, Ireland, the United Kingdom, and the United States." }
},
{
"@type": "Question",
"name": "Do all filters work in every market?",
"acceptedAnswer": { "@type": "Answer", "text": "No. Location works in all four. Remote, distance, posting age, and job type work only for the US and Canada." }
},
{
"@type": "Question",
"name": "Why does a 7-day posting age use a 10-day window?",
"acceptedAnswer": { "@type": "Answer", "text": "ZipRecruiter uses 1, 5, 10, and 30-day search windows, so seven days rounds up to ten days." }
},
{
"@type": "Question",
"name": "How much does 1,000 results cost?",
"acceptedAnswer": { "@type": "Answer", "text": "At the FREE tier, 1,000 results cost $4.10 plus the Actor start event. At GOLD, PLATINUM, or DIAMOND, 1,000 results cost $3.69 plus the Actor start event." }
}
]
},
{
"@type": "HowTo",
"name": "How to export ZipRecruiter jobs with ZipRecruiter Jobs Scraper",
"step": [
{ "@type": "HowToStep", "position": 1, "name": "Configure the search", "text": "Enter a keyword, choose one of four countries, set the maximum results, and add only filters supported by that market." },
{ "@type": "HowToStep", "position": 2, "name": "Run the Actor", "text": "Click Start. Leave Location empty for a country-level search." },
{ "@type": "HowToStep", "position": 3, "name": "Use the dataset", "text": "Preview or export the default dataset, or connect the completed run to an Apify integration." }
]
},
{
"@type": "BreadcrumbList",
"itemListElement": [
{ "@type": "ListItem", "position": 1, "name": "Apify", "item": "https://apify.com" },
{ "@type": "ListItem", "position": 2, "name": "AgentX", "item": "https://apify.com/agentx" },
{ "@type": "ListItem", "position": 3, "name": "ZipRecruiter Jobs Scraper", "item": "https://apify.com/agentx/ziprecruiter-jobs-scraper" }
]
}
]
}

Pricing & Cost Calculator

Pay-per-event pricing

Event or tierPriceBilling unit
Actor start$0.01Run start event; the count depends on Actor memory, with a minimum of one
FREE result$0.00410One default dataset result
BRONZE result$0.00396One default dataset result
SILVER result$0.00383One default dataset result
GOLD result$0.00369One default dataset result
PLATINUM result$0.00369One default dataset result
DIAMOND result$0.00369One default dataset result

Example costs at the default memory setting

PlanResultsResult costActor startEstimated total
FREE500$2.05$0.01$2.06
FREE1,000$4.10$0.01$4.11
FREE5,000$20.50$0.01$20.51
GOLD or higher1,000$3.69$0.01$3.70

Actual cost depends on the number of results produced, the user's plan, and the number of Actor start events charged for the selected memory.


Use Cases & Applications

Recruiting and multi-market hiring intelligence

  • Track open roles by title, employer, country, city, state, or region.
  • Compare hiring activity across US, Canada, Ireland, and UK localized searches.
  • Build sourcing or ATS research datasets with stable field names.

Workforce and compensation research

  • Compare available salary ranges by role and location.
  • Analyze extracted employment type, posting age, remote signals, and employer attributes.
  • Normalize available salary values into a selected currency.

Job products and automation

  • Populate a job board or internal opportunity feed.
  • Schedule recurring labor-market snapshots.
  • Send normalized datasets to a CRM, warehouse, dashboard, webhook, or automation platform.

FAQ

Which markets can I select?

Canada, Ireland, the United Kingdom, and the United States.

Do all filters work in every market?

No. Location works in all four. Remote, distance, posting age, and job type work only for the US and Canada.

Which job types can I select?

For the US and Canada: fulltime, parttime, and contract. These controls are not available for Ireland or the UK.

Why does a 7-day posting age use a 10-day window?

ZipRecruiter uses 1, 5, 10, and 30-day windows for this search. Seven days therefore rounds up to the 10-day window.

What happens when location is empty?

The Actor performs a country-level search and does not invent a city or region. Canada remains explicitly scoped to Canada.

Does currency filter jobs?

No. currency converts available salary values after collection and does not affect the ZipRecruiter search.

Does every result include salary and employer details?

No. Those values remain null when ZipRecruiter or the employer does not expose reliable data.


Trust & Data Responsibility

  • Verified inputs: every documented filter is supported within its stated market boundary.
  • Transparent billing: the Actor start event and every plan's result price are listed above.
  • Explicit nullability: missing source values are not presented as verified facts.
  • No ZipRecruiter credentials requested: the input schema does not ask for a username, password, cookie, or token.

ZipRecruiter Jobs Scraper is intended for lawful collection and analysis of publicly accessible job-listing data. You are responsible for reviewing ZipRecruiter's terms, applicable privacy and database laws, employment-data rules, and the permitted use of contact information in each jurisdiction. This documentation is not legal advice.


Enrich Your Workflow

Support & Community

Last Updated: 2026-07-19