ZipRecruiter Job Search Results & Salary Scraper
Extract job postings from ZipRecruiter.com search results - title, company, location, parsed salary range, city, state, and apply URL. Search by keyword and location or supply your own filtered search URL.
Open in Apify Store$0.99 / 1K on Free
Short answer
ZipRecruiter Job Search Results & Salary Scraper is an Apify Store Actor for ZipRecruiter data that returns 76 published output fields, including url, title, company, companyUrl. It lists $0.99 per 1,000 results on the Free plan (pay per event), $0.49 on the Business plan. It takes 19 input settings, none required. It covers 6 of the 6 core ZipRecruiter fields this site tracks. Last updated Nov 2, 2026.
From the public Store listing and published build schema, synced 2026-11-12.What it returns
76 fields from the published dataset schema. Export as JSON, CSV or Excel, or read the dataset through the Apify API.
typejob_ziprecruiter or salary_ziprecruiterrecordTypejob or salaryidJob identity: open seat id, listing key or canonical URLjidZipRecruiter job id from the jid parameterlistingKeyZipRecruiter listing keyopenSeatIdZipRecruiter open seat idmatchIdZipRecruiter match idurlCanonical job page URLtitleJob titlecompanyHiring company namecompanyIdZipRecruiter company idcompanyUrlCompany profile URLcompanyLogoCompany logo image URLcompanyWebsiteCompany website URLcompanyIndustriesCompany industriescompanySizeCompany size labelcompanyHqLocationCompany headquarterscompanyRatingBreakroom company ratingcompanyAboutCompany descriptioncompanyFoundedYearCompany founding year when shownlocationDisplay locationcityCitystateState or region codecountryCountry namecountryCodeISO country codepostalCodePostal codecountyCountylocationIdZipRecruiter location idworkplaceTypesonsite, remote or hybridisRemoteTrue when the job is remote
Show the other 46 fields
isHybridTrue when the job is hybridsalarySalary text as shownsalaryMinMinimum pay in the displayed periodsalaryMaxMaximum pay in the displayed periodsalaryPeriodhour, day, week, month or yearsalaryCurrencyPay currency codesalaryMinAnnualAnnualized minimum paysalaryMaxAnnualAnnualized maximum paysalarySourceprovided, parsed, predicted or missingisEstimatedSalaryTrue when the pay is estimateddescriptionFull description as plain textdescriptionHtmlFull description as HTMLshortDescriptionSearch-card teaseremploymentTypesfull_time, part_time, contract and so onbenefitsBenefits shown for the jobeducationLevelsEducation expectationsexperienceMonthsRequired experience in monthspostedAtOriginal posting timestamprollingPostedAtRolling refresh timestamppostedAgoHuman posting agevalidThroughPosting expiry dateisActiveWhether the listing is activeisNewWhether ZipRecruiter marks the listing newapplyUrlApply URL, decoded to the employer when externalapplyTypeexternal, quick_apply or internaldirectApplyTrue for 1-Click ApplyshareUrlShort share URLskillsSkills listed in JSON-LDoccupationalCategoryO*NET occupational categoryindustryJob industry from JSON-LDinputUrlSearch or job URL that produced the rowsearchQueryKeyword that produced the rowdescriptionFetchFailedTrue when a requested description could not be fetchedscrapedAtISO scrape timestampsalaryRoleRole title for a salary rowsalaryLocationLocation for a salary rowsalaryMedianMedian annual paysalaryP1010th percentile annual paysalaryP2525th percentile annual paysalaryP7575th percentile annual paysalaryP9090th percentile annual paysalaryAverageAverage annual pay from the FAQsalaryAverageHourlyAverage hourly pay from the FAQsalaryUrlSalary page URLrelatedTitlesRelated job titles and their average annual paytopPayingCitiesCities with the highest pay for the role
How it differs from the other ZipRecruiter Actors
Among the 2 catalogue Actors for ZipRecruiter with a published schema, only this one returns isNew, skills, occupationalCategory.
Input
| Setting | Type | Required | Default | What it does |
|---|---|---|---|---|
| mode | string | No | search | Search job postings, scrape URLs you already have, or get salary benchmarks for a role and location. |
| searchQueries | array | No | [] | Job titles or keywords, e.g. `registered nurse` or `software engineer`. Every keyword is searched in every location below. |
| locations | array | No | ["United States"] | Cities, states, ZIP codes or `United States` for a nationwide search. Every keyword is searched in every location. |
| companyName | string | No | – | Only jobs from this employer, e.g. `Visa`. Leave the keywords empty to browse every open role at the company. |
| startUrls | array | No | [] | Search, job, company or salary URLs. Use this with `Scrape specific URLs`; filters already in a search URL are kept. |
| jobType | string | No | any | Employment-type filter for keyword searches. |
| workplace | string | No | any | Work arrangement for keyword searches. |
| experienceLevels | array | No | [] | Restrict to one or more seniority levels. Empty means no filter. |
| daysPosted | integer | No | 0 | Only jobs posted within the last N days. 0 means any time. |
| radiusMiles | integer | No | 0 | Distance around each location. 0 uses ZipRecruiter's default. |
Show the other 9 settings
| Setting | Type | Required | Default | What it does |
|---|---|---|---|---|
| salaryMin | integer | No | 0 | Only jobs whose advertised annual pay reaches this amount. 0 means no lower bound. |
| salaryMax | integer | No | 0 | Only jobs whose advertised annual pay stays at or below this amount. Best effort; 0 means no upper bound. |
| fetchDescriptions | boolean | No | true | Fetch each posting's detail page for the complete description, benefits, company profile and apply details. Off gives faster card-only rows. |
| includeCompanyProfile | boolean | No | true | Add industry, website, size, headquarters, rating and about text from the posting's company data. |
| maxItems | integer | No | 50 | Maximum number of job or salary records to return across all searches and URLs. |
| maxSearches | integer | No | 100 | Cap on keyword × location combinations in search mode. |
| salaryRoles | array | No | [] | Job titles for salary benchmarks, e.g. `registered nurse` or `data analyst`. Used in salary mode. |
| salaryLocations | array | No | ["United States"] | Cities, states or `United States` for salary benchmarks. Every role is looked up in every location. |
| salaryUrls | array | No | [] | Exact ZipRecruiter `/Salaries/...` URLs. When set, these are used instead of role and location pairs. |
Example input
Built from the input form's published example values and defaults.
{
"mode": "search",
"searchQueries": [
"registered nurse"
],
"locations": [
"Chicago, IL"
],
"startUrls": [],
"jobType": "any",
"workplace": "any",
"experienceLevels": [],
"daysPosted": 0,
"radiusMiles": 0,
"salaryMin": 0,
"salaryMax": 0,
"fetchDescriptions": false,
"includeCompanyProfile": false,
"maxItems": 3,
"maxSearches": 1,
"salaryRoles": [
"registered nurse"
],
"salaryLocations": [
"Chicago, IL"
],
"salaryUrls": []
} Run it from code or an AI agent
The same run through the Apify API, with the example input. You need an Apify API token; the run is billed to your account at the Store price.
Python
from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run_input = {
"mode": "search",
"searchQueries": [
"registered nurse"
],
"locations": [
"Chicago, IL"
],
"startUrls": [],
"jobType": "any",
"workplace": "any",
"experienceLevels": [],
"daysPosted": 0,
"radiusMiles": 0,
"salaryMin": 0,
"salaryMax": 0,
"fetchDescriptions": False,
"includeCompanyProfile": False,
"maxItems": 3,
"maxSearches": 1,
"salaryRoles": [
"registered nurse"
],
"salaryLocations": [
"Chicago, IL"
],
"salaryUrls": []
}
run = client.actor("vexaloom-labs/ziprecruiter-job-search-results-and-salary-scraper").call(run_input=run_input)
if run is None:
raise RuntimeError("The Actor run was not found.")
for item in client.dataset(run.default_dataset_id).iterate_items():
print(item) pip install apify-client
JavaScript
import { ApifyClient } from "apify-client";
const client = new ApifyClient({ token: "<YOUR_APIFY_TOKEN>" });
const input = {
"mode": "search",
"searchQueries": [
"registered nurse"
],
"locations": [
"Chicago, IL"
],
"startUrls": [],
"jobType": "any",
"workplace": "any",
"experienceLevels": [],
"daysPosted": 0,
"radiusMiles": 0,
"salaryMin": 0,
"salaryMax": 0,
"fetchDescriptions": false,
"includeCompanyProfile": false,
"maxItems": 3,
"maxSearches": 1,
"salaryRoles": [
"registered nurse"
],
"salaryLocations": [
"Chicago, IL"
],
"salaryUrls": []
};
const run = await client.actor("vexaloom-labs/ziprecruiter-job-search-results-and-salary-scraper").call(input);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items); npm install apify-client
cURL
curl -X POST "https://api.apify.com/v2/actors/vexaloom-labs~ziprecruiter-job-search-results-and-salary-scraper/run-sync-get-dataset-items" -H "Authorization: Bearer $APIFY_TOKEN" -H "Content-Type: application/json" -d '{"mode":"search","searchQueries":["registered nurse"],"locations":["Chicago, IL"],"startUrls":[],"jobType":"any","workplace":"any","experienceLevels":[],"daysPosted":0,"radiusMiles":0,"salaryMin":0,"salaryMax":0,"fetchDescriptions":false,"includeCompanyProfile":false,"maxItems":3,"maxSearches":1,"salaryRoles":["registered nurse"],"salaryLocations":["Chicago, IL"],"salaryUrls":[]}' Waits for the run and returns the dataset items (runs over 300 seconds return HTTP 408; start an async run instead).
MCP (AI agents)
{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=vexaloom-labs/ziprecruiter-job-search-results-and-salary-scraper",
"headers": {
"Authorization": "Bearer <YOUR_APIFY_TOKEN>"
}
}
}
} Adds this Actor as a tool in an MCP client that takes a remote server URL (Cursor, VS Code, Claude Code) through Apify's hosted MCP server. OAuth sign-in also works without the header. Clients that only start local servers can wrap the URL with npx mcp-remote.
What a run costs
The result rate falls on higher Apify plans. Each figure is the published per-result rate times the number of results.
| Apify plan | Per 1,000 | 10,000 results | 100,000 results |
|---|---|---|---|
| Free plan | $0.99 | $9.90 | $99 |
| Starter plan | $0.82 | $8.20 | $82 |
| Scale plan | $0.66 | $6.60 | $66 |
| Business plan | $0.49 | $4.90 | $49 |
- Every run also has a start event, charged per GB of memory (minimum one): $0.10 on Free, $0.03 on Business. At its default memory of 4 GB a run starts at $0.40 on Free. Fewer, larger runs keep this small.
- The Free plan includes $5 of monthly usage (Apify pricing, checked 2026-11-11); at the Free rate that covers at most about 5,050 results, less start events and platform usage.
- Worked example: 10,000 results in one run on the Free plan cost $10.30 ($9.90 for results + $0.40 start), plus Apify platform usage (compute), billed separately by Apify.
- Pay per event. Platform usage (compute) is billed by Apify on top of the event prices. Compare other tools in the cost estimator.
Where it fits among ZipRecruiter routes
It ranks 2 of 2 catalogue Actors for ZipRecruiter on the published formula (fields, price, reliability, freshness). Its line is highlighted on the map.
- 1 ZipRecruiter Jobs with Full Description Extractor 54 output fields, pay per event 6 of 6 core fields
$0.99 / 1K - 2 ZipRecruiter Job Search Results & Salary Scraper 76 output fields, pay per event 6 of 6 core fields
$0.99 / 1K - + 7 other Store tools, combined Reference only 6 of 6 core fields
from $0.99 / 1K - API ZipRecruiter partner APIs Partner only fields not compared
Stops are fields. A ring means the field is in that route's published output schema; no ring means the line passes without it. Bold labels are the core fields for this website, the rest are fields that differ between routes. A white capsule means every data line stops there. The red line is the official API; its field coverage is not compared. A crossed red line means there is no open official API.
Official route: ZipRecruiter partner APIs
Partner only. ZipRecruiter offers partner and distribution integrations. There is no open public job search API.
Partner terms.
Other Store tools for ZipRecruiter
Reference only, from their public listings.
| Tool | Fields | Price / 1K |
|---|---|---|
| Job Scraper for ZipRecruiter | 42 | $0.99 |
| ZipRecruiter Jobs Scraper | 7 | $0.99 |
| ZipRecruiter Jobs Scraper | 16 | $2.50 |
| Scraper for ZipRecruiter | 56 | $3.00 |
| ZipRecruiter Scraper | 16 | $2.50 |
What people use it for
- Find job postings
- Analyze salary benchmarks
- Collect company profiles
Other catalogue Actors for ZipRecruiter
ZipRecruiter Jobs with Full Description Extractor
Search ZipRecruiter by keyword and location, or a direct search URL, and get each job's full description text alongside company, location, salary,…
Similar Actors
Bayt.com MENA Job Listing & Salary Scraper
Search Bayt.com job listings across Middle East and North Africa countries by keyword, location, career level, and employment type. Get titles,…
Glassdoor Job Listings Salary & Rating Scraper
Pull Glassdoor job listings by keyword and location or from a single company's jobs page, with salary estimates, employer ratings, Easy Apply…
HelloWork France Job Listings & Salary Filter Scraper
Search HelloWork.com by keyword, region, city, sector or job function, and filter by contract type, remote-work frequency, experience level,…
Indeed Global Job Scraper with Company Salary Reports
Search Indeed jobs across 62 countries by keyword, location, or filters for job type, remote status, experience, education, and salary. Returns…
JobStreet Southeast Asia Job Search by Keyword & Country
Search JobStreet across Singapore, Malaysia, the Philippines, Indonesia and Thailand by keyword or country, with salary, job type and a direct…
LinkedIn Jobs Scraper with Salary & Company Enrichment
Search public LinkedIn job listings by keyword, location, salary band, job type and more, with full descriptions, parsed salary ranges, inferred…
Questions people ask
How much does ZipRecruiter Job Search Results & Salary Scraper cost?
The published result rate depends on your Apify plan: $0.99 per 1,000 on Free, $0.82 per 1,000 on Starter, $0.66 per 1,000 on Scale, $0.49 per 1,000 on Business. So 10,000 results cost about $9.90 on the Free plan and $4.90 on Business, plus a start fee of $0.10 per run per GB of memory on Free. Platform usage is billed separately.
What data does ZipRecruiter Job Search Results & Salary Scraper return?
Its published output schema lists 76 fields: type, recordType, id, jid, listingKey, openSeatId, matchId, url, title, company, companyId, companyUrl, and 64 more. A listed field is not guaranteed to be filled in every row.
What input does ZipRecruiter Job Search Results & Salary Scraper need?
No input is strictly required; the defaults run as is. Common settings: mode, searchQueries, locations, companyName, startUrls, jobType.
What are the alternatives to ZipRecruiter Job Search Results & Salary Scraper for ZipRecruiter?
2 catalogue Actors cover ZipRecruiter. Close alternatives: ZipRecruiter Jobs with Full Description Extractor. The ZipRecruiter page compares all of them field by field.
How do I run ZipRecruiter Job Search Results & Salary Scraper from Python or the API?
Use the Apify API client: in Python, ApifyClient(token).actor("vexaloom-labs/ziprecruiter-job-search-results-and-salary-scraper").call(run_input=...), then read the run's default dataset (run.default_dataset_id); in JavaScript the same call is client.actor("vexaloom-labs/ziprecruiter-job-search-results-and-salary-scraper").call(input). Without a client, POST the input JSON to https://api.apify.com/v2/actors/vexaloom-labs~ziprecruiter-job-search-results-and-salary-scraper/run-sync-get-dataset-items with your API token. Ready-to-paste code with the example input is on this page.
Sources
- ZipRecruiter Job Search Results & Salary Scraper on Apify Store
- Published build with input and output schema (JSON)
- ZipRecruiter partner APIs documentation
Cite this page
Scraper Finder. "ZipRecruiter Job Search Results & Salary Scraper." https://scraperfinder.com/catalogue/ziprecruiter-job-search-results-and-salary-scraper/ (data checked 2026-11-12).
Run ZipRecruiter Job Search Results & Salary Scraper
$0.99 per 1,000 results. Paste the example input above, set your ZipRecruiter query, then export the dataset. Still choosing? Compare every ZipRecruiter route.