Hiring Cafe Jobs Scraper - Roles + Company Firmographics avatar

Hiring Cafe Jobs Scraper - Roles + Company Firmographics

Pricing

from $1.10 / 1,000 job searches

Go to Apify Store
Hiring Cafe Jobs Scraper - Roles + Company Firmographics

Hiring Cafe Jobs Scraper - Roles + Company Firmographics

Export aggregated job listings with structured company data: employees, industries, founded year, public or private, plus seniority, workplace type and requirements.

Pricing

from $1.10 / 1,000 job searches

Rating

0.0

(0)

Developer

SIÁN OÜ

SIÁN OÜ

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

☕ Hiring Cafe Jobs Scraper — Roles With Company Data Attached

Actor Pricing Data Support

🔎 What is the Hiring Cafe Jobs Scraper — and when should you use it?

The Hiring Cafe Jobs Scraper turns aggregated job listings with the employer's firmographics on every row into clean, structured rows you can filter, export and feed straight into a spreadsheet, database or AI agent. No account, no portal API key, no browser automation to maintain.

Use it when you need: job rows that already carry the company behind them. Each role brings seniority, workplace type, commitment, cities and countries, required languages, tools, degree requirement, a condensed requirements summary and the real application link. The same row carries the employer's headcount, industries, founding year, organization type and stock ticker, filled on 95 to 100% of results, so you can size a company without a second enrichment step.

Use something else when: you want one specific job board rather than an aggregate view. Use Indeed Jobs Scraper for Indeed listings by keyword or URL. Use Seek Jobs Scraper for Seek listings across Australia and New Zealand. Use Dice Jobs Scraper for Dice technology roles in the US. Use ZipRecruiter Jobs Scraper for ZipRecruiter listings by keyword and location. Salary is present on only about 12% of roles because most employers never publish one, and recruiter contact details are not in the source at all. Neither is a limitation of the scraper.

🤖 Use with AI agents

Already connected to the Apify MCP server? Just ask for this Actor by name: sian.agency/hiring-cafe-jobs-scraper

Your agent can pay for its own runs. This Actor is eligible for agentic payments, so an agent can discover it, run it and settle the bill over x402 (USDC on Base) or Skyfire — without an Apify account or API token of its own. Billing is the same either way: per successful row, never for errors.

Otherwise copy this prompt into Claude, ChatGPT, Cursor or any MCP-enabled assistant:

I want job listings with company firmographics attached using the Apify Actor `sian.agency/hiring-cafe-jobs-scraper`.
Use it when I need: job rows that already carry the company behind them. Each role brings seniority, workplace type, commitment, cities and countries, required languages, tools, degree requirement, a condensed requirements summary and the real application link. The same row carries the employer's headcount, industries, founding year, organization type and stock ticker, filled on 95 to 100% of results, so you can size a company without a second enrichment step.
Don't use it when: you want one specific job board rather than an aggregate view — use indeed-jobs-scraper or seek-jobs-scraper or dice-jobs-scraper or ziprecruiter-jobs-scraper instead.
How to call it: set `searchQuery` to a job title, skill or discipline
searchQuery -> the search term, e.g. engineer, product manager, data scientist
maxPages -> pages to walk, 1-25, about 117 jobs each (default 2)
maxResults -> hard cap on jobs returned and on what the run charges (default 200)
includeExpired -> off by default, so only open roles are returned and billed
The run stops at whichever of maxPages and maxResults it reaches first. Filtering is
done on the OUTPUT, not the input: every row carries seniority, workplaceType,
commitment, workplaceCities and workplaceCountries, so pull one broad search and
slice it. A role aggregated under two source systems is charged once, not twice..
Start with this input:
{
"searchQuery": "engineer",
"maxPages": 2,
"maxResults": 200,
"includeExpired": false
}
Ask me which role or skill to search for, and how many jobs I want, then run the Actor and summarise the results as a table.

Things you can ask your agent for:

  • Find machine learning roles and show me only the ones at companies under 200 people.
  • Pull product manager jobs and group them by employer industry and headcount band.
  • Which companies are hiring for Kubernetes right now, and how big are they?
  • Track what these five competitors are recruiting for and tell me what changed since last month.

Machine-readable API, MCP config and OpenAPI definition for this Actor are published at apify.com/sian.agency/hiring-cafe-jobs-scraper.md.

Overview

Aggregated job listings where every row already carries the employer's firmographics — headcount, industries, founding year, public or private, and stock ticker where the company is listed.

Most job scrapers hand back a title, a company name and a link. This one adds 91 structured fields per role plus a company block that is populated on 95–100% of rows, so you can tell a fifty-person startup's opening from a twenty-thousand-person incumbent's without a second enrichment step.

Features

  • Company data on every row — employees, industries, founded year, organization type, ticker, HQ country and tagline, filled on 95–100% of results.
  • Roles already normalised — seniority, workplace type, commitment, degree requirements, languages, tools and role activities, so you are not parsing free-text descriptions.
  • 117 jobs per page, with a page limit and a result cap so you control exactly what a run costs.
  • Open roles only by default — expired listings are excluded, so you do not pay for closed jobs.
  • Duplicate-safe — the same role aggregated under two systems is charged once, not twice.
  • Real application links straight to the employer's own applicant tracking system.
  • An HTML run report with the jobs, what you paid, and a fix for anything that failed.

Quick start

  1. Open the Actor and press Start — the default searches engineer across two pages.
  2. Change searchQuery to the role you care about.
  3. Read the results in the Output tab, or export to JSON, CSV or Excel.
{
"searchQuery": "product manager",
"maxPages": 3,
"maxResults": 300
}

Getting started

Search by keyword — a job title, a skill or a discipline. Broad terms survey a market; narrow ones build a shortlist.

Each page returns about 117 jobs, so maxPages is the main volume dial and maxResults is the hard ceiling on what a run can charge. The run stops at whichever it reaches first.

Filtering happens on the output rather than the input: every row carries seniority, workplace type, commitment, cities and countries, so pull a broad search once and slice it however you need.

Input configuration

FieldTypeDefaultWhat it does
searchQuerystringengineerJob title, skill or discipline to search for
maxPagesinteger2Pages to walk, ~117 jobs each (1–25)
maxResultsinteger200Hard cap on jobs returned, and so on what a run charges
includeExpiredbooleanfalseInclude closed listings for historical analysis

Output

One row per job.

FieldTypeFill rateExample
jobTitlestring100%Configuration Engineer
companyNamestring100%Lam Research
applyUrlstring100%employer's own application page
workplaceTypestring100%Hybrid
seniorityLevelstring98%Entry Level
commitmentarray100%["Full Time"]
workplaceCitiesarray87%["Yokohama, Kanagawa, JP"]
workplaceCountriesarray99%["JP"]
requirementsSummarystring100%condensed requirements
roleActivitiesarray100%["determining configurations", …]
technicalToolsarray73%tools named in the posting
languageRequirementsarray["English", "Japanese"]
bachelorsDegreeRequirementstringPreferred
publishedDatestring100%2026-07-03T07:19:32.000Z
yearlyMinCompensation / yearlyMaxCompensationinteger12%salary range where published
compensationCurrencystringUSD
companyEmployeesinteger95%19000
companyIndustriesarray96%["Semiconductor Equipment", …]
companyFoundedYearinteger99%1980
companyTypestring96%Public
companyStockSymbolstringLRCX
companyWebsitestring96%lamresearch.com
companyTagline / companyHqCountrystring
sourceSystemstring100%eightfold
jobId / searchQuery / scrapedAtstring100%

Fill rates are measured across a real 117-row page, not estimated. Salary is the honest weak spot at 12% — most employers do not publish a range, and no scraper can supply what was never posted.

Use cases

  • Recruitment market research — see who is hiring for a role, with company size and industry on the same row.
  • Competitor hiring signals — track what a set of companies recruits for over time; hiring leaks strategy early.
  • Sales prospecting on hiring intent — a company hiring for what you sell into has budget and intent, and the firmographics tell you if it is worth a call.
  • Job board and newsletter content — populate a niche board filtered by seniority, workplace type and location.
  • Labour market analysis — measure demand by seniority, remote versus on-site, and required tools across an industry.

Integration examples

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('sian.agency/hiring-cafe-jobs-scraper').call({
searchQuery: 'machine learning engineer',
maxPages: 3,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
const startups = items.filter((j) => j.companyEmployees && j.companyEmployees < 200);
console.log(`${startups.length} roles at companies under 200 people`);

Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("sian.agency/hiring-cafe-jobs-scraper").call(run_input={
"searchQuery": "data engineer",
"maxPages": 3,
})
jobs = list(client.dataset(run["defaultDatasetId"]).iterate_items())
remote = [j for j in jobs if j.get("workplaceType") == "Remote"]
print(f"{len(remote)} remote roles of {len(jobs)}")

cURL

curl -X POST "https://api.apify.com/v2/acts/sian.agency~hiring-cafe-jobs-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"searchQuery":"product manager","maxPages":2}'

Automation workflows — run it as a step in n8n, Make or Zapier through Apify's connectors. A common pattern is a weekly schedule that pulls a role, filters to companies in your target size band, and pushes new employers into a CRM.

FAQ

Do I get salary data? Sometimes — about 12% of roles publish a range, because most employers do not. The currency is recorded when a range is listed and the range is left empty when it is not.

What company data comes with each job? Name, website, employee count, industries, founding year, organization type, and stock ticker where the company is public. That block is filled on 95–100% of rows.

How many jobs does one run return? About 117 per page. Set the page count and a maximum; the run stops at whichever it hits first.

Are expired roles included? Not by default, so you only pay for roles still open. Turn the option on for historical analysis.

Where do the listings come from? They are aggregated from employers' own applicant tracking systems. Every row records which system it came from and links to the real application page.

Can I filter by location or seniority? Search by keyword, then filter the output on the location, seniority, workplace type and commitment fields every row carries.

Will the same job appear twice? Not in one run. A role aggregated under two source systems is de-duplicated before anything is charged, so you pay once.

Troubleshooting

What you seeWhat it meansWhat to do
No jobs, run succeededThe keyword genuinely matched nothing openTry a broader keyword, or switch on expired roles
Search keyword is emptyRejected before anything was chargedProvide a title, skill or discipline
Pages to fetch must be a whole number between 1 and 25Out of rangeUse 1–25; each page is ~117 jobs
Salary columns mostly emptyExpected — only ~12% of employers publish a rangeFilter to rows where the range exists
Fewer rows than expected on a free planFree Apify accounts are capped at 25 rows per runAdd credits or a payment method to lift the cap
Job search is temporarily unavailableThe source was briefly unreachable; the run already retriedRe-run in a few minutes

This Actor collects only publicly listed job vacancies and the public company information published alongside them. It does not log in, does not bypass authentication, and does not collect personal data about applicants or recruiters.

All company names, trademarks and job listings belong to their respective owners. This tool is not affiliated with, endorsed by or sponsored by any employer or job platform. You are responsible for ensuring your use of the data complies with applicable law and the source's terms.

Support

Related job actors: Indeed Jobs Scraper, Seek Jobs Scraper, Dice Jobs Scraper, ZipRecruiter Jobs Scraper, Naukri Jobs Scraper.

Keywords for LLM Discovery

jobs api, job scraper, job board api, job listings api, scrape job postings, job postings data, hiring data api, recruitment data api, company hiring data, job market data, applicant tracking system data, ats job feed, hiring intent data, company firmographics, employer data, job feed api, remote jobs data, seniority level data, tech job listings, engineering jobs data, talent market research, recruiting intelligence, competitor hiring analysis, sales prospecting data, job aggregator api, vacancy data, structured job data, workforce analytics data, labour market dataset, job requirements data, salary range data, job posting enrichment