ZipRecruiter Scraper | $1 / 1k | Fast & Reliable
Pricing
$1.00 / 1,000 results
ZipRecruiter Scraper | $1 / 1k | Fast & Reliable
Extract structured ZipRecruiter job listings with companies, locations, compensation ranges, employment types, contacts and full descriptions. Built for hiring intelligence, labor-market research, and automated recruiting or analytics pipelines.
Pricing
$1.00 / 1,000 results
Rating
0.0
(0)
Developer
Fatih Tahta
Maintained by CommunityActor stats
3
Bookmarked
68
Total users
23
Monthly active users
29 days
Issues response
16 hours ago
Last modified
Categories
Share
ZipRecruiter Scraper
Slug: fatihtahta/ziprecruiter-scraper
Overview
ZipRecruiter Scraper collects structured job listing data from ZipRecruiter, including job titles, listing URLs, posting dates, company details, location details, compensation ranges, employment attributes, and application links. It is designed for teams that need repeatable, structured access to public job market data without manually reviewing search pages one by one. ZipRecruiter is one of the most widely used job marketplaces in the United States, which makes its listing data valuable for hiring analysis, employer research, market tracking, and enrichment workflows. This actor automates keyword-based collection with practical filters so runs stay consistent as your scope grows. The output is organized for practical downstream use in analytics tools, spreadsheets, ETL jobs, and internal reporting systems.
Why Use This Actor
- Market research and analytics teams: Track job volume, salary ranges, employer activity, location demand, and hiring patterns across roles, regions, and time windows.
- Product and content teams: Discover trending job titles, compare how employers describe similar roles, and identify demand signals for new pages, reports, or editorial content.
- Developers and data engineering teams: Feed structured job records into warehouses, dashboards, enrichment services, APIs, or recurring data pipelines without manual transformation.
- Lead generation and enrichment teams: Identify active hiring companies, enrich company profiles with hiring context, and connect job activity to outreach, sales, or recruiting workflows.
- Monitoring and competitive intelligence teams: Watch specific markets, employers, or role categories over time to detect changes in compensation, remote work mix, and competitor hiring activity.
Input Parameters
Provide one or more search queries and optional filters to control the scope of collection.
| Parameter | Type | Description | Default |
|---|---|---|---|
queries | string[] | Free-text job keywords such as software engineer, data analyst, or marketing manager. Each query can be combined with the optional filters below. | – |
location | string | Optional location applied to every query. You can use a ZIP code, city, state, or City, ST format such as New York, NY. | – |
location_remote | boolean | When true, forces ZipRecruiter remote search mode by overriding location to US and remote_options to only_remote. | false |
radius | string | Optional distance filter in miles. Allowed values: 5, 10, 25, 50, 100. | – |
remote_options | string | Optional work arrangement filter. Allowed values: "" (all remote/on-site), no_remote (on-site), hybrid, only_remote (remote). | – |
days | string | Optional date-posted filter. Allowed values: "" (posted anytime), 30, 10, 5, 1. | – |
refineByEmployment | string | Optional employment type filter. Allowed values: "" (all employment types), employment_type:full_time, employment_type:part_time, employment_type:contract, employment_type:temporary, employment_type:other. | – |
refineBySalary | integer | Optional minimum salary floor to include in query-based searches. | – |
refineBySalaryCeil | integer | Optional maximum salary ceiling to include in query-based searches. | – |
refineByApplyType | boolean | When true, limits results to listings where Quick Apply is available. | false |
refineByExperienceLevel | string[] | Optional experience level filter. Allowed values: no_experience, junior, mid, senior. You can provide one or more values. | – |
limit | integer | Maximum number of listings to save for each query or start URL seed. | 50000 |
Example Input
{"queries": ["software engineer","data analyst"],"location_remote": true,"days": "10","refineByApplyType": true,"limit": 1500}
Output
6.1 Output destination
The actor writes results to an Apify dataset as JSON records. And the dataset is designed for direct consumption by analytics tools, ETL pipelines, and downstream APIs without post-processing.
6.2 Record envelope (all items)
Every production record represents a single job listing and includes stable identifiers that can be normalized consistently in downstream systems.
- type (string, required): Recommended logical record category. Use
job. - id (string, required): Stable job identifier, available as
job.id. - url (string, required): Canonical job URL, available as
source.job_url.
Recommended idempotency key: type + ":" + id
Use record_id for deduplication and upserts when the same job appears in multiple searches, multiple locations, or repeated scheduled runs. The actor's internal runtime dedupe also preserves distinct seat-level jobs by preferring ZipRecruiter open-seat and listing identifiers before broader title or URL aliases.
6.3 Examples
Example: job (record_type = "job")
{"record_type": "job","record_id": "0b406c8b73d05511","source_context": {"source_id": "ziprecruiter_scraper","source": "ZipRecruiter","source_domain": "ziprecruiter.com","source_url": "https://www.ziprecruiter.com/c/Motion-Recruitment/Job/Java-Engineer-Banking-Iselin-Hybrid/-in-Iselin,NJ?jid=0b406c8b73d05511","search_results_url": "https://www.ziprecruiter.com/jobs-search?search=software+engineer&location=New+York%2C+NY","seed_type": "query","seed_value": "software engineer","search_query": "software engineer","page_number": 1,"scraped_at": "2026-03-16T06:02:18Z","enrichment_status": "success","external_ids": {"job_id": "0b406c8b73d05511","ziprecruiter_listing_key": "ywqwkkS7cBE__zoqkPyDLA","ziprecruiter_match_id": "019cf53c-efaa-7bbb-868e-2d9fbede3a30","ziprecruiter_open_seat_id": "0b406c8b73d05511"}},"entity": {"title": "Java Engineer / Banking / Iselin / Hybrid","name": "Java Engineer / Banking / Iselin / Hybrid","description": "Outstanding long-term contract opportunity! A well-known Financial Services Company is looking for a Java Software Engineer...","url": "https://www.ziprecruiter.com/c/Motion-Recruitment/Job/Java-Engineer-Banking-Iselin-Hybrid/-in-Iselin,NJ?jid=0b406c8b73d05511","status": "active","external_ids": {"job_id": "0b406c8b73d05511","ziprecruiter_listing_key": "ywqwkkS7cBE__zoqkPyDLA","ziprecruiter_match_id": "019cf53c-efaa-7bbb-868e-2d9fbede3a30","ziprecruiter_open_seat_id": "0b406c8b73d05511"}},"job": {"job_id": "0b406c8b73d05511","job_title": "Java Engineer / Banking / Iselin / Hybrid","description": "Outstanding long-term contract opportunity! A well-known Financial Services Company is looking for a Java Software Engineer...","description_html": "<div>Outstanding long-term contract opportunity! ...</div>","posted_at": "2026-01-15T17:33:33Z","rolling_posted_at": "2026-02-14T17:33:33Z","status": {"is_active": true}},"company": {"company_id": "KOwJGkdRvDNlur9AMC4w3HjpV+8=","company_name": "Motion Recruitment","company_url": "https://www.ziprecruiter.com/co/Motion-Recruitment/Jobs","company_website": "https://motionrecruitment.com","canonical_display_name": "motion recruitment","company_size": "501 - 1000 Employees","industries": ["Recruiting and Staffing Services"],"profile": {"uuid": "KOwJGkdRvDNlur9AMC4w3HjpV+8=","display_name": "Motion Recruitment"},"headquarters": {"display_name": "Boston, MA, US","country": "US","state": "MA","city": "Boston"}},"location": {"address": "Iselin, NJ US 08830","display_name": "Iselin, NJ US 08830","city": "Iselin","region": "NJ","postal_code": "08830","country": "United States","country_code": "US","state_code": "NJ"},"compensation": {"salary_min": 52.5,"salary_max": 72,"currency": "USD","pay_period": "Hour","salary_min_annual": 105000,"salary_max_annual": 144000},"employment": {"employment_types": ["Other"],"location_types": ["Hybrid"]},"content": {"descriptions": {"summary": "A well-known Financial Services Company is looking for a Java Software Engineer...","html": "<div>Outstanding long-term contract opportunity! ...</div>","text": "Outstanding long-term contract opportunity! A well-known Financial Services Company is looking for a Java Software Engineer..."}},"application": {"application_url": "https://www.ziprecruiter.com/job-redirect?match_token=...","button": {"destination": "External"}},"media": {"logo_url": "https://www.ziprecruiter.com/svc/fotomat/public-nosensitive-ziprecruiter-logos/company/5cef46a9.png"},"attributes": {"ziprecruiter": {"listing_key": "ywqwkkS7cBE__zoqkPyDLA","match_id": "019cf53c-efaa-7bbb-868e-2d9fbede3a30","open_seat_id": "0b406c8b73d05511"}}}
Field reference
Job record fields (record_type = "job")
- record_id (string, optional): Stable job identifier, usually a ZipRecruiter open-seat or listing identifier.
- source_context (object, required): Source, input seed, result page, enrichment status, and crawl provenance metadata. This includes fields such as
source_url,search_results_url,seed_type,seed_value,search_query,page_number,scraped_at, andexternal_ids. - entity (object, required): Core job identity:
title,name,description,url,status, and external identifiers. - job (object, optional): Job-specific details such as
job_id,job_title, full plain-text and HTML descriptions, status, posting timestamps, freshness flags, and ZipRecruiter-specific IDs. - company (object, optional): Employer name, IDs, profile details, jobs page, website, logo, headquarters, industries, social links, and similar companies when available.
- location (object, optional): Display location, city, region, country, postal code, remote flag, ZipRecruiter location ID, and resolution metadata.
- compensation (object, optional): Salary range, exact amount, currency, pay period, annualized range, and compensation metadata when exposed.
- employment (object, optional): Employment type, workplace type, remote flag, employment/location type codes, and benefit details.
- application (object, optional): Application URL, redirect URLs, canonical job page URL, current application state, and apply-button metadata.
- content.descriptions (object, optional): Full description text and HTML when Breakroom detail enrichment succeeds, plus the shorter search summary when available.
- benefits (array|object|string, optional): Benefits exposed by the listing or detail response.
- media (object, optional): Company logo and other media URLs.
- attributes.ziprecruiter (object, optional): Source-specific IDs and enrichment metadata that may be useful for troubleshooting or joins.
Many of the richer company, location, employment, content, and application fields are endpoint-dependent. Missing values should be treated as normal rather than as parsing failures. If detail enrichment is blocked or unavailable for a row, source_context.enrichment_status indicates that state and the record may contain only the shorter search-result description.
Data guarantees & handling
- Best-effort extraction: fields may vary by region, session, availability, and UI experiments.
- Optional fields: null-check in downstream code.
- Deduplication: recommend
record_type + ":" + record_id; runtime dedupe also prioritizes seat-level IDs before listing-level keys.
How to Run on Apify
- Open the Actor in Apify Console.
- Configure your search parameters, such as keywords, location, distance, remote preference, posting date, and employment filters.
- Set the maximum number of outputs to collect with the
limitfield. - Click Start and wait for the run to finish.
- Download results in JSON, CSV, Excel, or another supported export format.
Scheduling & Automation
Scheduling
Automated Data Collection
You can schedule this actor to run automatically so your dataset stays current without manual intervention. This is useful for recurring market reports, employer monitoring, enrichment jobs, and periodic analytics refreshes.
- Navigate to Schedules in Apify Console
- Create a new schedule (daily, weekly, or custom cron)
- Configure input parameters
- Enable notifications for run completion
- Optional: add webhooks for automated processing
Integration Options
- Webhooks: Trigger downstream actions when a run completes
- Zapier: Connect to 5,000+ apps without coding
- Make (Integromat): Build multi-step automation workflows
- Google Sheets: Export results to a spreadsheet
- Slack/Discord: Receive notifications and summaries
- Email: Send automated reports via email
Performance
Estimated run times:
- Small runs (< 1,000 outputs): ~2-3 minutes
- Medium runs (1,000-5,000 outputs): ~5-15 minutes
- Large runs (5,000+ outputs): ~15-30 minutes
Execution time varies based on filters, result volume, and how much information is returned per record.
Compliance & Ethics
Responsible Data Collection
This actor collects publicly available job listing and company information from ZipRecruiter for legitimate business purposes, including:
- Labor market research and market analysis
- Hiring trend monitoring
- Data enrichment and internal reporting
Users are responsible for ensuring that their use of collected data complies with applicable laws, regulations, and the target site's terms. This section is informational and not legal advice.
Best Practices
- Use collected data in accordance with applicable laws, regulations, and the target site’s terms
- Respect individual privacy and personal information
- Use data responsibly and avoid disruptive or excessive collection
- Do not use this actor for spamming, harassment, or other harmful purposes
- Follow relevant data protection requirements where applicable (e.g., GDPR, CCPA)
Support
If you need help, use the Issues tab or the actor page in Apify Console. Include the input you used with sensitive values redacted, the run ID, a short note describing expected versus actual behavior, and, if helpful, a small output sample that shows the issue clearly.