# HiringCafe Scraper - Rich Jobs & Company Data (`benthepythondev/hiring-cafe-scraper`) Actor

Scrape HiringCafe job listings with enriched company data, remote/visa flags, salary metadata, skills, locations, apply URLs and hiring-company details. Search by keyword or HiringCafe URL.

- **URL**: https://apify.com/benthepythondev/hiring-cafe-scraper.md
- **Developed by:** [ben](https://apify.com/benthepythondev) (community)
- **Categories:** Jobs, Business, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## HiringCafe Scraper - Rich Jobs & Company Data

Scrape public job listings from **HiringCafe** in one run. Get job titles, hiring companies, apply URLs, remote/workplace flags, salary metadata, skills, seniority, visa sponsorship, relocation assistance, locations and enriched company details such as website, industry, headcount, funding and headquarters country. Export to JSON, CSV or Excel, run on a schedule, call from the Apify API, or connect the output to Make, Zapier, n8n, Clay, Airtable, Google Sheets or your CRM.

### What is the HiringCafe Scraper?

HiringCafe is a fast-growing job search engine that aggregates roles from company career pages and applicant tracking systems. It is useful because many records include structured data that normal job-board scrapers miss: technical tools, seniority, workplace type, compensation transparency, visa sponsorship, relocation assistance and enriched company profiles.

This actor turns a HiringCafe search into a structured dataset. Paste a HiringCafe search URL, or enter a keyword like `python`, `data engineer`, `sales`, `nurse` or `product manager`. The scraper fetches the live public search page and extracts the server-rendered job payload. It does not require a HiringCafe account, browser automation, proxies or a third-party unblocker, which keeps runs fast, stable and cost-efficient.

### What data does it extract?

- **Job title** and normalized core title
- **Hiring company** name
- **Company website**, industry, tagline, headquarters country and employee count
- **Company founding year** and funding metadata where available
- **Apply URL** and source ATS/job-board token
- **Job category**, seniority, role type and commitment
- **Remote / hybrid / onsite workplace type**
- **Formatted location**, cities, states, countries and coordinates
- **Salary metadata** where available: min, max, currency, period and transparency flag
- **Skills and technical tools** listed or inferred from the job
- **Requirements summary**, role activities and minimum years of experience
- **Degree requirements** and language requirements
- **Visa sponsorship** and **relocation assistance** flags
- **Estimated publish date** and expired status

### Input

| Field | Type | Description |
|-------|------|-------------|
| `searchUrls` | array | HiringCafe search-result URLs to scrape exactly. |
| `query` | string | Optional keyword/search query used when no URLs are supplied. |
| `maxResults` | integer | Maximum jobs to return per search page. |

### Example input

```json
{
  "query": "python",
  "maxResults": 50
}
````

You can also paste a filtered HiringCafe URL:

```json
{
  "searchUrls": [
    "https://hiring.cafe/?searchState=%7B%22searchQuery%22%3A%22data%20engineer%22%7D"
  ],
  "maxResults": 100
}
```

### Output

Each item is one job listing. Example:

```json
{
  "job_id": "bamboohr___saphetor___116",
  "title": "Python Engineer",
  "core_title": "Python Engineer",
  "company": "Saphetor",
  "company_website": "https://saphetor.com",
  "company_industry": "Research and Development",
  "company_headcount": 68,
  "company_hq_country": "CH",
  "apply_url": "https://saphetor.bamboohr.com/careers/116",
  "job_category": "Software Development",
  "seniority": "Mid Level",
  "commitment": ["Full Time"],
  "workplace_type": "Remote",
  "formatted_location": "Athens or Lausanne or Boston or Europe",
  "workplace_cities": ["Athens, Attica, GR", "Lausanne, Vaud, CH"],
  "salary_min": null,
  "salary_max": null,
  "salary_currency": "USD",
  "technical_tools": ["Python", "Django", "Django Rest Framework"],
  "visa_sponsorship": false,
  "relocation_assistance": false,
  "estimated_publish_date": "2026-07-02T00:00:00.000Z"
}
```

### Use cases

- **Recruitment lead generation** - find companies hiring for a role, technology or seniority level and enrich them with company websites and headcount.
- **Job-market intelligence** - monitor which skills, locations and workplace types are trending across active job listings.
- **Remote-work research** - collect remote, hybrid and onsite roles with country and city arrays.
- **Visa and relocation tracking** - identify employers that mention visa sponsorship or relocation assistance.
- **Salary analysis** - collect transparent compensation fields where HiringCafe has salary metadata.
- **ATS sourcing** - follow apply URLs back to company career pages and ATS systems for sourcing or workflow automation.
- **Daily job alerts** - schedule the actor and push matching roles into Slack, Airtable, Notion, Google Sheets or your CRM.

### FAQ

**Do I need a HiringCafe account?** No. The actor reads publicly available search results.

**Does it use a browser?** No. It fetches the public search page over HTTP and extracts the server-rendered job payload, which keeps it fast and reliable.

**Can I filter by location or remote type?** Build the filter on HiringCafe, copy the resulting URL and paste it into `searchUrls`. Keyword search is also supported directly through the `query` field.

**Why does it return a limited first page instead of thousands of jobs?** HiringCafe's public page renders a large server-side result set, but deeper pagination is handled by an internal API that may require additional access. This actor focuses on the public SSR payload for reliability and low cost.

**Does it return company enrichment?** Yes. Many jobs include company website, industry, headcount, funding type, founding year, headquarters country and tagline.

**Is salary always available?** No. Salary fields are returned when HiringCafe has compensation metadata for the job; otherwise they are null.

**How fresh is the data?** Data is fetched live from HiringCafe when the actor runs.

**Can I export the output?** Yes. Apify supports JSON, CSV, Excel, API access, webhooks and integrations.

**Is this suitable for lead generation?** Yes. The output includes the hiring company, company website, industry, headcount and apply URL, which makes it useful for recruiter, sales and labor-market workflows.

**Is it legal?** The actor collects publicly available job-listing information. You are responsible for using the data in line with HiringCafe's terms and applicable laws.

### You might also like

- StepStone, Glassdoor and Naukri job scrapers
- Dice, ZipRecruiter and CareerBuilder job scrapers
- Greenhouse, Lever and Workday ATS scrapers
- Website Contact Extractor for company enrichment
- Google News and Reddit scrapers for market monitoring

**Keywords:** HiringCafe scraper, HiringCafe jobs scraper, hiring cafe API, scrape HiringCafe, jobs data API, remote jobs scraper, job board scraper, recruitment leads, hiring company data, company enrichment, visa sponsorship jobs, salary data, remote work data, job market research, ATS jobs scraper, Apify jobs.

# Actor input Schema

## `searchUrls` (type: `array`):

Paste HiringCafe search-result URLs. Filter on HiringCafe, then copy the URL. Leave empty to use the keyword field or the default latest jobs page.

## `query` (type: `string`):

Optional keyword such as 'python', 'data engineer', 'product manager' or 'sales'. Used when search URLs are empty.

## `maxResults` (type: `integer`):

Maximum number of jobs to return from each HiringCafe search page.

## Actor input object example

```json
{
  "searchUrls": [
    "https://hiring.cafe/?searchState=%7B%22searchQuery%22%3A%22python%22%7D"
  ],
  "query": "python",
  "maxResults": 50
}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "searchUrls": [
        "https://hiring.cafe/?searchState=%7B%22searchQuery%22%3A%22python%22%7D"
    ],
    "query": "python",
    "maxResults": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("benthepythondev/hiring-cafe-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "searchUrls": ["https://hiring.cafe/?searchState=%7B%22searchQuery%22%3A%22python%22%7D"],
    "query": "python",
    "maxResults": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("benthepythondev/hiring-cafe-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "searchUrls": [
    "https://hiring.cafe/?searchState=%7B%22searchQuery%22%3A%22python%22%7D"
  ],
  "query": "python",
  "maxResults": 50
}' |
apify call benthepythondev/hiring-cafe-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=benthepythondev/hiring-cafe-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "HiringCafe Scraper - Rich Jobs & Company Data",
        "description": "Scrape HiringCafe job listings with enriched company data, remote/visa flags, salary metadata, skills, locations, apply URLs and hiring-company details. Search by keyword or HiringCafe URL.",
        "version": "1.0",
        "x-build-id": "rdKwL7IxKp0OM2lP5"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/benthepythondev~hiring-cafe-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-benthepythondev-hiring-cafe-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/benthepythondev~hiring-cafe-scraper/runs": {
            "post": {
                "operationId": "runs-sync-benthepythondev-hiring-cafe-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/benthepythondev~hiring-cafe-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-benthepythondev-hiring-cafe-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "searchUrls": {
                        "title": "HiringCafe search URLs",
                        "type": "array",
                        "description": "Paste HiringCafe search-result URLs. Filter on HiringCafe, then copy the URL. Leave empty to use the keyword field or the default latest jobs page.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "query": {
                        "title": "Keyword / search query",
                        "type": "string",
                        "description": "Optional keyword such as 'python', 'data engineer', 'product manager' or 'sales'. Used when search URLs are empty."
                    },
                    "maxResults": {
                        "title": "Max results per search",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Maximum number of jobs to return from each HiringCafe search page.",
                        "default": 100
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
