Ziprecruiter Scraper avatar

Ziprecruiter Scraper

Pricing

$24.99/month + usage

Go to Apify Store
Ziprecruiter Scraper

Ziprecruiter Scraper

ZipRecruiter job scraper with search, filters, and detail enrichment. Extract titles, salaries, companies, locations, descriptions, and apply links across 13 countries. Filter by job type, posting date, and salary. Get 50+ structured fields per job including company profile and GPS coordinates.

Pricing

$24.99/month + usage

Rating

0.0

(0)

Developer

SilentFlow

SilentFlow

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

by SilentFlow

Extract job listings, salaries, companies, locations, descriptions, and application links from ZipRecruiter, by URL or search query, at scale.

โœจ Why use this scraper?

  • ๐Ÿ” Search by keyword + location: Find jobs by title, company, or skill with geographic targeting
  • ๐ŸŽฏ Filters & sorting: Filter by job type, posting date, salary, sort by relevance, date, or salary
  • ๐Ÿ“Š Rich structured data: 30+ fields per job including salary range, GPS coordinates, benefits, and apply link
  • โšก Fast concurrent scraping: Configurable parallel workers for high-throughput data collection
  • ๐Ÿ”— Flexible input: Scrape by search query or paste ZipRecruiter URLs directly

๐ŸŽฏ Use cases

IndustryApplication
Job Market AnalyticsTrack hiring trends, salary ranges, and demand by role across cities
Recruitment IntelligenceMonitor competitor job postings and compensation packages
Career ResearchAggregate job opportunities matching specific skills and locations
HR & StaffingBuild pipelines of open positions for staffing agencies
Salary BenchmarkingCompare salary data across regions and employment types
Market ResearchAnalyze which companies are hiring and in what roles

๐Ÿ“ฅ Input parameters

URL Scraping

ParameterTypeDescription
startUrlsarrayZipRecruiter job URLs or search result URLs
ParameterTypeDescription
searchesarraySearch queries (e.g. "software engineer", "data analyst")
locationstringLocation for search (e.g. "New York, NY", "Remote"), required when using searches

Sorting & Filtering

ParameterTypeDefaultDescription
sortstringrelevanceSort order: relevance, date, distance, salary
jobTypestring,Employment type: full_time, part_time, contract, internship, temporary
postedWithinstringanytimeDate filter: today, 3days, week, month, anytime
salaryRangestring,Minimum salary filter (e.g. "50000" for $50K+)

Limits

ParameterTypeDefaultDescription
maxItemsinteger50Maximum total jobs to return
maxPagesinteger5Maximum search result pages per query (~20 jobs per page)

Options

ParameterTypeDefaultDescription
includeDetailsbooleantrueFetch each job detail page for full data (description, salary, benefits, coordinates)

Advanced

ParameterTypeDefaultDescription
concurrencyinteger5Parallel workers for detail page fetching
requestTimeoutinteger30Seconds per request
debugModebooleanfalseEnable verbose logging

Proxy

ParameterTypeDefaultDescription
proxyobjectResidentialProxy configuration for scraping

๐Ÿ“Š Output data

Job example

{
"id": "503842941",
"url": "https://www.ziprecruiter.com/jobs/503842941-software-engineer-a-google",
"title": "Software Engineer",
"description": "<p>We are looking for a Software Engineer to join our team...</p>",
"company": "Google",
"companyUrl": "https://www.google.com",
"companyLogo": "https://photos.ziprecruiter.com/google-logo.png",
"location": "New York, NY",
"city": "New York",
"state": "NY",
"country": "US",
"postalCode": "10001",
"latitude": 40.7128,
"longitude": -74.006,
"salaryMin": 120000,
"salaryMax": 180000,
"salaryInterval": "YEAR",
"salaryCurrency": "USD",
"salaryText": "$120,000 - $180,000/yr",
"benefits": ["Health insurance", "401(k)", "Paid time off"],
"employmentType": "FULL_TIME",
"industry": "Technology",
"category": "Software Development",
"skills": "",
"experienceRequirements": "",
"postedDate": "2026-02-25",
"validThrough": "2026-03-25",
"postedHumanDate": "3 days ago",
"directApply": true,
"applyUrl": "https://www.ziprecruiter.com/jobs/apply/...",
"scrapedAt": "2026-02-28T18:45:10Z",
"dataType": "job"
}

๐Ÿ—‚๏ธ Data fields

CategoryFields
Identifiersid, url
Job Infotitle, description, company, companyUrl, companyLogo
Locationlocation, city, state, country, postalCode
Coordinateslatitude, longitude
CompensationsalaryMin, salaryMax, salaryInterval, salaryCurrency, salaryText
Benefitsbenefits
EmploymentemploymentType, industry, category, skills, experienceRequirements
DatespostedDate, validThrough, postedHumanDate
ApplicationdirectApply, applyUrl
MetascrapedAt, dataType

๐Ÿš€ Examples

Search for jobs in New York

{
"searches": ["software engineer"],
"location": "New York, NY",
"maxItems": 50,
"maxPages": 3
}

Full-time jobs posted this week

{
"searches": ["data analyst"],
"location": "San Francisco, CA",
"jobType": "full_time",
"postedWithin": "week",
"sort": "date",
"maxItems": 100
}

High-salary remote jobs

{
"searches": ["machine learning engineer"],
"location": "Remote",
"salaryRange": "150000",
"maxItems": 50
}

Scrape a ZipRecruiter search URL

{
"startUrls": [
{ "url": "https://www.ziprecruiter.com/jobs/search?search=nurse&location=Chicago%2C+IL" }
],
"maxItems": 100,
"includeDetails": true
}

๐Ÿ’ป Integrations

Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run_input = {
"searches": ["software engineer"],
"location": "New York, NY",
"sort": "date",
"maxItems": 50,
}
run = client.actor("silentflow/ziprecruiter-scraper").call(run_input=run_input)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["title"], item["company"], item["salaryText"])

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });
const run = await client.actor('silentflow/ziprecruiter-scraper').call({
searches: ['software engineer'],
location: 'New York, NY',
sort: 'date',
maxItems: 50,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach(item => console.log(item.title, item.company, item.salaryText));

๐Ÿ“ˆ Performance & limits

MetricValue
Fields per job30+
Jobs per search page~20
Max pages per search queryConfigurable (default: 5)
ProxyConfigurable (residential recommended)

๐Ÿ’ก Tips for best results

  1. Use includeDetails: true to get the full dataset, description, structured salary, benefits, GPS coordinates, and apply link
  2. Combine filters: use jobType, postedWithin, and salaryRange together to get exactly what you need
  3. Location is required for searches: always provide location when using the searches parameter
  4. Start small: set maxItems: 10 for your first run to verify the output format before scaling up
  5. Use postedWithin: "week" to focus on fresh job listings with active applications

โ“ FAQ

Q: What types of ZipRecruiter URLs are supported? A: Job detail pages (/jobs/...) and search result pages (/jobs/search?...).

Q: Do I need a ZipRecruiter account or API key? A: No. The scraper works without any ZipRecruiter credentials.

Q: What's the difference between includeDetails: true and false? A: With includeDetails: false, search results return basic info (title, company, location, URL). With true, each job gets a full detail fetch, adding description, structured salary, benefits, coordinates, and more.

Q: Can I search for remote jobs? A: Yes. Set location to "Remote" to find remote positions.

Q: How many results can I get per search? A: ZipRecruiter typically shows ~20 results per page with many pages available. Use maxPages to control pagination depth.

๐Ÿ“ฌ Support

  • Feature requests: Let us know what you need
  • Custom solutions: Contact us for enterprise integrations or high-volume needs

Check out our other scrapers: SilentFlow on Apify