# Startup Hiring Signals & Lead Finder (`complex_intricate_networks/startup-hiring-signals-scraper`) Actor

Extract founder contacts, hiring velocity signals, and active job openings from fast-growing startups and LinkedIn profiles. Identify high-intent B2B sales prospects and recruitment leads with verified contact metadata.

- **URL**: https://apify.com/complex_intricate_networks/startup-hiring-signals-scraper.md
- **Developed by:** [CIN](https://apify.com/complex_intricate_networks) (community)
- **Categories:** Jobs, Lead generation, Automation
- **Stats:** 5 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $10.00 / 1,000 results

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?

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

Automatically extract real-time hiring status, careers page links, company LinkedIn URLs, and founder profile links from any list of startup websites. Export clean data, run the scraper via API, schedule recurring checks, or stream leads directly into your CRM.

***

### 🚀 How to Enrich Startup Hiring Signals in 5 Steps

1. **Create** a free [Apify account](https://console.apify.com/sign-up).
2. **Open** [Startup Hiring Signals & Founder Contact Finder](https://apify.com/complex_intricate_networks/founder-contact-enricher-hiring-signals) in the Apify Console.
3. **Configure your Input:** Paste a list of startup website URLs into `startUrls` and set your maximum crawl budget.
4. **Click "Start"** to launch the high-speed Cheerio extraction engine.
5. **Download your enriched contacts** in JSON, CSV, or Excel, or connect via API/MCP Server.

***

### 🌟 Key Features & Advantages

- 🎯 **Hiring Intent Detection:** Analyzes homepage content and detects active careers links (`/careers`, `/jobs`, `/join-us`) to determine live hiring activity.
- 👤 **Founder & Team LinkedIn Extraction:** Automatically discovers personal LinkedIn profile URLs (`linkedin.com/in/`) linked across startup pages.
- 🏢 **Verified Company Metadata:** Grabs official company LinkedIn URLs, page titles, and meta descriptions for clean firmographic enrichment.
- ⚡ **High-Speed Cheerio Engine:** Bypasses heavy headless browsers to extract data up to 10x faster with minimal compute unit (CU) costs.
- 🛡️ **Anti-Blocking Support:** Integrates seamlessly with Apify Proxy to prevent IP bans and rate limits.

***

### 💼 Actionable Use Cases & Recipes

#### 🎯 B2B Outbound & SDR Sales Triggers

- **Goal:** Reach out to startups expanding their teams when buying intent and budget availability are highest.
- **Recipe:** Take a list of target domains, run this Actor to identify `hiringStatus: "Active"`, and route founder LinkedIn profiles directly to your outbound sequences.

#### 👥 Executive Search & Tech Recruitment

- **Goal:** Detect fast-growing startups before jobs hit major saturated aggregators.
- **Recipe:** Run scheduled weekly crawls on niche startup portfolio lists to track when companies spin up dedicated career portals.

***

### 💰 Pricing & Plan Capacity

This Actor operates on a transparent **Pay Per Event (PPE)** pricing model. You are only charged for successfully returned records ($10.00 / 1,000 results).

| Plan Tier | Estimated Cost / 1,000 Results | Monthly Volume Capacity |
| :--- | :--- | :--- |
| **Free Plan** | $10.00 | ~500 startups / month |
| **Starter Plan** | $9.00 *(10% disc.)* | ~5,500 startups / month |
| **Scale Plan** | $8.00 *(20% disc.)* | ~62,500 startups / month |

***

### ⬇️ Input Configuration

Configure inputs via the Apify Console UI or pass a JSON payload:

#### Input JSON Example

{
"startUrls": \[
{ "url": "<https://openai.com>" },
{ "url": "<https://anthropic.com>" },
{ "url": "<https://apify.com>" }
],
"maxRequestsPerCrawl": 50,
"proxyConfiguration": {
"useApifyProxy": true
}
}

### 📥 Input Parameters

| Parameter | Type | Default | Description |
| :--- | :--- | :--- | :--- |
| `startUrls` | Array | *(Required)* | List of target startup website URLs to analyze. |
| `maxRequestsPerCrawl` | Integer | `50` | Maximum number of page requests allowed across all target domains. |
| `proxyConfiguration` | Object | `{"useApifyProxy": true}` | Proxy configuration to bypass IP rate limits. |

***

### ⬆️ Output Data Schema

Scraped results are pushed directly to your dataset in JSON, CSV, or Excel formats.

#### Sample Output Object (JSON)

```json
{
  "website": "[https://openai.com](https://openai.com)",
  "siteTitle": "OpenAI",
  "sourceDescription": "OpenAI is an AI research and deployment company.",
  "hiringStatus": "Active",
  "careersUrl": "[https://openai.com/careers](https://openai.com/careers)",
  "linkedInCompanyUrl": "[https://www.linkedin.com/company/openai](https://www.linkedin.com/company/openai)",
  "founderLinkedInUrls": [
    "[https://www.linkedin.com/in/samaltman](https://www.linkedin.com/in/samaltman)",
    "[https://www.linkedin.com/in/gregbrockman](https://www.linkedin.com/in/gregbrockman)"
  ],
  "timestamp": "2026-08-17T13:48:22.307Z"
}
```

#### Diagnostic Error Output Schema

If a domain is unreachable or blocked, an error record is added so your downstream workflow never breaks silently:

```json
{
  "website": "[https://unreachable-startup-domain.com](https://unreachable-startup-domain.com)",
  "error": "Failed to fetch domain or blocked by target anti-bot system.",
  "errorCode": "REQUEST_FAILED",
  "timestamp": "2026-08-17T13:48:22.307Z"
}
```

***

### 🤖 MCP Server & AI Agent Integration

Connect this Actor to AI Agents and LLMs (Claude Desktop, Cursor, LibreChat) using the **Apify MCP Server**:

1. Start an SSE session with Apify's MCP endpoint (`https://mcp.apify.com`).
2. Pass `complex_intricate_networks/founder-contact-enricher-hiring-signals` to enrich domains and evaluate hiring signals dynamically inside LLM prompts.

***

### 💻 Programmatic API Access (SDKs)

Run this Actor programmatically using Python or JavaScript:

#### Python Client (`apify-client`)

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("complex_intricate_networks/founder-contact-enricher-hiring-signals").call(
    run_input={
        "startUrls": [
            {"url": "[https://openai.com](https://openai.com)"},
            {"url": "[https://anthropic.com](https://anthropic.com)"}
        ],
        "maxRequestsPerCrawl": 20
    }
)

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(f"{item.get('website')} | Hiring: {item.get('hiringStatus')} | LinkedIn: {item.get('linkedInCompanyUrl')}")
```

#### JavaScript Client (`apify-client`)

```javascript
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('complex_intricate_networks/founder-contact-enricher-hiring-signals').call({
    startUrls: [
        { url: '[https://openai.com](https://openai.com)' },
        { url: '[https://anthropic.com](https://anthropic.com)' }
    ],
    maxRequestsPerCrawl: 20,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.log(`${item.website} | Hiring: ${item.hiringStatus} \vert{} Careers:${item.careersUrl}`);
});
```

***

### 🔄 Expand Your B2B Intelligence Pipeline

Enrich your lead flow by pairing this tool with our complementary scrapers:

- **[Startup Fundraising Scraper](https://apify.com/complex_intricate_networks/fundraising-and-startup-funding-scraper):** Discover newly funded companies across TechCrunch, Crunchbase, and FinSMEs.
- **[Company Signal - AI Company Research](https://apify.com/complex_intricate_networks/company-research-ai):** Deep-dive into company firmographics, tech stacks, and web traffic.
- **[LinkedIn 24h Jobs Scraper](https://apify.com/complex_intricate_networks/linkedin-24h-jobs-scraper-real-time-job-alerts-leads):** Track live job postings published within the last 24 hours.

***

### ❓ FAQ

**How does the Actor determine hiring status?**\
It inspects page anchors for career keywords (`/careers`, `/jobs`, `/openings`), scans page copy for explicit hiring phrases (*"we're hiring"*, *"open positions"*), and extracts active careers portal links.

**Why does this Actor use Cheerio instead of Playwright/Puppeteer?**\
Most corporate websites expose their header/footer navigation links and meta tags directly in static HTML. Cheerio processes these pages in milliseconds without launching full browser instances, cutting runtime compute costs by over 80%.

**Can I run this on a recurring schedule?**\
Yes. Use Apify **Schedules** to rerun your target domain lists automatically and receive fresh webhook notifications whenever a startup changes its hiring status to "Active".

**Is scraping public corporate data legal?**\
Yes. This Actor only extracts publicly disclosed information (meta titles, public navigation links, and company LinkedIn URLs) in compliance with international public web data access standards.

# Actor input Schema

## `startUrls` (type: `array`):

List of startup websites to analyze (e.g., https://openai.com, https://stripe.com).

## `maxRequestsPerCrawl` (type: `integer`):

Maximum number of page requests allowed across all target domains.

## `proxyConfiguration` (type: `object`):

Select proxy settings. Apify Datacenter or Residential proxies prevent rate limiting.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://apify.com"
    },
    {
      "url": "https://openai.com"
    },
    {
      "url": "https://anthropic.com"
    }
  ],
  "maxRequestsPerCrawl": 50,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# 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 = {
    "startUrls": [
        {
            "url": "https://apify.com"
        },
        {
            "url": "https://openai.com"
        },
        {
            "url": "https://anthropic.com"
        }
    ],
    "maxRequestsPerCrawl": 50,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("complex_intricate_networks/startup-hiring-signals-scraper").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 = {
    "startUrls": [
        { "url": "https://apify.com" },
        { "url": "https://openai.com" },
        { "url": "https://anthropic.com" },
    ],
    "maxRequestsPerCrawl": 50,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("complex_intricate_networks/startup-hiring-signals-scraper").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 '{
  "startUrls": [
    {
      "url": "https://apify.com"
    },
    {
      "url": "https://openai.com"
    },
    {
      "url": "https://anthropic.com"
    }
  ],
  "maxRequestsPerCrawl": 50,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call complex_intricate_networks/startup-hiring-signals-scraper --silent --output-dataset

```

## MCP server setup

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

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/BgkeXgZ80JCGf5n6q/builds/w4OdsfFp37OYLoJB7/openapi.json
