HiringCafe Jobs Scraper
Pricing
from $1.50 / 1,000 hiringcafe job record scrapeds
HiringCafe Jobs Scraper
Extract public HiringCafe job-search results with normalized job, compensation, skills, and company fields. Use for recruiting research and labor-market analysis; returns one validated record per listing. Charged per persisted job plus Apify platform usage.
Pricing
from $1.50 / 1,000 hiringcafe job record scrapeds
Rating
0.0
(0)
Developer
Khadin Akbar
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
HiringCafe Jobs Scraper extracts public HiringCafe job-search results into one validated record per listing. It accepts either a free-text job search query or a public HiringCafe search URL. Each record represents one listing and can include jobId, title, companyName, location, workplaceType, seniorityLevel, employmentTypes, requirementsSummary, skills, compensation fields, applyUrl, source, sourceUrl, and scrapedAt. The output is a normalized dataset for recruiting research, labor-market analysis, and Apify workflows that need stable job rows with source provenance. This Actor is usable through Apify MCP.
Best fit and connected workflows
Use this Actor when your starting point is public HiringCafe search results and your next step needs structured job rows that are easy to sort, filter, store, or enrich.
Good fits include:
- Recruiting research that begins with a role or skill query and needs a bounded sample of current listings.
- Labor-market analysis where compensation signals, workplace type, seniority, and skills sit in the same record.
- AI agent workflows that need one validated dataset row per listing with preserved source metadata.
- Search-preserving workflows where a copied HiringCafe search URL carries forward the filters chosen on HiringCafe.
If your brief points to a different board, route it to the Actor that matches that source. For APEC-focused research, use APEC Jobs Scraper when the job board, geography, or audience is APEC-specific. For Ashby-hosted listings, use Ashby Jobs Scraper when the listings come from Ashby-powered company pages. For MENA listings on Bayt, use Bayt Jobs Data Scraper for MENA Listings when Bayt is the source board.
Practical scenario
Maya, a talent analyst, starts with the phrase "data engineer" and wants a compact view of current public HiringCafe listings. She runs the Actor with a modest record cap and receives rows containing title, companyName, location, workplaceType, seniorityLevel, skills, compensation fields when present, applyUrl, sourceUrl, and scrapedAt. Maya uses those fields to compare roles, identify recurring skill signals, and open the application page for a shortlist while keeping the source search URL for review and repeat runs.
Input fields
| Field | Type | Purpose |
|---|---|---|
searchQuery | string | Free-text role, skill, or phrase sent to HiringCafe for standard keyword search. |
searchUrls | array | Public HiringCafe search URLs that preserve site-selected filters and override the keyword field. |
maxResults | integer | Maximum persisted job records and job-record event charges. |
maxPages | integer | Maximum HiringCafe result pages examined for each search URL. |
Focused input example
{"searchQuery": "senior data engineer","maxResults": 25,"maxPages": 3}
Search URL example
{"searchUrls": [{"url": "https://hiringcafe.com/?searchState=%7B%22searchQuery%22%3A%22data%20engineer%22%7D"}],"maxResults": 25,"maxPages": 3}
Output fields
Each dataset record represents one public HiringCafe listing.
| Field | Type | Meaning |
|---|---|---|
jobId | string | Stable listing identifier supplied by HiringCafe. |
title | string | Public position title from the HiringCafe result. |
companyName | string or null | Hiring company name when HiringCafe supplies it. |
location | string or null | Formatted public workplace location. |
workplaceType | string or null | Reported work arrangement such as Remote, Hybrid, or Onsite. |
seniorityLevel | string or null | Reported role seniority level. |
employmentTypes | array of string | Reported job commitment types. |
requirementsSummary | string or null | Concise public summary of role requirements when supplied. |
skills | array of string | Technical tools and skills identified in the public listing. |
salaryMin | number or null | Reported minimum salary in the supplied currency and period. |
salaryMax | number or null | Reported maximum salary in the supplied currency and period. |
salaryCurrency | string or null | Reported ISO-style salary currency code when available. |
salaryPeriod | string or null | Reported compensation period such as Yearly or Hourly. |
postedAt | string or null | HiringCafe's estimated public posting timestamp in ISO 8601 format. |
applyUrl | string or null | Public original application URL supplied by the source ATS. |
source | string or null | Source applicant-tracking system identified by HiringCafe. |
sourceUrl | string | Public HiringCafe search page that produced this record. |
scrapedAt | string | UTC timestamp at which this record was collected. |
Illustrative output record
{"jobId": "grnhse___example___123","title": "Senior Data Engineer","companyName": "Example Company","location": "Austin, Texas, United States","workplaceType": "Remote","seniorityLevel": "Senior Level","employmentTypes": ["Full Time"],"requirementsSummary": "Build data pipelines using Python and SQL.","skills": ["Python", "SQL"],"salaryMin": 120000,"salaryMax": 160000,"salaryCurrency": "USD","salaryPeriod": "Yearly","postedAt": "2026-07-18T12:00:00.000Z","applyUrl": "https://boards.example.com/jobs/123","source": "grnhse","sourceUrl": "https://hiringcafe.com/?searchState=%7B%7D","scrapedAt": "2026-07-19T12:00:00.000Z"}
How it works
This Actor uses public HiringCafe search pages as input. A keyword search starts broad discovery, and a copied public search URL preserves the filters selected on HiringCafe. The Actor fetches result pages sequentially, validates each listing, and persists one normalized dataset record per job. The output dataset is the primary result, while the OUTPUT record and RUN_SUMMARY store machine-readable run outcome details and coverage context.
Pricing
This Actor uses Pay per event plus Apify platform usage. The billable primary event is HiringCafe job record scraped, and it is charged when one complete, validated job record is persisted to the dataset. For example, a run that persists ten records produces ten job-record events, plus Apify platform usage for the run itself. Open the live Pricing tab for current event details and platform usage information.
Use with AI agents (MCP)
This Actor is usable through Apify MCP as a precise tool for collecting public HiringCafe search results into structured records.
Actor identity: khadinakbar/hiringcafe-jobs-scraper
Tool description: Accepts a HiringCafe keyword search or public search URL, then returns normalized job listings with provenance, salary signals when available, and source links for downstream reasoning.
Collect up to 25 public HiringCafe listings for "data engineer". Return title, company, location, workplace type, seniority level, skills, salary fields, apply URL, source URL, and scraped timestamp. Stop at the configured cap and summarize the run outcome.
Output interpretation:
- Each dataset row corresponds to one listing.
jobIdis the stable listing identifier supplied by HiringCafe.sourceUrlidentifies the public HiringCafe search page used for collection.applyUrlpoints to the original application destination supplied by the source ATS.scrapedAtmarks when the record was collected in UTC.OUTPUTandRUN_SUMMARYprovide compact run outcome and coverage details for downstream agents.
Scope, pagination, and cost guidance:
searchQuerysuits role, skill, or phrase discovery.searchUrlssuits preserving the exact filter combination configured on HiringCafe.maxResultscaps persisted job records and the associated record-based event charges.maxPagesbounds how many result pages are examined for each search URL.
Use through the API
import { ApifyClient } from 'apify-client';const client = new ApifyClient({token: process.env.APIFY_TOKEN,});const run = await client.actor('khadinakbar/hiringcafe-jobs-scraper').call({searchQuery: 'data engineer',maxResults: 25,maxPages: 3,});const dataset = await client.dataset(run.defaultDatasetId).listItems();console.log(dataset.items);const output = await client.keyValueStore(run.defaultKeyValueStoreId).getRecord('OUTPUT');console.log(output?.value);
Best results and outcome guidance
- Start with a role, skill, or phrase that matches how HiringCafe organizes the search results you want to review.
- Use a public HiringCafe search URL when the site filters already reflect the market slice you need.
- Keep
maxResultsaligned with the number of rows you plan to review, store, or enrich. - Increase
maxPageswhen you need more page coverage for the same query or URL. - Preserve
sourceUrl,applyUrl, andscrapedAtwhen passing records into dashboards, spreadsheets, or agent workflows.
Continue the workflow
- Then use 💼 Indeed Job Scraper — Salaries, Remote & Full Details to extend HiringCafe Jobs Scraper with a neighboring job-market research source when the brief calls for Indeed data.
- Then use HH.RU Jobs Scraper — Russian Hiring Intelligence to extend HiringCafe Jobs Scraper with a neighboring job-market research source when the brief calls for Hh data.
Design note
I found that the dataset contract makes sourceUrl and scrapedAt required fields, which keeps each row tied to the exact HiringCafe search that produced it.
FAQ
Can I use a keyword search or a copied HiringCafe URL?
Yes. searchQuery supports standard discovery, and searchUrls preserves the exact filters selected on HiringCafe.
What comes back in each dataset row?
One validated public listing with normalized fields such as jobId, title, companyName, location, workplaceType, skills, compensation fields, applyUrl, sourceUrl, and scrapedAt.
When should I route a brief to one of the related Actors?
Use this Actor for public HiringCafe search results. Route APEC-specific research to APEC Jobs Scraper, Ashby-hosted listings to Ashby Jobs Scraper, and Bayt-based MENA listings to Bayt Jobs Data Scraper for MENA Listings.
What controls the size of the run?
maxResults caps persisted job records, and maxPages bounds how many search pages are examined for each search URL.
Where can I check run outcome details?
Use the dataset for records, the OUTPUT record for the machine-readable outcome, and RUN_SUMMARY for the detailed run summary.
Responsible use
Use public or otherwise authorized data responsibly and in line with applicable laws and source-site terms. Retain source provenance when redistributing or analyzing the results.