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.
ZipRecruiter JobsAutomationLead generation

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_ziprecruiter
  • recordTypejob or salary
  • idJob identity: open seat id, listing key or canonical URL
  • jidZipRecruiter job id from the jid parameter
  • listingKeyZipRecruiter listing key
  • openSeatIdZipRecruiter open seat id
  • matchIdZipRecruiter match id
  • urlCanonical job page URL
  • titleJob title
  • companyHiring company name
  • companyIdZipRecruiter company id
  • companyUrlCompany profile URL
  • companyLogoCompany logo image URL
  • companyWebsiteCompany website URL
  • companyIndustriesCompany industries
  • companySizeCompany size label
  • companyHqLocationCompany headquarters
  • companyRatingBreakroom company rating
  • companyAboutCompany description
  • companyFoundedYearCompany founding year when shown
  • locationDisplay location
  • cityCity
  • stateState or region code
  • countryCountry name
  • countryCodeISO country code
  • postalCodePostal code
  • countyCounty
  • locationIdZipRecruiter location id
  • workplaceTypesonsite, remote or hybrid
  • isRemoteTrue when the job is remote
Show the other 46 fields
  • isHybridTrue when the job is hybrid
  • salarySalary text as shown
  • salaryMinMinimum pay in the displayed period
  • salaryMaxMaximum pay in the displayed period
  • salaryPeriodhour, day, week, month or year
  • salaryCurrencyPay currency code
  • salaryMinAnnualAnnualized minimum pay
  • salaryMaxAnnualAnnualized maximum pay
  • salarySourceprovided, parsed, predicted or missing
  • isEstimatedSalaryTrue when the pay is estimated
  • descriptionFull description as plain text
  • descriptionHtmlFull description as HTML
  • shortDescriptionSearch-card teaser
  • employmentTypesfull_time, part_time, contract and so on
  • benefitsBenefits shown for the job
  • educationLevelsEducation expectations
  • experienceMonthsRequired experience in months
  • postedAtOriginal posting timestamp
  • rollingPostedAtRolling refresh timestamp
  • postedAgoHuman posting age
  • validThroughPosting expiry date
  • isActiveWhether the listing is active
  • isNewWhether ZipRecruiter marks the listing new
  • applyUrlApply URL, decoded to the employer when external
  • applyTypeexternal, quick_apply or internal
  • directApplyTrue for 1-Click Apply
  • shareUrlShort share URL
  • skillsSkills listed in JSON-LD
  • occupationalCategoryO*NET occupational category
  • industryJob industry from JSON-LD
  • inputUrlSearch or job URL that produced the row
  • searchQueryKeyword that produced the row
  • descriptionFetchFailedTrue when a requested description could not be fetched
  • scrapedAtISO scrape timestamp
  • salaryRoleRole title for a salary row
  • salaryLocationLocation for a salary row
  • salaryMedianMedian annual pay
  • salaryP1010th percentile annual pay
  • salaryP2525th percentile annual pay
  • salaryP7575th percentile annual pay
  • salaryP9090th percentile annual pay
  • salaryAverageAverage annual pay from the FAQ
  • salaryAverageHourlyAverage hourly pay from the FAQ
  • salaryUrlSalary page URL
  • relatedTitlesRelated job titles and their average annual pay
  • topPayingCitiesCities 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

Input settings for ZipRecruiter Job Search Results & Salary Scraper
SettingTypeRequiredDefaultWhat 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
More input settings for ZipRecruiter Job Search Results & Salary Scraper
SettingTypeRequiredDefaultWhat 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.

Cost of ZipRecruiter Job Search Results & Salary Scraper results by Apify plan
Apify planPer 1,00010,000 results100,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.

Route diagram for ZipRecruiter dataZipRecruiter Jobs with Full Description Extractor: stops at 6 of the 10 fields shown; ZipRecruiter Job Search Results & Salary Scraper: stops at 6 of the 10 fields shown; Other Store tools (7): stops at 10 of the 10 fields shown; ZipRecruiter partner APIs: partner, field coverage not compared.ZipRecruitertitlecompanylocationsalarydescriptionurlemploymentTypechangeTypedatePostedcontactEmail12+API

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.

Official documentation

Other Store tools for ZipRecruiter

Reference only, from their public listings.

Other Store tools for ZipRecruiter
ToolFieldsPrice / 1K
Job Scraper for ZipRecruiter42$0.99
ZipRecruiter Jobs Scraper7$0.99
ZipRecruiter Jobs Scraper16$2.50
Scraper for ZipRecruiter56$3.00
ZipRecruiter Scraper16$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,…

6/6 core fields 54 output fields $0.99 per 1K

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,…

$0.99 per 1K

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…

15 output fields $0.99 per 1K

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,…

8 output fields $0.99 per 1K

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…

42 output fields $0.99 per 1K

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…

15 output fields $0.99 per 1K

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…

22 output fields $0.99 per 1K

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

Actor updated 2026-11-02 Data synced 2026-11-12
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.

Open in Apify Store