September 23, 2026 · 13 min read
Hiring Cafe Jobs Scraper: 1,057 Runs by 168 Users (2026)
Each job record carries 32 structured fields including title, company, salary ranges, location coordinates, and direct apply URLs. The aggregator indexes listings from Greenhouse, Lever, Workable, and thousands of direct company career pages. You can try this collector free on Apify's free plan, which covers up to 1,000 results. The scraper handles Cloudflare challenges automatically using a residential proxy session. This tool is built for data engineers, recruiters, and market analysts who need comprehensive hiring datasets, and is not for anyone who needs proprietary recruiter contact details that the listings do not include.
Try it before you read further. Apify's free plan includes $5.00 of usage every month with no credit card, enough for up to 1,000 results at $0.005 each before platform usage. Open Hiring Cafe Jobs Scraper on Apify and run the prefilled example.
How reliable is Hiring Cafe Jobs Scraper in production?
Across the last 30 days of public runs on the Apify platform, Hiring Cafe Jobs Scraper recorded 252 runs with the following outcomes.
| Outcome | Runs | Share |
|---|---|---|
| Succeeded | 156 | 61.9% |
| Failed | 45 | 17.9% |
| Aborted by the user | 47 | 18.7% |
| Timed out | 4 | 1.6% |
| Total | 252 | 100.0% |
When scheduling automated runs, expect about 19 runs in a hundred to fail or time out, which translates to roughly one run in 5. Plan your orchestration around this rate by implementing robust retry logic and error alerting. Aborted runs reflect manual intervention rather than operational faults and do not require code-level handling.
What does it cost to run Hiring Cafe Jobs Scraper?
Each result costs $0.005 on Apify's free plan, which is $5.00 per 1,000 results. Starting a run is charged separately at $0.005 per GB of Actor memory. Apify also bills the platform usage each run consumes, at the rates of your Apify plan, on top of these charges.
| Apify plan | Per result | Per 1,000 results |
|---|---|---|
| FREE | $0.005 | $5.00 |
| BRONZE | $0.00433 | $4.33 |
| SILVER | $0.00367 | $3.67 |
| GOLD | $0.003 | $3.00 |
| PLATINUM | $0.003 | $3.00 |
| DIAMOND | $0.003 | $3.00 |
Worked example: collecting 10,000 results costs $50.00 in result charges before run-start fees and platform usage. With 19.5% of runs failing or timing out in the last 30 days, budget for re-running a portion of those batches rather than assuming every run completes.
Controlling your item volume via the maxItems setting has the most direct impact on your total expense, since result charges accrue per dataset item. Perform initial validation with a small cap before launching large-scale queries to keep spending predictable.
How do you run Hiring Cafe Jobs Scraper from the API?
None of its 26 controls is strictly required, so the defaults below produce a valid run on their own. Nothing in the payload below is illustrative. Those are the schema's prefilled defaults for Hiring Cafe Jobs Scraper, so the request works once your token is in place.
Call the synchronous endpoint to start a run and receive dataset items in one request:
curl -X POST "https://api.apify.com/v2/acts/crawlerbros~hiring-cafe-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"searchQueries":["software engineer"],"locations":[],"maxItems":3}'
The same run from Python, using the official client:
from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run_input = {
"searchQueries": [
"software engineer"
],
"locations": [],
"maxItems": 3
}
run = client.actor("crawlerbros~hiring-cafe-scraper").call(run_input=run_input)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)
And from Node.js:
import { ApifyClient } from 'apify-client'
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' })
const input = {
"searchQueries": [
"software engineer"
],
"locations": [],
"maxItems": 3
}
const run = await client.actor('crawlerbros~hiring-cafe-scraper').call(input)
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)
Because the call is synchronous, your client waits for the whole run. Keep it for exploration. For scheduled work, start the run without waiting and collect the dataset afterwards, so network trouble costs you a retry rather than the results.
Which Hiring Cafe Jobs Scraper inputs matter, and which can you skip?
The schema provides 26 configuration controls with no required fields, letting you narrow your extraction using searchQueries or specific workplace filters. Leave advanced parameters alone on your first execution to establish a baseline result set.
searchQueries(array): Keywords to search on hiring.cafe (e.g., 'software engineer', 'data scientist'). Empty array or empty string returns unfiltered results.locations(array): Filter to jobs in these locations. Pass plain strings like ["San Francisco", "London", "United States"] OR objects with {label, value, countryCode, stateCode, city, lat, lng}. Empty list = global (all locations). Hiring.cafe matches both city names and country names.maxItems(integer): Maximum number of jobs to return across all queries. Default:50.workplaceTypes(array): Filter by workplace type. Defaults to all three. Default:["Remote","Hybrid","Onsite"].jobTitleQuery(string): Filter to jobs whose TITLE contains this phrase. More precise than the general search query.jobDescriptionQuery(string): Filter to jobs whose DESCRIPTION contains this phrase.technologyKeywordsQuery(string): Match against the parsed tech-stack tags (e.g. python, react, kubernetes).requirementsKeywordsQuery(string): Match against parsed requirement bullets.companyNames(array): Only return jobs from these companies. Empty = all companies.excludedCompanyNames(array): Exclude jobs from these companies.companyKeywords(array): Substring match on company name.excludedCompanyKeywords(array): Substring match on company name; exclude these.
The other 14 controls, with their defaults, are listed in the input schema on Hiring Cafe Jobs Scraper on Apify.
What does Hiring Cafe Jobs Scraper return?
The output supplies normalized job attributes alongside company enrichment data and direct apply links. They conspicuously omit direct recruiter emails or internal hiring manager contact details.
Example Output
id(e.g.greenhouse___acme___4567890)objectID(e.g.greenhouse_acme_4567890)source(e.g.greenhouse)boardToken(e.g.acme)applyUrl(e.g.https://boards.greenhouse.io/acme/jobs/4567890)title(e.g.Senior Software Engineer, Backend)descriptioncoreJobTitle(e.g.Software Engineer)category(e.g.Engineering)seniorityLevel(e.g.Senior Level)roleType(e.g.Individual Contributor)commitment(e.g.Full Time)workplaceType(e.g.Remote)workplaceCountriesworkplaceStatesworkplaceCitieslatitude(e.g.37.7749)longitude(e.g.-122.4194)salaryMin(e.g.160000)salaryMax(e.g.220000)salaryCurrency(e.g.USD)salaryFrequency(e.g.Yearly)technicalToolsminYearsExperience(e.g.5)bachelorsDegreeRequirement(e.g.Required)companyName(e.g.Acme Corp)companyWebsitecompanyIndustriescompanyEmployees(e.g.1001-5000)companyHqCountry(e.g.US)isExpired(e.g.false)scrapedAt(e.g.2026-04-11T11:05:00+00:00)
Classification
coreJobTitle: String - Canonicalized core job titlecategory: String - Job category (e.g.,Engineering,Data and Analytics,Marketing)seniorityLevel: String - Comma-joined seniority tags (e.g.,"Mid Level","Senior Level")roleType: String -Individual ContributororPeople Managercommitment: String - Commitment type (e.g.,"Full Time")workplaceType: String -Remote,Hybrid, orOnsite
Location
workplaceCountries: Array - Country codes (e.g.,["US", "GB"])workplaceStates: Array - State / region namesworkplaceCities: Array - City nameslatitude: Number - Primary location latitudelongitude: Number - Primary location longitude
Compensation & Requirements
salaryMin: Number - Minimum salary (yearly, if disclosed;0otherwise)salaryMax: Number - Maximum salary (yearly, if disclosed)salaryCurrency: String - Salary currency codesalaryFrequency: String -Yearly,Hourly,Monthly, etc.technicalTools: Array - Required technologies / toolsminYearsExperience: Integer - Minimum YoE required (0if not specified)bachelorsDegreeRequirement: String - Bachelor's degree requirement level
Company
companyName: String - Hiring company namecompanyWebsite: String - Company homepage URLcompanyIndustries: Array - Industry tagscompanyEmployees: String - Employee count bucket (e.g.,"1001-5000")companyHqCountry: String - Company HQ country code
Metadata
scrapedAt: String - ISO 8601 scrape timestamp
These are the documented fields. Optional ones can be empty on a given record, so measure how often each field your deliverable depends on is populated across a real sample before automating the handoff.
How do you build the workflow end to end?
Open Hiring Cafe Jobs Scraper and work through these in order. Each step ends with something to check, so a bad configuration surfaces on a small run rather than a scheduled one.
- Open the input console and leave searchQueries set to its default value or enter a target keyword like software engineer.
- Adjust maxItems to a small number such as 3 for your initial test run to verify connectivity.
- Verify that workplaceTypes contains your desired filter values like Remote, Hybrid, or Onsite.
- Start the run and wait for the Patchright Chromium session to bypass the Cloudflare managed challenge.
- Inspect the resulting dataset records to confirm that 32 structured fields are populated without null values.
- Expand locations or add companyNames to scale up your extraction once the test run succeeds.
- Configure a scheduled run with your finalized search parameters if you need ongoing market monitoring.
How do you apply it? Three worked playbooks
These are Hiring Cafe Jobs Scraper's own documented use cases, each worked through as an operating pattern rather than a description.
Use case 1: Talent intelligence
Outcome: Monitor hiring velocity for specific roles, companies, or regions
Configure: Set searchQueries to your target role and populate locations with your target regions.
Working method: Run a single query with maxItems set to 50, then examine companyName and scrapedAt frequencies to measure recent listing volume before scaling up queries.
Deliverable: A dataset of job postings tagged with company details and timestamps for volume analysis.
Stop condition: Zero records returned due to overly restrictive company or location filters.
Use case 2: Compensation research
Outcome: Aggregate salary ranges by role, seniority, and location (where disclosed)
Configure: Set searchQueries to your target role and enable onlyTransparentSalaries to true.
Working method: Inspect salaryMin, salaryMax, and salaryCurrency across the filtered dataset to compute median pay before broadening your search terms.
Deliverable: A structured dataset containing explicit compensation figures matched to job titles and seniority levels.
Stop condition: Fewer than 10 transparent salary records returned for the chosen keyword.
Use case 3: Remote-work trends
Outcome: Filter by workplaceTypes: ["Remote"] to track the remote-first market
Configure: Set workplaceTypes to ["Remote"] and clear any restrictive location arrays.
Working method: Execute a broad keyword search with Remote workplace filtering, then aggregate technicalTools to identify top remote skills.
Deliverable: A clean dataset of remote job listings complete with required technical stacks.
Stop condition: Records appearing with Hybrid or Onsite workplace types despite the filter.
What breaks, and how do you design around it?
- Over the last 30 days, 17.9% of public runs failed and 1.6% timed out. Build retries and alerting around those rates rather than assuming every run completes.
Because over half of all listings omit salary details, handle zero-value compensation fields appropriately in downstream transformations. When browser challenge routines take longer than normal, the automation automatically rotates proxy sessions up to six attempts.
When should you not use Hiring Cafe Jobs Scraper?
Do not use this Actor if you need direct real-time webhook triggers upon a company publishing a new listing, because this is a batch scraper rather than an event-driven listener. If you require targeted UK regional vacancies without global noise, consider using the Reed.co.uk Jobs Scraper instead. For specialized remote European startup listings, use The Hub Startup Jobs Scraper. When your scope is strictly limited to curated remote positions, the Jobicy Remote Jobs Scraper provides a more focused alternative.
What should you check before trusting the output?
- Check that the title field is present and non-empty for every record in the dataset.
- Verify that applyUrl contains a valid outbound link pointing to the original ATS posting.
- Confirm that salaryMin and salaryMax default to 0.0 rather than null when compensation is undisclosed.
- Verify that workplaceCountries returns an array containing valid country codes like US.
- Stop any scheduled run immediately if consecutive failures occur due to persistent Cloudflare blocks.
None of this proves a record is correct. It gives a scheduled Hiring Cafe Jobs Scraper run defined points where it should stop instead of quietly passing bad data downstream.
Frequently asked questions
Why are some salary fields returning zero?
Fewer than half of listings disclose salary on hiring.cafe. When compensation is not disclosed by the employer, both salaryMin and salaryMax default to zero rather than null to maintain a flat schema.
How does the scraper bypass Cloudflare blocks?
The Actor launches a Patchright Chromium session on a residential proxy and waits for the Cloudflare managed challenge to solve automatically, which typically takes between 8 and 20 seconds.
What is the maximum number of items a single run can return?
You can request up to 1,000 results per run by adjusting the maxItems control in the input schema. The default setting is 50 items.
Are expired job listings included in the dataset?
No, the scraper only returns active listings where isExpired is false. The expiration field is preserved in the output schema solely for structural consistency across records.
How do I filter results by specific technical requirements?
You can populate the technologyKeywordsQuery field to match against parsed tech-stack tags such as python, react, or kubernetes extracted from the job descriptions.
Where to go next
When you are ready to run it, open Hiring Cafe Jobs Scraper on Apify; the free plan covers up to 1,000 results a month.
Start with the Hiring Cafe Jobs Scraper Actor page for the current input schema, pricing tier, and run history.
If you are comparing approaches rather than committing to one Actor, these category pages list every option we publish:
- Job listing scrapers covers 81 Actors in this family.
Readers running Hiring Cafe Jobs Scraper commonly pair it with:
- Jobicy Remote Jobs Scraper: Scrape Jobicy.com - a curated remote job board with 1,000+ active listings.
- Reed.co.uk Jobs Scraper: Scrape job listings from Reed.co.uk - the UK's #1 job site with 250K+ live vacancies.
- PowerToFly Jobs Scraper: Scrape diversity-focused tech job listings from PowerToFly - search by keyword, filter by employment type, remote status, and experience level.
- NoFluffJobs Remote Tech Jobs Scraper: Scrape NoFluffJobs.com - a transparent IT job board with 3,800+ active remote tech listings.
- ZipRecruiter Jobs Scraper Pro: Extract job postings from ZipRecruiter.com with FULL job descriptions.
- ZipRecruiter Jobs Scraper: Extract job postings from ZipRecruiter.com including title, company, location, salary range, city, state, and apply URL.
- Remote OK Scraper: Scrape Remote OK, the leading remote job board.
- The Hub Startup Jobs Scraper: Scrape TheHub.io - a leading European startup job board with 1,000+ active listings.
Related guides:
- ZipRecruiter Jobs Scraper: Practical Use Cases & Data Guide
- ZipRecruiter Jobs Scraper Pro: 3 Practical Use Cases
- Remote OK Scraper: 3 Operating Playbooks for Job Data
- Wellfound Jobs Scraper Guide: Extracting AngelList Startup Data
Resources
Actor documentation, input schema, and pricing: verified against the published Actor on 2026-09-23.
Actor last updated by its maintainers on 2026-05-16.
Run outcome figures cover the 30 day public window ending 2026-09-23.
● Featured actors
Hiring Cafe Jobs Scraper
Extract global job postings from hiring.cafe including title, company, salary, location, remote status, seniority, visa sponsorship, and more.
Run on Apify ↗