Hiring.cafe Jobs Scraper & API
Pricing
from $3.00 / 1,000 job scrapeds
Hiring.cafe Jobs Scraper & API
Scrape detailed job listings from Hiring.cafe — titles, salaries, companies, locations, tech stacks, and 30+ fields from 2.8M+ postings across 46 ATS platforms. Filter by keyword, location, salary, seniority, and more. Export as JSON, CSV, Excel, or access via API.
Pricing
from $3.00 / 1,000 job scrapeds
Rating
0.0
(0)
Developer
ParseBird
Maintained by CommunityActor stats
1
Bookmarked
5
Total users
2
Monthly active users
2 days ago
Last modified
Categories
Share
Hiring.cafe Jobs Scraper
Scrape detailed job listings from Hiring.cafe — an AI-powered job aggregator with 2.8M+ postings from 46 ATS platforms including Greenhouse, Lever, Workable, and SuccessFactors. Extract 30+ structured fields per job.
| Search by keyword, location, salary, company, seniority, tech stack, and 20+ other filters — get clean, structured job data ready for analysis, monitoring, or integration. |
Copy to your AI assistant
Copy this block into ChatGPT, Claude, Cursor, or any LLM to start using this actor.
Apify Actor: parsebird/hiring-cafe-scraper. Scrapes job listings from Hiring.cafe. Call via ApifyClient: client.actor("parsebird/hiring-cafe-scraper").call(run_input={"searchQueries": ["software engineer"], "locations": [], "maxItems": 50, "workplaceTypes": ["Remote","Hybrid","Onsite"], "dateFetchedPastNDays": 30, "sortBy": "default"}). Returns 30+ fields per job: id, title, description, companyName, salaryMin, salaryMax, salaryCurrency, workplaceType, seniorityLevel, commitment, category, technicalTools, applyUrl, workplaceCities, workplaceCountries, source, boardToken, and more. Full API spec: https://apify.com/parsebird/hiring-cafe-scraper/api. Get your token: https://console.apify.com/settings/integrations.
What does Hiring.cafe Jobs Scraper do?
This actor scrapes job listings from Hiring.cafe, a platform that aggregates job postings from 46+ applicant tracking systems. It navigates Cloudflare protection automatically, then queries the internal search API to extract comprehensive job data.
You can filter by search keywords, geographic location, workplace type (remote/hybrid/onsite), seniority level, commitment type, salary range, company name, industry, tech stack, and more. The actor returns up to 1,000 structured job records per run with 30+ fields each.
Input parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
searchQueries | array | No | [] | Keywords to search (e.g. "software engineer", "data scientist"). Empty returns unfiltered results |
locations | array | No | [] | Location filters (e.g. "San Francisco", "United States"). Empty returns worldwide |
workplaceTypes | array | No | All three | Remote, Hybrid, Onsite |
seniorityLevels | array | No | All six | No Prior Experience Required, Entry Level, Mid Level, Senior Level, Director, Executive |
commitmentTypes | array | No | All seven | Full Time, Part Time, Contract, Internship, Temporary, Seasonal, Volunteer |
dateFetchedPastNDays | integer | No | 30 | Only include jobs fetched within the last N days (max 365) |
maxItems | integer | No | 50 | Maximum jobs to return across all queries (max 1,000) |
jobTitleQuery | string | No | — | Filter to jobs whose title contains this phrase |
jobDescriptionQuery | string | No | — | Filter to jobs whose description contains this phrase |
technologyKeywordsQuery | string | No | — | Match against parsed tech-stack tags (e.g. python, react) |
requirementsKeywordsQuery | string | No | — | Match against parsed requirement bullets |
companyNames | array | No | [] | Whitelist — only jobs from these companies |
excludedCompanyNames | array | No | [] | Blacklist — exclude jobs from these companies |
companyKeywords | array | No | [] | Substring-match the company name (whitelist) |
excludedCompanyKeywords | array | No | [] | Substring-match the company name (blacklist) |
industries | array | No | [] | Limit to companies in these industries |
excludedIndustries | array | No | [] | Exclude companies in these industries |
salaryCurrency | string | No | Any | USD, EUR, GBP, CAD, AUD, INR, JPY, CNY, MXN, BRL |
salaryFrequency | string | No | Any | Yearly, Monthly, Weekly, Daily, Hourly |
minSalary | integer | No | — | Lower bound for compensation |
maxSalary | integer | No | — | Upper bound for compensation |
onlyTransparentSalaries | boolean | No | false | Drop jobs without a published salary range |
minYearsExperience | integer | No | 0 | Minimum years of experience required |
maxYearsExperience | integer | No | 20 | Maximum years of experience required |
sortBy | string | No | default | default (relevance), newest, oldest, salary_high_to_low, salary_low_to_high |
Output example
{"id": "greenhouse___acme___4567890","objectID": "greenhouse_acme_4567890","source": "greenhouse","boardToken": "acme","applyUrl": "https://boards.greenhouse.io/acme/jobs/4567890","title": "Senior Software Engineer, Backend","description": "We are looking for a senior backend engineer to join our Platform team...","isExpired": false,"coreJobTitle": "Software Engineer","category": "Engineering","seniorityLevel": "Senior Level","roleType": "Individual Contributor","commitment": "Full Time","workplaceType": "Remote","workplaceCountries": ["US"],"workplaceStates": ["California", "New York"],"workplaceCities": ["San Francisco", "New York"],"latitude": 37.7749,"longitude": -122.4194,"salaryMin": 160000.0,"salaryMax": 220000.0,"salaryCurrency": "USD","salaryFrequency": "Yearly","technicalTools": ["Python", "PostgreSQL", "Kubernetes", "Django"],"minYearsExperience": 5,"bachelorsDegreeRequirement": "Required","companyName": "Acme Corp","companyWebsite": "https://acme.example.com","companyIndustries": ["Software", "SaaS"],"companyEmployees": "1001-5000","companyHqCountry": "US","scrapedAt": "2026-05-14T11:05:00+00:00"}
Use cases
- Job market research — Analyze hiring trends, salary ranges, and demand for specific skills across industries and geographies.
- Competitive intelligence — Monitor competitor hiring patterns, open headcount, and the technologies they use.
- Talent acquisition — Build automated pipelines that surface new job openings matching your criteria in real time.
- Salary benchmarking — Collect compensation data across roles, locations, and seniority levels for negotiation or budgeting.
- Tech stack analysis — Identify the most in-demand technologies by parsing tech-stack tags from thousands of listings.
- Academic research — Create datasets for labor economics, workforce mobility studies, or skills-gap analysis.
How it works
- Cloudflare bypass — Launches a stealth Chromium browser (Patchright) on a residential US proxy. Navigates to hiring.cafe and waits for the Cloudflare Managed Challenge to self-solve (typically 8–20 seconds). If the first attempt times out, it rotates the proxy session and retries up to 6 times.
- API query — Once the browser has a valid session, the actor constructs a search payload from your input filters and calls Hiring.cafe's internal search API directly from the browser context, reusing the Cloudflare cookies.
- Pagination — The API returns up to 1,000 jobs per page. The actor walks pages until
maxItemsis reached or results are exhausted. - Data transformation — Raw API responses are mapped to a clean 30+ field schema. HTML is stripped from descriptions and truncated to 2,000 characters.
- Output — Results are pushed to the Apify dataset for download in JSON, CSV, Excel, or via API.
Pricing
| Event | Price per event | Price per 1,000 |
|---|---|---|
job-scraped | $0.003 | $3.00 |
Each job listing pushed to the dataset counts as one event. A run fetching 200 jobs costs $0.60 in actor charges plus Apify platform costs.
FAQ
How fresh is the data?
The dateFetchedPastNDays parameter controls freshness. The default is 30 days. Set to 7 for last-week postings, or 1 for last-24-hours monitoring.
Why are some salaryMin / salaryMax values zero? Fewer than half of listings on Hiring.cafe disclose salary. When salary is not published, both fields default to 0.0.
Can I search by company?
Yes — use companyNames for exact-match whitelist, excludedCompanyNames for blacklist, or companyKeywords / excludedCompanyKeywords for substring matching. You can also put the company name in searchQueries, which matches against title, description, and company name.
What is the difference between seniorityLevel and minYearsExperience?
seniorityLevel is the categorical tag (Mid Level, Senior Level, etc.) assigned by Hiring.cafe's classifier. minYearsExperience is the numeric minimum years of experience extracted from the job description.
Are expired jobs included?
No — Hiring.cafe only returns active listings. The isExpired field is preserved in the output for consistency but will always be false.
How many jobs can I get per run?
Up to 1,000 jobs per run (set via maxItems). The API returns approximately 1,000 jobs per page, so most queries complete in 1–2 API calls.
How does pagination work?
The internal API returns up to 1,000 jobs per page. The actor increments the page number until maxItems is reached or results run out.
Does this actor work without a proxy? On the Apify platform, a residential US proxy is applied automatically. For local testing, the actor runs without a proxy — Cloudflare may or may not block depending on your IP.
Legal and compliance
This actor accesses only publicly available data from Hiring.cafe. It does not bypass login walls, access private accounts, or collect personal user data. The data collected consists of job postings that companies have intentionally made public for recruitment purposes. Users are responsible for ensuring their use of scraped data complies with applicable laws and Hiring.cafe's Terms of Service.