Hiring.Cafe Jobs Scraper

Export public Hiring.Cafe job listings, companies, apply links, salaries, workplace fields, and requirements.

Data fields

FieldTypeDescription
idstringValue exported as id.
objectIdstring | nullValue exported as objectId.
requisitionIdstring | nullValue exported as requisitionId.
titlestringValue exported as title.
rawTitlestring | nullValue exported as rawTitle.
companyNamestring | nullValue exported as companyName.
companyobject | nullValue exported as company.
sourcestring | nullValue exported as source.

Input preview

startUrlsHiring.Cafe URLs
queryKeyword query
locationLocation filter
countryCountry code
remoteOnlyRemote only
fetchDetailsFetch full descriptions

API and agents

This actor can be run through Apify API, datasets, webhooks, schedules, and the official Apify MCP server.

How this actor works

See example inputs, outputs, API usage, and practical limits before running this actor on Apify.

Open Apify page

Hiring.Cafe Jobs Scraper exports public job listings from Hiring.Cafe into clean datasets for recruiting, labor-market research, lead generation, and job-board monitoring. Give it a Hiring.Cafe URL or simple filters and get job titles, companies, locations, apply links, salary signals, requirements, workplace type, ATS source, and stable IDs.

Value proposition

Hiring.Cafe Jobs Scraper turns public Hiring.Cafe job pages into structured exports that are easy to filter, deduplicate, and load into recruiting or analytics workflows.

What does this actor do

  • Scrapes public Hiring.Cafe search pages and individual job pages.
  • Returns one dataset row per job with flat export-friendly fields and nested company details.
  • Supports keyword, location, country, remote/hybrid, detail-page, and max-item controls.
  • Searches across bounded pages, stops at your limit, and deduplicates jobs across pages and input URLs.
  • Saves a RUN_SUMMARY and resumable RUN_CHECKPOINT so interrupted larger runs remain diagnosable and restart safely.

Use cases

  • Recruiting teams: build target lists by role, country, workplace type, or company.
  • Job boards: monitor public openings and normalize apply URLs.
  • Market analysts: study hiring trends, categories, seniority, salary availability, and ATS sources.
  • Sales teams: find companies actively hiring for a technology, function, or region.

Who is it for

This Actor is for recruiting teams, job boards, labor-market analysts, sales teams, and automation builders who need structured Hiring.Cafe job data without manual copying.

Input example

{
  "startUrls": [{ "url": "https://hiring.cafe/" }],
  "query": "software engineer",
  "location": "Germany",
  "country": "DE",
  "remoteOnly": false,
  "fetchDetails": true,
  "maxItems": 20,
  "maxPages": 20,
  "runBudgetSeconds": 240
}

Output example

{
  "id": "avature___dbgroup___630756",
  "title": "Nachwuchskräftegesamtkoordinator:in in Teilzeit",
  "companyName": "Deutsche Bahn",
  "location": "Königsborn, Saxony-Anhalt, Germany",
  "workplaceType": "Hybrid",
  "commitment": ["Part Time"],
  "salaryMin": null,
  "salaryMax": null,
  "salaryCurrency": null,
  "applyUrl": "https://jobs.deutschebahngroup.careers/...",
  "jobUrl": "https://hiring.cafe/job/...",
  "source": "avature",
  "requirementsSummary": "University degree or comparable training...",
  "technicalTools": ["Microsoft Outlook", "Microsoft Teams"],
  "postedAt": "2026-07-13T18:16:37.552Z",
  "detailFetchStatus": "ok_direct",
  "warnings": [],
  "scrapedAt": "2026-07-20T20:00:00.000Z"
}

Input settings

Field Type Description
startUrls array Hiring.Cafe homepage, search URLs, or specific /job/... URLs.
query string Keeps jobs whose title, company, category, or requirements include this text.
location string Keeps jobs whose formatted location or location arrays include this text.
country string Optional ISO country code filter such as DE or US.
remoteOnly boolean Uses Hiring.Cafe's Remote filter and keeps jobs marked Remote; Hybrid jobs are excluded.
fetchDetails boolean Fetches the public full description when available while preserving the base row if enrichment fails.
maxItems integer Maximum number of jobs to export.
maxPages integer Bounded search-page cap for narrow local filters and larger exports.
runBudgetSeconds integer Active-work budget before checkpointing and cleanup; 60-270 seconds.
resumeFromCheckpoint boolean Resumes the same input idempotently after migration or timeout pressure.
proxyConfiguration object Optional fallback for detected blocking or rate limiting. Direct requests are always attempted first.

Input recipes

  • Keyword and country search: use the homepage URL, set query, country, and maxItems.
  • Remote/hybrid jobs: set remoteOnly to true and optionally add a query such as data engineer.
  • Specific postings: paste Hiring.Cafe /job/... URLs into startUrls and set a small maxItems.
  • Recurring monitoring: schedule the same input and dedupe downstream on objectId or id.

Reliability and access behavior

  • The Actor uses HiringCafe's structured public search responses and public full-description service instead of rendering every page in a browser.
  • Search discovery is paginated with page and item caps, repeated-page detection, stable-ID deduplication, and progressive saves.
  • HTTP 403, 429, challenge, timeout, and server-error responses use bounded retries against one shared run deadline.
  • Direct access is attempted first. If you provide proxyConfiguration, the Actor can use it as a fallback after direct access is blocked; it does not silently enable residential traffic.
  • One failed target or optional description does not discard valid jobs from other targets.

Tips and limits

  • Start with maxItems 20-100 while tuning filters.
  • Very narrow filters can return zero jobs; broaden the query or location if needed.
  • Optional salary, degree, benefit, and language fields are returned as null or empty arrays when not listed.
  • location and country are strict output filters. Increase maxPages when a narrow location requires searching more source pages.
  • The actor only exports public Hiring.Cafe job data. It does not collect private saved jobs, candidate profiles, accounts, or application state.

Legality

This Actor extracts publicly available job listing information from Hiring.Cafe pages. You are responsible for ensuring your use of the data complies with applicable laws, Hiring.Cafe terms, and privacy obligations in your jurisdiction.

API usage

Node.js

import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('fetch_cat/hiring-cafe-jobs-scraper').call({
  query: 'software engineer',
  country: 'DE',
  maxItems: 20,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python

from apify_client import ApifyClient

client = ApifyClient('YOUR_APIFY_TOKEN')
run = client.actor('fetch_cat/hiring-cafe-jobs-scraper').call(run_input={
    'query': 'software engineer',
    'country': 'DE',
    'maxItems': 20,
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)

cURL

curl -X POST 'https://api.apify.com/v2/acts/fetch_cat~hiring-cafe-jobs-scraper/runs?token=YOUR_APIFY_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"query":"software engineer","country":"DE","maxItems":20}'

MCP / agent usage

Claude CLI:

claude mcp add --transport http apify "https://mcp.apify.com?tools=fetch_cat/hiring-cafe-jobs-scraper"

JSON config:

{
  "mcpServers": {
    "apify": {
      "url": "https://mcp.apify.com?tools=fetch_cat/hiring-cafe-jobs-scraper"
    }
  }
}

Example prompts:

  • "Export 20 public Hiring.Cafe software engineer jobs in Germany."
  • "Find remote data engineer jobs on Hiring.Cafe and include apply URLs."
  • "Scrape this Hiring.Cafe job URL and summarize the company and requirements fields."

Support

If a Hiring.Cafe page stops returning expected public jobs, open an Apify issue and include:

  • your input JSON,
  • expected output,
  • actual output,
  • run ID,
  • reproducible public URL (a Hiring.Cafe URL anyone can open).

Common questions

Questions and answers reused from the canonical actor README.

Does this require a Hiring.Cafe login?

No. It uses public job pages only.

Does it require a proxy?

Usually no. Direct structured requests are tried first. Configure a proxy only if your route receives repeated block or rate-limit responses.

Why are salary fields empty for some jobs?

Hiring.Cafe and source employers do not always list compensation.

Can I monitor new jobs?

Yes. Schedule recurring runs and dedupe on id or objectId in your database.

What happens when a larger run approaches its time limit?

The Actor stops admitting new work, saves pending page and stable-ID state to RUN_CHECKPOINT, and reserves time for persistence and cleanup. Resurrection with the same input resumes without duplicating already saved jobs.