# DACH Tech-Stack Hiring Signal Monitor (`actorpilot/tech-stack-hiring-signal-monitor`) Actor

Detect which DACH companies are hiring for specific technologies right now. Use it via MCP in Claude, Cursor, n8n, or LangChain, or run it directly on Apify for structured dataset output with tech-stack signals, job-level evidence, and company hiring activity.

- **URL**: https://apify.com/actorpilot/tech-stack-hiring-signal-monitor.md
- **Developed by:** [S. Klein](https://apify.com/actorpilot) (community)
- **Categories:** Jobs, Lead generation, Integrations
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

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

## DACH Tech-Stack Hiring Signal Monitor

Your sales team spends hours manually checking which DACH companies are evaluating your competitors' technology. This Actor does it automatically — and turns job posting data into actionable B2B buying signals.

**The insight:** When a company posts 5+ roles requiring Salesforce, they are actively expanding their CRM stack. When they hire for Kubernetes, they are scaling infrastructure. Hiring patterns are one of the most reliable proxies for software buying intent available in public data.

Connect via MCP for direct use from Claude, Cursor, or n8n. Or run directly on Apify for structured dataset output.

Connect your AI agent via MCP and ask:
- "Which DACH companies are hiring Salesforce admins?"
- "Show me the tech stack of N26 based on their current job postings"
- "Which DE companies have the highest hiring signal for cloud migration?"

---

### Start Here

Choose the setup that fits your workflow:

#### Option 1: Use It Via MCP

Use this when you want Claude, Cursor, VS Code, Windsurf, Zed, n8n, or another AI tool to call the Actor directly.

Get your Apify API token here:
[Apify Console - Integrations](https://console.apify.com/settings/integrations)

MCP endpoint:

```text
https://actorpilot--tech-stack-hiring-signal-monitor.apify.actor/mcp?token=YOUR_APIFY_API_TOKEN
````

Copy-paste prompt for Claude, Codex, or another AI assistant:

```text
Please connect this MCP server for me:
https://actorpilot--tech-stack-hiring-signal-monitor.apify.actor/mcp?token=YOUR_APIFY_API_TOKEN

After connecting, test these tools:
1. search_hiring_signals with technology "Kubernetes", country "DE", maxResults 5
2. get_company_jobs with companyName "N26"
3. list_top_signals with country "DE", maxResults 5
```

Manual MCP config example for Cursor / VS Code / Windsurf / Zed:

```json
{
  "mcpServers": {
    "dach-hiring": {
      "url": "https://actorpilot--tech-stack-hiring-signal-monitor.apify.actor/mcp?token=YOUR_APIFY_API_TOKEN"
    }
  }
}
```

What you get via MCP:

- `search_hiring_signals`
- `get_company_jobs`
- `list_top_signals`

***

#### Option 2: Run It Directly On Apify

Use this when you want normal Apify output without MCP.

Choose one of these input modes in the Apify input form:

- `search_hiring_signals`
- `get_company_jobs`
- `list_top_signals`

Direct runs write:

- result rows directly to the dataset
- a structured summary object to the `OUTPUT` key-value record

#### Direct run example: Search hiring signals

```json
{
  "mode": "search_hiring_signals",
  "technology": "Kubernetes",
  "country": "DE",
  "maxResults": 10
}
```

#### Direct run example: Get all jobs for one company

```json
{
  "mode": "get_company_jobs",
  "companyName": "N26"
}
```

#### Direct run example: List the strongest hiring signals

```json
{
  "mode": "list_top_signals",
  "country": "all",
  "maxResults": 10
}
```

***

### The Problem This Solves

Traditional B2B prospecting lists are static. By the time you buy a lead list, the data is weeks or months old.

Job postings are real-time signals. A company actively hiring for a specific technology right now is:

- Evaluating or expanding that technology stack
- Likely to have budget allocated
- In a buying window — not just a research phase

This Actor scrapes public job boards (Greenhouse, Lever, Personio) for DACH companies, extracts the technology signals from job descriptions, and returns a ranked list of companies with the strongest current hiring activity for your target technology.

**Typical use cases:**

- SaaS vendor identifying which DE companies are actively building Kubernetes infrastructure (= cloud tooling buyer)
- CRM consultant finding Swiss companies expanding their Salesforce team (= SI/consulting opportunity)
- Recruiter identifying which AT companies are hiring data engineers (= data stack market map)
- VC analyst mapping DACH companies with highest tech-hiring velocity

***

### Available MCP Tools

#### `search_hiring_signals`

Find DACH companies currently hiring for a specific technology. Returns ranked company signals with detected tech stack, role counts, job title samples, sources, and source URLs.

| Parameter | Type | Description |
|---|---|---|
| `technology` | string | e.g. `Salesforce`, `Kubernetes`, `Snowflake`, `dbt` |
| `country` | enum | `DE`, `AT`, `CH`, or `all` |
| `maxResults` | integer | 1-50, default 10 |

#### `get_company_jobs`

Get all open jobs and extracted tech stack for one specific company. Returns the company signal plus individual job-level results.

| Parameter | Type | Description |
|---|---|---|
| `companyName` | string | e.g. `N26`, `Contentful`, `Bitpanda` |

#### `list_top_signals`

List companies with the highest tech-hiring activity right now, even without filtering for a single technology.

| Parameter | Type | Description |
|---|---|---|
| `country` | enum | `DE`, `AT`, `CH`, or `all` |
| `maxResults` | integer | 1-25, default 10 |

***

### Output Example

Each result represents one company with hiring signal data.

```json
{
  "companyName": "N26",
  "country": "DE",
  "hiringSignalScore": 87,
  "technologyMatches": ["Kubernetes", "AWS", "Terraform"],
  "openRoleCount": 12,
  "relevantRoleCount": 4,
  "sampleJobTitles": [
    "Senior Platform Engineer (Kubernetes)",
    "DevOps Engineer — AWS & Terraform",
    "Cloud Infrastructure Lead"
  ],
  "sources": ["greenhouse"],
  "sourceUrls": [
    "https://boards.greenhouse.io/n26"
  ],
  "detectedAt": "2026-06-11T08:14:00.000Z"
}
```

Key output fields:

- `companyName`, `country`
- `hiringSignalScore` — 0–100, higher = stronger buying signal
- `technologyMatches` — which of your target technologies were detected
- `openRoleCount` — total open positions at this company
- `relevantRoleCount` — positions matching the target technology
- `sampleJobTitles` — raw job titles that triggered the match
- `sources` — which ATS platform the data came from
- `sourceUrls` — direct links to verify the source

***

### Data Sources

- **Greenhouse** - public job board API, no auth required
- **Lever** - public postings API, no auth required
- **Personio** - public XML feed, no auth required

Coverage: DACH tech companies across DE, AT, and CH. Expanding continuously.

Note on geography:
The `country` filter is based on the company directory classification of the employer, not strictly on each individual job location. A DE company can therefore still have some roles in cities like London, Barcelona, or Paris.

***

### Detected Technologies

**CRM/ERP:** Salesforce, HubSpot, SAP, Microsoft Dynamics

**Data:** Snowflake, dbt, Databricks, Apache Spark, Kafka, Airflow, Power BI, Tableau, Looker

**Cloud/DevOps:** AWS, Azure, GCP, Kubernetes, Terraform, Docker, Helm, ArgoCD, GitHub Actions

**Languages:** Python, TypeScript, Go, Rust, Java, Kotlin

**Frontend:** React, Vue, Next.js

**AI/ML:** PyTorch, TensorFlow, OpenAI, LangChain

**Security:** Splunk, CrowdStrike, SentinelOne

***

### Coverage

**Job board sources:**

- **Greenhouse** — public job board API, no authentication required
- **Lever** — public postings, no authentication required
- **Personio** — public XML feed, no authentication required

**Geographic coverage:** DACH tech companies classified as DE, AT, or CH. The `country` filter is based on the company's registered country, not individual job locations — a DE company may have some roles in other European cities.

**Technology coverage:** 40+ technologies across CRM/ERP, Data, Cloud/DevOps, Languages, Frontend, AI/ML, and Security. See the full list in the README section "Detected Technologies" above.

**Limitations:** Companies using Workable, Jobvite, or direct career-site postings are not currently covered. Coverage expands continuously as new ATS sources are added.

***

### Pricing

Pay Per Event - charged per successful tool call.

| Tool | Price |
|---|---|
| `search_hiring_signals` | $0.05 per call |
| `get_company_jobs` | $0.05 per call |
| `list_top_signals` | $0.05 per call |

***

### FAQ

**How fresh is the hiring signal data?**
Each Actor run fetches live data directly from Greenhouse, Lever, and Personio at the time of the run. Schedule the Actor weekly for continuous monitoring.

**How is the hiring signal score calculated?**
The score (0–100) is based on the number of matching roles relative to total open positions, weighted by role seniority signals. A company with 4 Kubernetes roles out of 12 total openings scores higher than one with 1 Kubernetes role out of 50.

**Can I monitor a specific list of companies?**
Currently the Actor discovers companies from its built-in DACH directory. Targeted single-company lookup is available via `get_company_jobs` — pass the company name directly.

**Is this legal to use?**
Yes. The Actor only accesses publicly available job listings from Greenhouse, Lever, and Personio — the same pages visible to any job seeker. No authentication, no scraping of private data, no personal data collection.

**Can I pipe results directly into my CRM?**
Yes. Export results as JSON or CSV from the Apify dataset and import into HubSpot, Salesforce, or Pipedrive. Or use the Apify API to trigger runs and retrieve data programmatically.

**How does this compare to Apollo.io or Clay.com?**
Apollo and Clay provide broader company databases with contact enrichment. This Actor provides deeper, more current tech-stack signal data from actual job postings — a complementary input to Apollo/Clay workflows, not a replacement.

***

### Works With

- Claude Desktop
- Cursor, VS Code, Windsurf, Zed
- n8n (MCP Client node)
- LangChain / LangGraph
- OpenAI Agents SDK
- Any MCP Streamable HTTP client

# Actor input Schema

## `mode` (type: `string`):

Choose MCP standby mode for AI-agent access, or a direct run mode to get normal Apify output.

## `technology` (type: `string`):

Required for search\_hiring\_signals. Example: Salesforce, Kubernetes, Snowflake, dbt.

## `companyName` (type: `string`):

Required for get\_company\_jobs. Example: N26, Contentful, Bitpanda.

## `country` (type: `string`):

Optional country filter for direct runs.

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

Maximum number of result rows to return for signal list modes.

## Actor input object example

```json
{
  "mode": "mcp_server",
  "country": "all",
  "maxResults": 10
}
```

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("actorpilot/tech-stack-hiring-signal-monitor").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("actorpilot/tech-stack-hiring-signal-monitor").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 '{}' |
apify call actorpilot/tech-stack-hiring-signal-monitor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=actorpilot/tech-stack-hiring-signal-monitor",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "DACH Tech-Stack Hiring Signal Monitor",
        "description": "Detect which DACH companies are hiring for specific technologies right now. Use it via MCP in Claude, Cursor, n8n, or LangChain, or run it directly on Apify for structured dataset output with tech-stack signals, job-level evidence, and company hiring activity.",
        "version": "1.0",
        "x-build-id": "0qDBRFlNqG0AdzbWQ"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/actorpilot~tech-stack-hiring-signal-monitor/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-actorpilot-tech-stack-hiring-signal-monitor",
                "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/actorpilot~tech-stack-hiring-signal-monitor/runs": {
            "post": {
                "operationId": "runs-sync-actorpilot-tech-stack-hiring-signal-monitor",
                "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/actorpilot~tech-stack-hiring-signal-monitor/run-sync": {
            "post": {
                "operationId": "run-sync-actorpilot-tech-stack-hiring-signal-monitor",
                "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": {
                    "mode": {
                        "title": "Run mode",
                        "enum": [
                            "mcp_server",
                            "search_hiring_signals",
                            "get_company_jobs",
                            "list_top_signals"
                        ],
                        "type": "string",
                        "description": "Choose MCP standby mode for AI-agent access, or a direct run mode to get normal Apify output.",
                        "default": "mcp_server"
                    },
                    "technology": {
                        "title": "Technology",
                        "type": "string",
                        "description": "Required for search_hiring_signals. Example: Salesforce, Kubernetes, Snowflake, dbt."
                    },
                    "companyName": {
                        "title": "Company name",
                        "type": "string",
                        "description": "Required for get_company_jobs. Example: N26, Contentful, Bitpanda."
                    },
                    "country": {
                        "title": "Country filter",
                        "enum": [
                            "DE",
                            "AT",
                            "CH",
                            "all"
                        ],
                        "type": "string",
                        "description": "Optional country filter for direct runs.",
                        "default": "all"
                    },
                    "maxResults": {
                        "title": "Max results",
                        "minimum": 1,
                        "maximum": 50,
                        "type": "integer",
                        "description": "Maximum number of result rows to return for signal list modes.",
                        "default": 10
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
