# HireHive jobs scraper with new and closed job tracking

> HireHive jobs scraper for public company boards. Get role text, dates and links. Compare runs to see new, updated and closed jobs. JSON or CSV.

URL: https://cliqtomedia.com/actors/hirehive-jobs-monitor-scraper/

Category: Jobs & hiring · Status: live on Apify Store · Apify page: https://apify.com/cliqtomedia/hirehive-jobs-monitor-scraper?fpr=cliqto

Add the HireHive boards of companies you know. Get each open job with its text, dates and link. Turn on change mode to see only new, updated and closed jobs.

## How to use it: 3 steps

1. **Make a free Apify account.** Apify 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.
2. **Paste your input and press Start.** No code needed: you fill in a form (the input). It already has a working example. For example: `ksn` in HireHive boards. Each start is one run.
3. **Download the results.** When 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.

## 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**.





## Price

Pay per event. Apify bills you, not us.

| 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. |

- 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.

Prices checked on 24 October 2026. Current price: https://apify.com/cliqtomedia/hirehive-jobs-monitor-scraper?fpr=cliqto

## 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.

## Data fields

- `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

- `boards` (array): Add 1–4 known company slugs or HTTPS HireHive root links. Duplicate boards are read once. Custom domains and job links are not supported.
- `keywords` (array): Keep titles with any phrase, ignoring case. Empty keeps all. Up to 20 phrases, each 1–100 characters. This does not reduce the full scan.
- `maxResults` (integer): Save 1–53 rows, including closed jobs. An output cap makes the snapshot partial; it cannot be used as a monitoring baseline.
- `includeDescription` (boolean): Add public job descriptions as plain text. False hides this field. The full text still helps detect changes. It does not add a detail request.
- `incremental` (boolean): Return new, updated and closed jobs. The first check returns all as new. Later checks need previousRunId from a complete run with the same boards.
- `previousRunId` (string): Used with incremental=true. Use a successful complete run of this Actor, with the same boards. Empty starts a new baseline. Missing or partial snapshots stop the run.

## Step by step on Apify

1. Open Input.
2. Add `ksn` to HireHive boards. Leave the other values at their defaults.
3. Press Start.
4. 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.
5. Open `RUN_SUMMARY` in Key-value store. Check that `status` is `complete` and `counts.delivered` equals the Dataset count.

## Use cases

- Keep a job feed up to date: use `globalId`, `title`, `location` and `jobUrl`.
- Watch hiring changes at companies you know: compare full snapshots and read `changeType`.
- Find role text for research: keep `descriptionText` and the source link.
- Send a clean table to a spreadsheet: export Dataset and use jobId to avoid duplicates.

## Tips

- 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

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 valid.
- `partial`: some data was read, but a source, output, charge or runtime limit stopped the full result. Keep your last complete baseline.
- `not_found`: all requested boards returned HTTP 404. No job rows; snapshot unsafe.
- `error`: invalid input, invalid previous snapshot, no readable source, or a runtime failure. Check the summary; a platform failed run may have incomplete storage.

## Sample result

```json
{
  "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`

```python
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)
```

```bash
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": []}'
```

```python
# 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)
```

run-sync waits up to 300 seconds; for longer runs start a run and use a webhook. LlamaIndex and MCP: https://cliqtomedia.com/actors/ai-agents/

## Similar tools

- [Recruitee Job Snapshots & Changes](https://cliqtomedia.com/actors/recruitee-jobs-monitor-scraper/)
- [Wellfound Jobs Scraper](https://cliqtomedia.com/actors/wellfound-jobs-scraper/)
- [Ashby Jobs Scraper](https://cliqtomedia.com/actors/ashby-jobs-scraper/)
- [Lever Job Scraper](https://cliqtomedia.com/actors/lever-jobs-scraper/)
- [Greenhouse Jobs Monitor & Scraper](https://cliqtomedia.com/actors/greenhouse-jobs-monitor-scraper/)
- [SmartRecruiters Jobs Monitor & Scraper](https://cliqtomedia.com/actors/smartrecruiters-jobs-monitor-scraper/)
