HiringCafe Jobs Scraper avatar

HiringCafe Jobs Scraper

Pricing

from $1.50 / 1,000 hiringcafe job record scrapeds

Go to Apify Store
HiringCafe Jobs Scraper

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

Khadin Akbar

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

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

FieldTypePurpose
searchQuerystringFree-text role, skill, or phrase sent to HiringCafe for standard keyword search.
searchUrlsarrayPublic HiringCafe search URLs that preserve site-selected filters and override the keyword field.
maxResultsintegerMaximum persisted job records and job-record event charges.
maxPagesintegerMaximum 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.

FieldTypeMeaning
jobIdstringStable listing identifier supplied by HiringCafe.
titlestringPublic position title from the HiringCafe result.
companyNamestring or nullHiring company name when HiringCafe supplies it.
locationstring or nullFormatted public workplace location.
workplaceTypestring or nullReported work arrangement such as Remote, Hybrid, or Onsite.
seniorityLevelstring or nullReported role seniority level.
employmentTypesarray of stringReported job commitment types.
requirementsSummarystring or nullConcise public summary of role requirements when supplied.
skillsarray of stringTechnical tools and skills identified in the public listing.
salaryMinnumber or nullReported minimum salary in the supplied currency and period.
salaryMaxnumber or nullReported maximum salary in the supplied currency and period.
salaryCurrencystring or nullReported ISO-style salary currency code when available.
salaryPeriodstring or nullReported compensation period such as Yearly or Hourly.
postedAtstring or nullHiringCafe's estimated public posting timestamp in ISO 8601 format.
applyUrlstring or nullPublic original application URL supplied by the source ATS.
sourcestring or nullSource applicant-tracking system identified by HiringCafe.
sourceUrlstringPublic HiringCafe search page that produced this record.
scrapedAtstringUTC 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.
  • jobId is the stable listing identifier supplied by HiringCafe.
  • sourceUrl identifies the public HiringCafe search page used for collection.
  • applyUrl points to the original application destination supplied by the source ATS.
  • scrapedAt marks when the record was collected in UTC.
  • OUTPUT and RUN_SUMMARY provide compact run outcome and coverage details for downstream agents.

Scope, pagination, and cost guidance:

  • searchQuery suits role, skill, or phrase discovery.
  • searchUrls suits preserving the exact filter combination configured on HiringCafe.
  • maxResults caps persisted job records and the associated record-based event charges.
  • maxPages bounds 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 maxResults aligned with the number of rows you plan to review, store, or enrich.
  • Increase maxPages when you need more page coverage for the same query or URL.
  • Preserve sourceUrl, applyUrl, and scrapedAt when passing records into dashboards, spreadsheets, or agent workflows.

Continue the workflow

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.

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.