Hiring.Cafe Scraper icon

Hiring.Cafe Scraper

Scrape Hiring.Cafe jobs from $1/1K results. Search with advanced filters or URLs and extract 100+ fields per job, including salaries, company insights,…

Start using this actor on Apify ↗Need a custom scraper?Contact us ↗

Hiring.Cafe Scraper at a glance

Hiring.Cafe Scraper is a ready-to-run Apify actor from abotapi for collecting jobs data. Its documented output includes id, source, job url, apply url and expired (site-reported), which you can export as JSON, CSV or Excel or read through the Apify API. It costs $1.70 per 1,000 results on the Apify Free plan and from $1.00 on paid plans, with smaller per-run or optional feature charges listed on Apify.

Runs on
Apify cloud: console, API, schedules and integrations
Data type
Jobs, Automation, Developer Tools
Pricing
$1.70 per 1,000 results (Free plan), from $1.00 on paid plans
Output
Documented below · JSON, CSV, Excel
Inputs
31 options

Scrape Hiring.Cafe jobs from $1/1K results. Search with advanced filters or URLs and extract 100+ fields per job, including salaries, company insights, benefits and job details. Fast, scalable job data extraction with Gold discounts starting at $1.

What Hiring.Cafe Scraper can do

  • Two ways to search. Filter by keyword, location, workplace type, employment type and seniority, or paste Hiring Cafe search links and single job links directly.
  • 100+ structured attributes per job. The complete nested payload the site publishes, plus a curated flat view for filtering and sorting.
  • Full job descriptions on request. Switch on Fetch full job descriptions to pull each posting's complete text; leave it off for a fast, listing only crawl.
  • Company context on every job. Employee count, founding year, headquarters country, funding stage and stock ticker, when the posting publishes them.
  • Pay, requirements and benefits at a glance. Salary range and frequency, minimum years of experience, required education, certifications, visa sponsorship, security clearance, benefits and schedule flags.
  • Built for schedules. Incremental mode returns only new and changed jobs on recurring runs, and a run that cannot connect at all fails loudly instead of returning an empty dataset.

Choose what to collect

These inputs let you configure Hiring.Cafe Scraper - Jobs, Salaries, Companies & Benefits. Open the actor on Apify to enter your values and review the current options.

Supported input fields
InputWhat it controls
startUrlsarrayPaste Hiring.Cafe search URLs (links with ?searchState=…) and/or single job URLs (…/job/…). Each search link is walked forward from its own page (a ?page=N in the link is honoured). Start URLs you change take priority and the filters are ignored; the untouched example links give way to a keyword or filter you set. Supported link shapes: /classic search, /classic with ?page=N, root-path ?searchState=, a bare /classic page, the legacy base64 searchState form, and single /job/ pages.
keywordstringJob title, skill, or company name (for example: python developer, data scientist). Used when Start URLs is empty or still holds the example links; any other Start URLs you set take priority over this field.
locationstringCountry or city (for example: United States, London, Germany). Combined with the keyword; leave empty for worldwide results.
workplaceTypestringFilter by workplace arrangement: Remote, Hybrid, or Onsite.

Choices: Any, Remote, Hybrid, Onsite

commitmentTypestringFilter by employment type: Full Time, Part Time, Contract, or Internship.

Choices: Any, Full Time, Part Time, Contract, Internship

seniorityLevelstringFilter by experience level, from No Prior Experience Required to Senior Level.

Choices: Any, No Prior Experience Required, Entry Level, Mid Level, Senior Level

postedWithinDaysintegerOnly jobs published in the last N days. Default 30; maximum 1440. Approximate: the site applies this window only for some values (measured: 2, 14 and 1440 days narrowed the results, 30 did not), so treat it as a hint, not an exact cut-off.
Show 24 more inputs
More input fields
InputWhat it controls
salaryTransparentOnlybooleanReturn only jobs whose pay is publicly disclosed.
sortBystringResult order: default (relevance), date (newest first), date_asc (oldest first), compensation, experience.

Choices: default, date, date_asc, compensation, experience

workplaceTypesarraySeveral workplace arrangements at once. When set, overrides Workplace Type.
commitmentTypesarraySeveral commitment types at once. When set, overrides Commitment Type.
seniorityLevelsarraySeveral seniority levels at once. When set, overrides Seniority Level.
jobTitleQuerystringMatch this text against the job title only.
companyNamesarrayCompany names to include.
excludedCompanyNamesarrayCompany names to leave out.
industriesarrayIndustry names to include.
excludedIndustriesarrayIndustry names to leave out.
minSalaryintegerLowest yearly compensation (site currency units). Setting it also limits results to jobs that disclose their pay.
maxSalaryintegerHighest yearly compensation. Setting it also limits results to jobs that disclose their pay.
minYoeintegerLower bound of required years of experience.
maxYoeintegerUpper bound of required years of experience.
maxItemsintegerStop after this many jobs (0 = unlimited). Each results page carries up to ~100 jobs.
resumeFromRunIdstringPaste a previous run ID or dataset ID to continue a large search without returning or charging for jobs already collected there. Use this after an interrupted run, or when continuing a jobs pull in another run. For recurring daily monitoring of the same search, use Incremental mode below instead.
incrementalModebooleanTurn this on for daily or recurring monitoring. The first run returns all matching jobs as NEW. Later runs normally return only NEW, UPDATED, and REAPPEARED jobs. A job counts as UPDATED when any of its published fields changes (title, description, salary, location, the structured job and company attributes); views_on_site and applies_on_site (running counters) and any field you list in Ignore fields never trigger UPDATED. Turn on \"Emit unchanged\" or \"Emit expired\" only when you also want those jobs returned (and billed). State is kept separately per search/filter/URL setup; use State key when you want to name or deliberately share a monitoring campaign. To continue one specific interrupted run instead, use Resume from a previous run above.
stateKeystringOptional. Name this monitoring campaign to keep its state stable, or to deliberately share state across differently-configured runs. Leave empty to let the actor derive a key automatically from the search/filters/URLs; different searches then never mix state with each other.
emitUnchangedbooleanOff by default. Turn on to also return jobs that have not changed since the last run, marked UNCHANGED. This returns: and bills: extra rows you already have, so leave it off unless you specifically want the full snapshot every run.
emitExpiredbooleanOff by default. Turn on to also return jobs that were present in a previous run but are no longer found, marked EXPIRED. Only produced once a run has fully scanned the tracked search: not when Maximum jobs capped it or when Resume was used. This returns: and bills: extra synthetic rows, so leave it off unless you need expiry tracking.
ignoreFieldsForChangesarrayOptional. Field names to leave out of UPDATED change detection (still present in the output). Use a top-level name such as company_name or a dotted path such as v5_processed_job_data.some_field. Built in: views_on_site and applies_on_site never trigger UPDATED, because they are running counters that rise on their own.
mcpConnectorsarrayOptionally send the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize a connector once under Apify → Settings → Integrations, then select it here. The connector receives a condensed, human-readable summary per item (title + key fields), not the full JSON: the complete record stays in the dataset. Leave empty to skip. Supported: Notion (https://mcp.notion.com/mcp), Linear (https://mcp.linear.app/sse), Airtable (https://mcp.airtable.com/mcp), Apify (https://mcp.apify.com).
notionParentPageUrlstringURL (or id) of the Notion page under which item pages are created. Required to enable the Notion export; ignored by other connectors.
maxNotifyListingsintegerCap on items written to each connector per run. Does not affect the dataset.

Fields in the output

The documented dataset includes the fields below. Availability can depend on the source page and selected mode.

idID (text)
sourceSource (text)
job_urlJob URL (link)
apply_urlApply URL (link)
is_expiredExpired (site-reported) (text)
changeTypeChange type (incremental mode) (text)
changedFieldsChanged fields (incremental mode) (array)
firstSeenAtFirst seen (incremental mode) (date)
lastSeenAtLast seen (incremental mode) (date)
detailFetcheddetailFetched
job_titleJob title (normalized) (text)
company_nameCompany (text)
Show 34 more fields
employment_typesEmployment types (text)
senioritySeniority (text)
workplace_typeWorkplace type (text)
locationLocation (text)
remote_worldwideRemote worldwide (text)
salary_minSalary min (text)
salary_maxSalary max (text)
salary_currencySalary currency (text)
salary_frequencySalary frequency (text)
salary_transparentSalary transparent (text)
posted_atPosted at (text)
min_years_experienceMin years experience (text)
education_requiredEducation required (text)
certificationsCertifications (text)
technical_toolsTechnical tools (text)
languagesLanguages (text)
visa_sponsorshipVisa sponsorship (text)
security_clearanceSecurity clearance (text)
benefitsBenefits (text)
scheduleSchedule (text)
physical_requirementsPhysical requirements (text)
company_employeesCompany employees (text)
company_foundedCompany founded (text)
company_hq_countryCompany HQ country (text)
company_fundingCompany funding (text)
company_stockCompany stock (text)
views_on_siteViews on site (text)
applies_on_siteApplies on site (text)
description_textDescription (plain text) (text)
descriptionDescription (HTML) (object)
job_informationJob info (raw) (object)
v5_processed_job_dataAll job attributes (raw) (object)
v5_processed_company_dataCompany data (raw) (object)
_geolocGeo-coordinates (object)

Example output

An example from this actor’s documentation. Values are illustrative; this is not a fresh live result.

{
  "id": "abc123XYZ",
  "requisition_id": "REQ-4821",
  "source": "greenhouse",
  "job_title": "Senior Backend Engineer",
  "company_name": "Sample Robotics Inc.",
  "employment_types": "Full Time",
  "seniority": "Senior Level",
  "workplace_type": "Remote",
  "location": "United States",
  "remote_worldwide": true,
  "salary_min": 120000,
  "salary_max": 160000,
  "salary_currency": "USD",
  "salary_frequency": "yearly",
  "salary_transparent": true,
  "posted_at": "2026-09-20",
  "min_years_experience": 5,
  "education_required": [
    "bachelors"
  ],
  "certifications": [
    "AWS Certified Solutions Architect"
  ],
  "technical_tools": [
    "Python",
    "Kubernetes"
  ],
  "visa_sponsorship": "No",
  "benefits": [
    "retirement_plan",
    "generous_paid_time_off"
  ],
  "company_employees": "51-200",
  "company_founded": 2015,
  "company_hq_country": "United States",
  "views_on_site": 340,
  "applies_on_site": 28,
  "description_text": "We are looking for a Senior Backend Engineer to join our platform team...",
  "job_url": "https://hiringcafe.com/job/REQ-4821",
  "apply_url": "https://sample-robotics.example.com/careers/req-4821/apply",
  "job_information": {},
  "v5_processed_job_data": {},
  "v5_processed_company_data": {},
  "_geoloc": {
    "lat": 37.77,
    "lng": -122.41
  }
}

Ways to use this data

  • Job boards and aggregators: mirror Hiring Cafe postings with structured salary, benefits and requirement fields ready to filter and republish.
  • Recruiting and sourcing teams: track new roles at target companies, along with funding stage and headcount, to time outreach.
  • Compensation and market research: build salary benchmarks by title, seniority, location and workplace type.
  • Job seekers and career tools: power a personal alert feed for a keyword and location search, refreshed daily with incremental mode.
  • Labor market analysis: study hiring trends across employment types, seniority levels, required skills and certifications over time.

Before you run

Start with a small input and check the resulting records against your expected fields. Source content and actor options can change; the current Apify listing is the reference for availability and pricing.

Questions about this actor

What data does Hiring.Cafe Scraper return?

The documented output for Hiring.Cafe Scraper includes id, source, job url, apply url, expired (site-reported), change type (incremental mode), changed fields (incremental mode) and first seen (incremental mode). Availability of each field depends on the source page and the selected mode.

How much does Hiring.Cafe Scraper cost?

It costs $1.70 per 1,000 results on the Apify Free plan and from $1.00 on paid plans, with smaller per-run or optional feature charges listed on Apify. The Apify listing shows the current rate for every plan.

Why do my filters seem to have no effect?

Start URLs you change take priority over the filters below it: keyword, location, workplace type, employment type, seniority and posted within days are all ignored for that run. The untouched example links give way to a keyword or filter you set. Clear Start URLs to search by filters instead.

Why did my run fail instead of returning an empty dataset?

A run fails only when it cannot connect at all before loading a single page, when every Start URL is unrecognized (neither a Hiring Cafe search link nor a job link), when Resume from a previous run points at an id that cannot be read, or when Resume from a previous run is combined with Incremental mode for a search that already has saved incremental state; each of these stops the run with a clear message. If the connection works but an individual page is later refused, or your filters simply match nothing, the run finishes normally and returns fewer jobs, or none, with the reason logged.

Can I use it with AI agents or MCP?

Yes. Call it from any Apify integration or MCP client, and use the connector field to push results into Notion, Linear or Airtable.

Ready to collect with Hiring.Cafe Scraper?

Run it on Apify with your own input and export the results as JSON, CSV or Excel.