# Hiring Intelligence: Jobs, Tech Mentions & Sales Leads (`monkey.d.scraping/hiring-signal-intelligence`) Actor

Turn company job boards into actionable hiring intelligence: technology mentions with evidence, expansion signals, seniority, locations and published salary ranges. No login or AI required.

- **URL**: https://apify.com/monkey.d.scraping/hiring-signal-intelligence.md
- **Developed by:** [Monkey D. Scraping](https://apify.com/monkey.d.scraping) (community)
- **Categories:** Lead generation, Jobs
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 job intelligence records

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/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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

## Hiring Signal Intelligence: Job Scraper, Technology Mentions & B2B Sales Leads

Turn company job boards into evidence-backed hiring intelligence for recruiting, B2B prospecting and market research. Get open jobs, technology mentions, hiring themes, seniority, locations and published compensation in one consistent dataset.

**No external login. No API keys from employers. No AI.** Supply company websites or recruiting links, choose optional filters and download the results as JSON, CSV or Excel.

### What is Hiring Signal Intelligence?

Hiring Signal Intelligence is an Apify Actor for teams that need to understand what their target companies are hiring for and which technologies appear in those roles. It supports company job boards hosted on **Greenhouse, Lever and Ashby**, including European Lever boards.

Use it as a job posting scraper, hiring intelligence feed, technology mention tracker or recruiting research tool. Each row represents a public job posting with a stable ID, original job link, clean description, standardized fields and evidence excerpts you can review before acting.

Start with the domains in an account list you already have. The Actor can locate supported recruiting boards from company websites where available. Website lookup is best-effort, not universal: direct recruiting links remain supported when automatic lookup cannot identify a board. It does not discover every company on the internet or search LinkedIn and Indeed.

### Who is it for?

- **B2B sales and revenue operations:** enrich target accounts with current hiring context.
- **Recruitment agencies and staffing teams:** identify relevant vacancies, departments and seniority.
- **Software vendors and implementation partners:** find roles mentioning products relevant to your services.
- **Cloud, data and security consultancies:** review public descriptions of team growth and modernization work.
- **Job board operators:** populate a focused job feed with consistent fields and application links.
- **Researchers and compensation analysts:** compare roles and published salary ranges across a defined company portfolio.

### What you get

| Data group | Useful fields |
| --- | --- |
| Job identity | Stable record ID, job ID, company label, company-label origin, board URL, job URL, application URL |
| Role details | Title, department, team, job function, seniority, employment type, clean description |
| Geography | Primary and additional locations, city and country when published, remote/hybrid/onsite label |
| Dates | Published date, created date, updated date where available, age since publication, retrieval timestamp |
| Compensation | Separate salary ranges, currencies, pay intervals, regional labels and published compensation text |
| Technology context | Mentioned products and technologies, supporting excerpts, matches to your requested technologies |
| Hiring themes | First-hire, team-expansion, system-migration and market-expansion themes when supported by text |
| Review and automation | Relative priority score, keyword matches, availability flags, content hash and schema version |

Missing values remain `null` or empty lists. The company label may be the job board identifier when no company name is published; `companyNameOrigin` makes this explicit.

### Start in three steps

1. Paste domains, Careers URLs or direct board links into **Company websites or recruiting links**. Links without `https://` also work. A single-job link searches the company's whole board.
2. Set **Maximum results for this run**. This is a total shared across supported recruiting boards.
3. Optionally filter by job title, words anywhere in the job, technologies, locations or remote-only jobs. Start the Actor and open the **Overview** output.

Minimal example:

```json
{
  "boardUrls": ["ashbyhq.com", "palantir.com"],
  "maxJobs": 100
}
```

Targeted technology research:

```json
{
  "boardUrls": [
    "https://boards.greenhouse.io/stripe",
    "https://jobs.lever.co/palantir",
    "https://jobs.ashbyhq.com/ashby"
  ],
  "technologies": ["Salesforce", "Snowflake", "Kubernetes"],
  "maxJobs": 250
}
```

Locations and role keywords can be added independently:

```json
{
  "boardUrls": ["https://jobs.ashbyhq.com/ashby"],
  "titleKeywords": ["engineer", "engineering"],
  "locations": ["Europe", "Germany"],
  "remoteOnly": true,
  "maxJobs": 50
}
```

Within a filter, any matching term is sufficient. Different filter groups combine: a job must satisfy every filter group you filled in. `titleKeywords` searches titles only; `keywords` searches titles and descriptions. Words and phrases are case-insensitive, with no automatic stemming, translation or Boolean syntax. Use separate entries for variants such as engineer and engineering. Locations search published labels without geographic expansion: Europe does not automatically match Berlin. Remote-only excludes hybrid and unspecified roles. Remote roles may still have country or time-zone restrictions.

For a first run, leave filters empty and inspect the locations and titles returned. If a targeted run is empty, remove one filter group at a time and check the coverage report. A successful run can legitimately contain zero matches.

### Practical use cases

#### Salesforce and HubSpot partner prospecting

Find open positions mentioning the CRM products you support. Bring the exact evidence excerpt into account research, then assess whether your implementation or operations services are relevant.

#### Snowflake, Databricks and cloud consulting leads

Review hiring around data engineering and cloud platforms. Combine technology mentions with hiring themes to select accounts for a human review before outreach.

#### Recruiting agency business development

Filter for relevant job titles and locations, then organize openings by department and seniority. The original application link and description help recruiters qualify each vacancy.

#### Competitor hiring intelligence

Run a scheduled check across a defined competitor list. Compare job IDs and content hashes in your own spreadsheet, database or CRM to identify newly observed or changed postings. A missing job alone does not prove a closure; check the coverage report first.

#### Remote and specialist job feeds

Build a targeted feed of remote engineering, cybersecurity, data or revenue operations jobs. Export the dataset to your editorial workflow and retain the employer's original job link.

#### Salary transparency research

Compare published salary ranges for similar roles. Multiple regions, currencies and pay intervals remain separate so you can select comparable records without mixing annual and hourly compensation.

#### Account prioritization for sales teams

Sort by the relative `priorityScore`, inspect the evidence and decide which accounts deserve research. The score is a review aid, not a probability that a company will buy.

### Example output

Illustrative excerpt; availability depends on the employer's posting. The actual dataset contains all documented fields.

```json
{
  "company": "example-company",
  "companyNameOrigin": "board_identifier",
  "title": "Senior Data Engineer",
  "location": "London",
  "workMode": "hybrid",
  "seniority": "senior",
  "jobFunction": "data",
  "technologyMentions": ["Snowflake", "dbt"],
  "technologyEvidence": [
    {
      "term": "Snowflake",
      "excerpt": "You will support our Snowflake and dbt environment."
    }
  ],
  "signalTypes": ["team_expansion"],
  "signals": [
    {"type": "team_expansion", "evidence": "Help us build our data team."}
  ],
  "salaryRanges": [
    {
      "label": "UK",
      "min": 80000,
      "max": 110000,
      "currency": "GBP",
      "interval": "1 YEAR",
      "description": null
    }
  ],
  "jobUrl": "https://jobs.ashbyhq.com/example-company/example-job"
}
```

### Exports and integrations

- **n8n:** run on a schedule, retrieve dataset items and upsert records into a CRM using `id`.
- **Make:** connect a completed Apify run to Google Sheets, Airtable or a sales research workflow.
- **Zapier:** route new run results to your team’s approved destinations.
- **Clay and CRMs:** enrich an existing account list with technology mentions, role context and evidence.
- **Apify API and webhooks:** use the default dataset for jobs and `RUN_REPORT` for coverage before processing results.

The output includes views for hiring intelligence, salary comparison, evidence and all fields. Nested evidence and salary ranges are best preserved in JSON; CSV and Excel are available for tabular workflows.

### Coverage and interpretation

A technology mention may describe desired experience, an alternative product or a past project. It does not confirm that the employer uses that product. Hiring themes are text-supported indications, not verified spending plans. Classification is optimized for English-language listings; other languages retain their published text, but labels and theme coverage may be less complete.

Publication, creation and update timestamps have different meanings. Republishing can change a publication date. Missing publication dates are not inferred from update dates. Salary ranges are returned when structured compensation is available; figures embedded only in prose may remain in the description. No exchange-rate conversion or inferred annual salary is supplied.

### Limits, pricing and troubleshooting

You can supply up to 200 company websites or board URLs and request up to 10,000 jobs per run. The result allowance is shared across supported boards; unused slots are redistributed where possible. For example, a 10-result limit can return five jobs from each of two eligible boards. When the maximum is smaller than the number of boards, earlier inputs take priority. Rapidly changing postings, errors and restrictive filters can produce fewer results. Results are not globally sorted by score.

Launch price: **$3 per 1,000 job intelligence records**, plus the standard **$0.00005 Actor start** charge at up to 1 GB. The Actor's Pricing tab is authoritative. The billing unit is one returned job intelligence record. Filtering can return fewer jobs than your maximum. Coverage reports and error details are not job records.

If a board is unavailable, valid boards can still produce results. Open **Coverage and run report** to distinguish complete, partial and limited runs. A run that cannot access any requested board fails explicitly. A successful empty run means accessible boards contained no matching jobs.

Company domains, Careers pages and direct board links can be mixed in the same input. Greenhouse links may begin with `boards.greenhouse.io` or `job-boards.greenhouse.io`; Lever links with `jobs.lever.co` or `jobs.eu.lever.co`; Ashby links with `jobs.ashbyhq.com`. A company website and a direct link resolving to the same board are processed once.

The coverage report includes one entry per input company and per resolved board. `NO_SUPPORTED_BOARD_FOUND` means automatic lookup could not identify a supported board; it does not mean the company has no vacancies. `MULTIPLE_JOB_BOARDS` means there is more than one candidate: use the desired direct recruiting links from the report. Website errors are reported separately from accessible boards with zero matching jobs. Discovery failures do not generate billable job records; normal platform/start pricing rules still apply.

### Frequently asked questions

**Do I need employer accounts or credentials?** No. An Apify account is sufficient.

**Does the Actor use AI?** No. There are no AI calls, prompts or model costs.

**Can I monitor hiring changes?** Yes. Schedule runs and compare stable IDs and content hashes externally. Each run returns a current snapshot, not an automatically maintained history of closed jobs.

**Can I find decision-maker emails?** This Actor returns job and company hiring context. It does not provide private contact databases or verified decision-maker emails.

**Are results deduplicated?** Repeated board links and repeated job identities are deduplicated within a run. Separately published postings with distinct IDs remain separate.

**Does every company have salary and country fields?** No. Availability varies by posting. Null values and quality flags make missing information visible.

# Actor input Schema

## `boardUrls` (type: `array`):

Enter one company domain, Careers page or Greenhouse / Lever / Ashby link per line. Examples: ashbyhq.com, palantir.com, https://boards.greenhouse.io/stripe. Website lookup is best-effort: if no supported board is found, the report explains the issue and you can supply a direct recruiting link. A single-job link selects its company's entire board. LinkedIn and Indeed are not supported.

## `maxJobs` (type: `integer`):

Total across ALL companies, not per company. The allowance is shared between supported boards, with unused slots redistributed where possible. If the maximum is smaller than the number of boards, earlier entries take priority. Results are not globally ranked by score. Filters may return fewer or zero results. Use Apify's maximum charge setting for a monetary budget.

## `titleKeywords` (type: `array`):

Find specific roles, for example Account Executive, Data Engineer or Recruiter. A title must contain any entered word or phrase. One entry per line; no translations, wildcards or Boolean query syntax. Leave empty for all titles.

## `keywords` (type: `array`):

Search titles AND descriptions for any entered word or phrase, for example migration or expansion. Use the title field above when you only want a specific role. Filled filter fields must all match; adding more fields narrows your results. Leave empty to skip this filter.

## `technologies` (type: `array`):

Find any entered product or technology, such as Salesforce, Snowflake or Kubernetes. Custom names are supported. A mention may describe desired experience or an alternative product; it does not prove the company uses or plans to buy it. Leave empty to skip this filter.

## `locations` (type: `array`):

Match text in published location labels, such as London, Germany or Europe. No geographic expansion: Europe does not automatically match Berlin; US may not match United States. Enter spelling variants on separate lines when needed. Leave empty for all locations.

## `remoteOnly` (type: `boolean`):

Return jobs explicitly labeled remote. Hybrid and unspecified jobs are excluded. Remote does not mean work from any country.

## Actor input object example

```json
{
  "boardUrls": [
    "ashbyhq.com",
    "palantir.com"
  ],
  "maxJobs": 100,
  "titleKeywords": [],
  "keywords": [],
  "technologies": [],
  "locations": [],
  "remoteOnly": false
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

## `report` (type: `string`):

No description

# 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 = {
    "boardUrls": [
        "ashbyhq.com",
        "palantir.com"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("monkey.d.scraping/hiring-signal-intelligence").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 = { "boardUrls": [
        "ashbyhq.com",
        "palantir.com",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("monkey.d.scraping/hiring-signal-intelligence").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "boardUrls": [
    "ashbyhq.com",
    "palantir.com"
  ]
}' |
apify call monkey.d.scraping/hiring-signal-intelligence --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,monkey.d.scraping/hiring-signal-intelligence"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/dPrvOUU4oGcj9kjll/builds/7EaPNHlEiqghu0xe9/openapi.json
