# Company Hiring Signals: Job Openings & Hiring Intent by Company (`pandadad0214/company-hiring-signals`) Actor

Use this to see which companies are hiring and for what. Give company domains, names or job-board links; get one row per company with open jobs, new jobs in 7/30 days, teams hiring, leadership roles and a hiring score. Greenhouse, Lever, Ashby and more.

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

## Pricing

Pay per event

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

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

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Company Hiring Signals: Job Openings & Hiring Intent by Company

> **See which companies are hiring, for which teams, and how fast.** Paste company domains, names or job-board links and get **one row per company** with **open jobs**, **new jobs in the last 7 and 30 days**, **teams hiring** (Sales, Engineering, Marketing…), **leadership roles**, **remote share**, **keyword hits** and a **0-100 hiring score**, plus every open job in Excel and CSV. Reads the public job-board feeds of **Greenhouse, Lever, Ashby, Workable, SmartRecruiters and Recruitee**. Apify's free plan includes $5 of monthly platform credit, enough for about 1,600 companies at $0.003 each (pricing below).

**A company that is hiring 10 sales reps, a new VP of Marketing or its first data team is about to buy tools, services and people. This Actor turns that into a sortable lead list.**

Job scrapers give you thousands of raw job rows. Sales, recruiting and research teams usually need the opposite: **one line per account** that says whether it is growing and where. Company Hiring Signals does that roll-up for you:

- 🔎 **Finds the job board for you:** give `stripe.com`, `Notion` or `https://jobs.lever.co/spotify`; it reads the company's careers page (robots.txt respected) to find the exact board, or matches the board by name
- 📈 **Hiring momentum:** open jobs, jobs posted in the last **7** and **30** days, newest 5 jobs with dates, last posted date
- 🧭 **Where they're hiring:** roles grouped into Sales, Marketing, Customer Success & Support, Engineering, Data & AI, Security & IT, Product & Design, Finance & Legal, People & Recruiting, Operations
- 👔 **Leadership hires:** VP, Head of, Director and C-level openings, with titles (a classic buying trigger)
- 🏷️ **Keyword hits:** count roles that mention the tool you sell (Salesforce, HubSpot, Snowflake…) or the role you care about (SDR, DevOps)
- 🌍 **Remote share and top locations**
- 🔥 **Hiring score 0-100 and a hot / warm / cold signal** for quick sorting
- 📊 **Excel + CSV:** a Companies sheet and a Jobs sheet with every open role, team, location, posted date, pay range (when the board shows it) and link
- 💸 **$0.003 per company returned.** 500 accounts cost $1.50. Companies with no public job board are listed free

### Who it's for

- **B2B sales and SDR teams:** prioritize accounts that are growing, hiring sales reps or hiring the persona you sell to
- **Recruiting and staffing agencies:** find companies with many open roles in your specialty, plus the newest postings
- **Agencies and freelancers (Fiverr / Upwork lead lists):** deliver "companies hiring X in the last 30 days" lists in minutes
- **Investors and market researchers:** track hiring momentum across a portfolio or a competitor set
- **Job seekers and career coaches:** see which target companies are actively adding roles in your field

### How to use it

1. Click **Try for free**.
2. Paste **companies**, one per line: domains, names or job-board links.
3. Optional: add **keywords** to count in job titles, and a **minimum open jobs** filter.
4. Click **Start**. 100 companies take about a minute. Download **HIRING_XLSX**, **COMPANIES_CSV** or **JOBS_CSV** from **Storage → Key-value store**, or use the dataset via API.

#### Input example

```json
{
  "companies": ["stripe.com", "Notion", "huggingface.co", "https://jobs.lever.co/spotify"],
  "titleKeywords": ["Salesforce", "SDR", "Account Executive"],
  "minOpenJobs": 5
}
```

### Task examples

Save these as Apify tasks (or schedule them weekly) to get a fresh signal list:

- **Accounts hiring SDRs this month:** your target-account domains + `titleKeywords: ["SDR", "BDR", "Sales Development"]`, `minOpenJobs: 1`. Sort by keyword hits.
- **New leadership = new budget:** your account list; filter the Companies sheet on `leadershipJobs > 0` and read `leadershipTitles`.
- **Sell into a tech stack:** `titleKeywords: ["Snowflake", "dbt", "Databricks"]` to find data teams on a given stack.
- **Weekly competitor watch:** competitors' domains, scheduled every Monday; compare `newJobs7d` and the teams hiring.

### Output example

One row per company. A real row from a test run:

```json
{
  "company": "Figma",
  "domain": "figma.com",
  "signal": "hot",
  "hiringScore": 100,
  "openJobs": 142,
  "newJobs7d": 14,
  "newJobs30d": 39,
  "leadershipJobs": 6,
  "leadershipTitles": ["Director, Data Science", "Director, SMB Sales (London, United Kingdom)", "Director, Strategic Sales (Berlin, Germany)"],
  "topFunctions": ["Sales (45)", "Engineering (35)", "Data & AI (15)", "Marketing (10)", "Product & Design (9)"],
  "topLocations": ["San Francisco, CA • New York, NY • United States (69)", "London, England (18)", "Berlin, Germany (8)"],
  "keywordHits": {"Account Executive": 23},
  "newestJobs": ["2026-10-30 Sales Recruiter (London, United Kingdom)", "2026-10-29 Account Executive, Enterprise (São Paulo, Brazil)"],
  "lastPostedAt": "2026-10-30T17:41:19+00:00",
  "ats": "Greenhouse",
  "boardUrl": "https://job-boards.greenhouse.io/figma",
  "matchedBy": "link on website",
  "status": "board found",
  "agentSummary": "Figma: hot hiring signal (100/100); 142 open jobs on Greenhouse; 39 new in 30 days (14 in 7); teams: Sales (45), Engineering (35), Data & AI (15); 6 leadership roles e.g. Director, Data Science; keyword hits: Account Executive 23"
}
```

#### Fields

| Field | What it is |
|---|---|
| `company`, `domain`, `input` | Company name (from the board when available), domain and what you entered |
| `signal`, `hiringScore` | hot / warm / cold / none and the 0-100 score |
| `openJobs`, `newJobs7d`, `newJobs30d`, `lastPostedAt` | Hiring volume and momentum |
| `topFunctions`, `functionCounts`, `salesJobs`, `engineeringJobs` | Teams hiring (classified from job titles) |
| `leadershipJobs`, `leadershipTitles` | VP / Head of / Director / C-level openings |
| `remoteJobs`, `remoteShare`, `topLocations` | Where the roles are |
| `keywordHits` | Your keywords and how many open roles mention each |
| `newestJobs` | The 5 newest roles with posting dates |
| `ats`, `boardUrl`, `boardSlug`, `matchedBy` | Which job board, its link, and how it was matched (`board URL given`, `link on website`, `name match`) |
| `status` | `board found` or `no public job board found` (not charged) |
| `agentSummary` | One plain-English line per company |

**Hiring score:** open roles up to 40 points (log scale), roles posted in the last 30 days 4 points each up to 40, leadership roles 5 points each up to 20. Hot = 60+, warm = 30-59, cold = 1-29, none = board exists but nothing open.

#### Files in the key-value store

| Key | What it is |
|---|---|
| `HIRING_XLSX` | Excel workbook: **Companies** (signal colors), **Jobs** (every open job with link), **Run log**, **Read me** |
| `COMPANIES_CSV` | Companies table as CSV |
| `JOBS_CSV` | Every open job of the returned companies as CSV |
| `SUMMARY` | JSON: signal counts, hottest companies, companies with no board found, a one-line `takeaway` and `nextStep` |

### For AI agents

Use this Actor to find out whether, how much and for which teams a company is hiring. Call it with Apify's MCP server (`https://mcp.apify.com`, tool `call-actor`, Actor `pandadad0214/company-hiring-signals`) or the API (`POST https://api.apify.com/v2/acts/pandadad0214~company-hiring-signals/run-sync-get-dataset-items`).

Minimal input:

```json
{"companies": ["stripe.com", "Notion"]}
```

Each dataset item includes:

- `agentSummary`: one line, e.g. `Notion: hot hiring signal (100/100); 150 open jobs on Ashby; 37 new in 30 days (14 in 7); teams: Sales (43), Engineering (39); 9 leadership roles e.g. General Manager, DACH; 60% remote`
- `signal`, `hiringScore`, `openJobs`, `newJobs30d`: the verdict
- `topFunctions`, `leadershipTitles`, `keywordHits`: why
- `boardUrl`: where to read the jobs

The run's key-value store has a `SUMMARY` record with `signals`, `hot`, `notFound`, a one-line `takeaway` and `nextStep`. Companies without a public board come back with `status: "no public job board found"` and are not charged.

### Pricing

**Apify paid-plan discounts:** Bronze members pay 10% less, Silver 20% less and Gold 30% less per company. Free-plan prices are shown below; the discount applies automatically.

**$0.003 per company returned** (pay-per-event), plus a tiny Actor-start fee of $0.00005. The Jobs sheet, Excel, CSV and summary are included; you are not charged per job. Companies with no public job board, or below your minimum open jobs, cost nothing. Your **maximum charge per run** is respected (the highest-scoring companies are returned first).

### FAQ

**Where does the data come from?** The public job-board feeds that Greenhouse, Lever, Ashby, Workable, SmartRecruiters and Recruitee publish so companies can embed their careers pages, read live at run time. No LinkedIn, no logins, no Indeed scraping.

**What if a company uses Workday, iCIMS, Taleo or its own careers site?** Those don't offer an open feed, so the company comes back as `no public job board found` and you are not charged. Startups and tech / SaaS companies mostly use the six supported boards.

**How exact is the company match?** `board URL given` and `link on website` are exact. `name match` means a board with the company's name exists; for very common names, check `boardUrl`. Giving a domain with **Look for the job board on the company website** on is the most exact.

**Are very large boards complete?** Open-job counts are always the board's full total. For boards with more than 1,000 roles (some SmartRecruiters companies), the team breakdown and newest jobs are based on the first 1,000 roles the board returns.

**How is "new in 30 days" calculated?** From each job's published date on the board (Greenhouse first-published, Lever created, Ashby published, Workable published, SmartRecruiters released, Recruitee published).

**Can I track changes over time?** Yes: schedule the same input weekly and compare `openJobs` and `newJobs7d`, or chain the dataset into a Google Sheet.

**Can I use it from code or an AI agent?** Yes, via the Apify API, the Python/JS clients, or as a tool through Apify's MCP server.

### More Panda Federation tools

- [Local Business Leads](https://apify.com/pandadad0214/local-business-leads)
- [Email Domain Security Checker](https://apify.com/pandadad0214/email-domain-security-checker)
- [AI Search & SEO Audit](https://apify.com/pandadad0214/ai-search-seo-audit)
- [Federal Contract Finder](https://apify.com/pandadad0214/federal-contract-finder)
- [Podcast Leads Finder](https://apify.com/pandadad0214/podcast-leads-finder)

[All Panda Federation Actors on Apify](https://apify.com/pandadad0214)

Questions or a board you'd like supported? Open an issue on this Actor's **Issues** tab.

### Changelog

- **2026-11-02:** First public release: Greenhouse, Lever, Ashby, Workable, SmartRecruiters and Recruitee; board discovery from the company website; hiring score and signal; teams, leadership roles, remote share, keyword hits; Excel/CSV with every open job; agent-friendly `agentSummary` and `takeaway`; pay-per-event pricing with Bronze/Silver/Gold discounts.

# Actor input Schema

## `companies` (type: `array`):

One per line: a company domain (stripe.com), a company name (Notion) or a job-board link (https://jobs.lever.co/spotify, https://boards.greenhouse.io/airbnb, https://jobs.ashbyhq.com/ramp). Leave empty for a 3-company demo.

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

Optional. Count open roles whose title (or board department) contains these words, e.g. a tool you sell into (Salesforce, HubSpot, Snowflake) or a role you care about (SDR, Account Executive, DevOps).

## `minOpenJobs` (type: `integer`):

Companies below this are listed in the run summary but not returned and not charged. 0 returns every company with a job board.

## `checkWebsite` (type: `boolean`):

When you give a domain, read the home and careers pages (robots.txt respected) to find the exact job-board link. Off = match the board by company name only (faster, less exact).

## `maxCompanies` (type: `integer`):

You pay per company returned, so this also caps the cost. 1 to 5,000; default 500.

## Actor input object example

```json
{
  "companies": [
    "stripe.com",
    "Notion",
    "https://jobs.ashbyhq.com/ramp"
  ],
  "titleKeywords": [
    "Salesforce",
    "SDR",
    "Account Executive"
  ],
  "minOpenJobs": 0,
  "checkWebsite": true,
  "maxCompanies": 500
}
```

# Actor output Schema

## `table` (type: `string`):

No description

## `xlsx` (type: `string`):

No description

## `csv` (type: `string`):

No description

## `jobs` (type: `string`):

No description

## `summary` (type: `string`):

Run-level summary record. Agent-friendly keys: `takeaway` (one-line result), `signals`, `hot`, `notFound`, `nextStep` and `nextSteps`.

# 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 = {
    "companies": [
        "ramp.com",
        "huggingface.co",
        "https://jobs.lever.co/spotify"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("pandadad0214/company-hiring-signals").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 = { "companies": [
        "ramp.com",
        "huggingface.co",
        "https://jobs.lever.co/spotify",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("pandadad0214/company-hiring-signals").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 '{
  "companies": [
    "ramp.com",
    "huggingface.co",
    "https://jobs.lever.co/spotify"
  ]
}' |
apify call pandadad0214/company-hiring-signals --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,pandadad0214/company-hiring-signals"
        }
    }
}
```

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/WK5SyacANNDItJ5Un/builds/GM72IX1ZIZBfKJxbQ/openapi.json
