How to use it: 3 steps
- Make a free Apify accountApify is the cloud platform where our tools run. The free plan gives you $5 of usage every month, no credit card needed. You pay Apify, not us.
- Paste your input and press StartNo code needed: you fill in a form (the input). It already has a working example. For example:
ksnin HireHive boards. Each start is one run. - Download the resultsWhen the run ends, the results are in a table (the dataset). Open Output, press Export and pick Excel or CSV. JSON and the API are there too.
This tool is an Apify Actor: a small program that runs on Apify. You can also run it on a schedule, for example every Monday. New to it? Read how it works, step by step and the 8 words you need first.
What it does
Read jobs from known public HireHive company boards. Get role text, dates and links, then compare full snapshots to see new, updated and closed jobs. Add a board such as ksn and press Start.
Who uses it
Small job boards
Keep a list of HireHive jobs fresh without copying them.
Recruiters
Watch a few client or rival companies for new roles.
Researchers
Save full role text with the source link for later study.
Price
Pay per event: you pay for each result the tool saves, plus a small start fee for each run. The price includes Apify platform costs. Apify bills you, not us. Prices below are for the Apify free plan.
| What you pay for | Price | When |
|---|---|---|
| Start fee | $0.027 | Charged once per run. This tool uses 1 GB of memory or less by default; more memory costs more. |
| Saved job or change | $0.0036 | One saved public job row, including closed jobs in change mode. |
Examples
- One job: about $0.03.
- 1,000 jobs: about $3.63.
- Every day 100 jobs, for 30 days: about $11.61 a month.
Free to try: the Apify free plan gives you $5 of usage every month, no credit card needed. That is enough for about 1,300 jobs.
Prices checked on 24 October 2026. See the current price on Apify.
Questions
Do I need a HireHive login?
No. The tool reads public board content only. It does not use the private dashboard.
How many boards can I check at once?
Up to four known company boards in one run.
Does a closed job mean someone was hired?
Not always. It only means the job left the public board between two full checks.
Do I pay if nothing changed?
Yes, the start fee. Rows are paid only when they are saved.
Do I need a HireHive API key?
No. The Actor reads public board content. It does not use the private HireHive dashboard API.
Does an empty scan cost money?
Yes. Every started scan has the start fee. A filter or no-change result still reads the full source.
Does a closed row prove that a job was filled?
No. It means the ID left the public board between two complete checks. The company may have closed or replaced it for another reason.
Can it detect a description change when I hide descriptions?
Yes. includeDescription controls Dataset only. The complete description stays in the snapshot and its hash.
Is it a replacement for every multi-ATS scraper?
No. It supports public HireHive boards and their source fields. It does not add multi-ATS discovery, candidate records, salary estimates or contact enrichment.
Details
Step by step on Apify
- Open Input.
- Add
ksnto HireHive boards. Leave the other values at their defaults. - Press Start.
- Open Dataset. Look for
Contact Centre Agent, a Dublin location and its HireHive link. On the check date, KSN had six jobs. The live count can change. - Open
RUN_SUMMARYin Key-value store. Check thatstatusiscompleteandcounts.deliveredequals the Dataset count.
Use cases
- Keep a job feed up to date: use
globalId,title,locationandjobUrl. - Watch hiring changes at companies you know: compare full snapshots and read
changeType. - Find role text for research: keep
descriptionTextand the source link. - Send a clean table to a spreadsheet: export Dataset and use jobId to avoid duplicates.
Tips for better results
- The board name is the first part of the HireHive web address, like ksn.
- Do not set a low row limit for monitoring. A capped run cannot be a baseline.
- Use jobId to avoid duplicate rows when you add jobs to a sheet.
Limits and good to know
The tested maximum is four boards and 53 saved rows. Limits are 200 scanned jobs, 16 source requests including retries, 90 seconds of source work, 2 MiB per response and 4 MiB of total response data. A job description above 60,000 characters makes that scan partial. Runs use 256 MB; the recommended platform timeout is 120 seconds. A 300-second Store test or larger finite positive timeout is supported without extending the 90-second source deadline; source requests retry temporary failures at most twice. Larger memory or an unbounded timeout is refused before source work.
complete: all source pages were checked and all selected rows were saved. Zero rows can be validpartial: some data was read, but a source, output, charge or runtime limit stopped the full result. Keep your last complete baselinenot_found: all requested boards returned HTTP 404. No job rows; snapshot unsafeerror: invalid input, invalid previous snapshot, no readable source, or a runtime failure. Check the summary; a platform failed run may have incomplete storage
For developers
Sample result
One result from a real test run, in JSON. Real values change from run to run. In Excel or CSV each field is a column.
{
"schemaVersion": 1,
"ats": "hirehive",
"org": "addo",
"company": "ADDO",
"companyTotalJobs": 1,
"jobId": "79402",
"globalId": "hirehive:addo:79402",
"title": "Business Analyst",
"department": null,
"employmentType": "FullTime",
"language": "en",
"languageLabel": "English",
"location": "12/2 A, Sector XX, Phase 3, DHA, Lahore, Pakistan",
"locations": ["12/2 A, Sector XX, Phase 3, DHA, Lahore, Pakistan"],
"address": {
"city": "12/2 A, Sector XX, Phase 3, DHA, Lahore",
"country": "Pakistan",
"countryCode": "PK"
},
"salaryText": null,
"descriptionText": "Responsibilities We are looking for a business analyst (BA) who will primarily serve as a liaison between our clients and project resources.",
"publishedAt": "2021-05-19T10:09:46.000Z",
"jobUrl": "https://addo.hirehive.com/business-analyst-122-a-sector-xx-phase-3-dha-lahore-L0BpOZ",
"status": "complete",
"changeType": null,
"scrapedAt": "2026-10-04T09:01:55.579Z",
"contentHash": "1ad053a5ca09de25dafa201a36482edcb382bd814de520dea590fff94a4324b4"
}Use it from code
Actor ID: cliqtomedia/hirehive-jobs-monitor-scraper. You need your Apify API token from Apify Console → Settings → API & Integrations.
from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("cliqtomedia/hirehive-jobs-monitor-scraper").call(run_input={
"boards": [
"ksn"
],
"keywords": []
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)curl -X POST "https://api.apify.com/v2/acts/cliqtomedia~hirehive-jobs-monitor-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"boards": ["ksn"], "keywords": []}'# pip install langchain-apify
# set APIFY_TOKEN in your environment
from langchain_apify import ApifyActorsTool
tool = ApifyActorsTool("cliqtomedia/hirehive-jobs-monitor-scraper")
result = tool.invoke({"run_input": {"boards": ["ksn"], "keywords": []}})
print(result)The cURL call waits for the results, up to 300 seconds. For longer runs, start a run (/runs) and get the results with a webhook or by checking the run. Apify API docs. LlamaIndex, MCP for AI agents and the JavaScript client: AI agents & MCP.
Data fields (23)
| Field | Type |
|---|---|
ats | string |
org | string |
company | string |
jobId | string |
globalId | string |
title | string |
contentHash | string |
scrapedAt | string |
status | string |
jobUrl | string |
schemaVersion | integer |
companyTotalJobs | integer |
locations | array |
address | object |
department | string |
employmentType | string |
language | string |
languageLabel | string |
location | string |
salaryText | string |
descriptionText | string |
publishedAt | string |
changeType | string |
Input settings (6)
The main fields of the input form. With the API you send them as JSON.
| Setting | Name in the API | Type | Example value |
|---|---|---|---|
| HireHive boards | boards | array | ["ksn"] |
| Title keywords | keywords | array | [] |
| Maximum saved jobs | maxResults | integer | 53 |
| Include role text | includeDescription | boolean | true |
| Return changes only | incremental | boolean | false |
| Previous complete run ID | previousRunId | string | "" |
