# Job Posting AI Analyzer — B2B Hiring Signal Scraper (`reverend_bluebell/job-posting-ai-analyzer`) Actor

Scrape job postings and extract hiring signals, tech stack, seniority, and a B2B lead score. Find companies actively spending before you reach out.

- **URL**: https://apify.com/reverend\_bluebell/job-posting-ai-analyzer.md
- **Developed by:** [Mozi Mohidien](https://apify.com/reverend_bluebell) (community)
- **Categories:** Lead generation, Marketing, AI
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 job posting 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/platform/actors/running/actors-in-store#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

## Job Posting AI Analyzer — B2B Hiring Signal Scraper

Companies actively hiring are companies actively spending. This actor turns job postings into B2B lead intelligence.

### What It Does

Paste in job posting URLs from Greenhouse, Lever, Indeed, Workable, company career pages, or other public job boards. The actor scrapes each posting and sends it through Claude AI to extract structured hiring signals: what tech they use, what seniority they're targeting, what problems they're trying to solve, and a B2B relevance score for your ICP.

The output tells you not just "this company is hiring" but "this company is scaling their data team, they're using Snowflake and dbt, the hire is senior, and their budget is clearly open."

**Supported sources:** Greenhouse (via API), Lever (via API), Indeed, Workable, and any public static job page. **LinkedIn is not supported** — LinkedIn requires authentication; LinkedIn URLs return a clear `unsupportedSource` error instead of scraped data.

### Key Features

- Scrapes job postings from public URLs (Greenhouse via API, Lever via API, Indeed, Workable, and static career pages)
- AI extraction of tech stack, seniority, team size signals, culture language
- B2B hiring signal score (1-10) for sales relevance
- Problem inference: what business challenge is this hire solving?
- Decision-maker title inference: who likely approved this hire?
- Batch processing: run hundreds of URLs in one job

### Use Cases

1. **Sales prospecting** — Target companies hiring in functions your product serves. A company hiring 5 data engineers is probably buying data tooling.
2. **Competitor research** — Track what skills competitors are scaling. Frequent ML hires mean they're investing in AI.
3. **Market research** — Spot hiring trends in your target market before industry reports catch up.
4. **Recruitment firms** — Identify which companies are in active growth mode and likely to need more hires.
5. **Founders** — Watch what roles your target customers are filling to understand their priorities.

### Input Fields

| Field | Type | Description |
|---|---|---|
| jobUrls | array | List of job posting URLs to scrape |
| anthropicApiKey | string | Your Anthropic API key for AI analysis |
| minScore | number | Filter out postings scoring below this B2B signal threshold (default: 6) |
| extractTechStack | boolean | Whether to extract technology mentions (default: true) |
| maxConcurrency | number | Parallel scraping threads (default: 5) |

### Sample Input

```json
{
  "jobUrls": [
    "https://boards.greenhouse.io/somecompany/jobs/4567890",
    "https://jobs.lever.co/somecompany/1a2b3c4d-5678-90ab-cdef-1234567890ab"
  ],
  "anthropicApiKey": "sk-ant-api03-...",
  "minScore": 7,
  "extractTechStack": true,
  "maxConcurrency": 5
}
```

### Sample Output

```json
{
  "url": "https://boards.greenhouse.io/somecompany/jobs/4567890",
  "company": "Acme Corp",
  "jobTitle": "Senior Data Engineer",
  "location": "Remote",
  "analysis": {
    "hiringSignalScore": 8,
    "seniority": "Senior (5+ years)",
    "techStack": ["Python", "dbt", "Snowflake", "Airflow", "AWS"],
    "teamContext": "Scaling data platform team — second senior data hire in 3 months based on posting language",
    "businessProblem": "Building self-serve analytics infrastructure to reduce dependency on engineering for reporting",
    "decisionMakerTitle": "Head of Data / VP Engineering",
    "outreachTiming": "Ideal — actively scaling, budget open, decision makers likely engaged"
  }
}
```

### Pricing

Pay-per-result on Apify — no subscription. A typical run of 50 job URLs costs under $0.50 in compute plus $0.02-$0.08 in Anthropic API calls (Claude Haiku).

[Start with $5 free compute on Apify](https://apify.com).

### How to Run

1. Go to [Job Posting AI Analyzer on Apify](https://apify.com/mozimohidien/job-posting-ai-analyzer)
2. Click **Try for free**
3. Paste your job posting URLs (Greenhouse, Lever, Indeed, Workable, company career pages)
4. Add your Anthropic API key
5. Click **Start** — a 10-URL batch typically completes in under 2 minutes

### FAQ

**Which job boards does it support?** Greenhouse (via API), Lever (via API), Indeed, Workable, and any publicly accessible static job posting page, including direct company career pages. **LinkedIn is NOT supported** — LinkedIn job pages require authentication, and the actor returns an `unsupportedSource` error result for LinkedIn URLs instead of scraping them. Any board that requires login won't work.

**How do I find job URLs at scale?** Browse target companies' career pages (many run on Greenhouse or Lever) or job boards like Indeed and Workable, collect the posting URLs, then run them through this actor in batches.

**What's a good hiring signal score?** 7+ indicates strong relevance for most B2B sales use cases. A score of 9-10 means the company is hiring directly into the function your product serves.

**Can I run this daily to monitor a list of companies?** Yes. Set up a scheduled run in Apify with your target companies' career page URLs. Get alerts when new relevant hires appear.

**How accurate is the tech stack extraction?** High for postings that mention tools explicitly. The AI also infers implied tech (a Snowflake data engineer posting implies cloud data warehouse investment even if AWS isn't mentioned).

**Does it work on non-English postings?** Claude AI handles multiple languages, but accuracy is highest on English-language postings.

### Related Actors

- [Company Contact AI Enricher](https://apify.com/mozimohidien/company-contact-ai-enricher) — get contact details and ICP scores for the companies you identify here
- [Reddit Lead AI Finder](https://apify.com/mozimohidien/reddit-lead-ai-finder) — find the same companies employees posting about pain points on Reddit
- [E-commerce Product AI Enricher](https://apify.com/mozimohidien/ecommerce-product-ai-enricher) — enrich product listings for e-commerce prospects you find

# Actor input Schema

## `jobUrls` (type: `array`):

List of public job posting URLs to scrape and analyze. Supports Greenhouse (via API), Lever (via API), Indeed, Workable, and any public static job page. LinkedIn is not supported — it requires authentication.

## `anthropicApiKey` (type: `string`):

Your Anthropic API key. Used to call Claude Haiku for AI enrichment. Get one at console.anthropic.com.

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

Maximum number of job postings to process. Default 10, max 100.

## `proxyConfig` (type: `object`):

Optional proxy settings. Use Apify Proxy or custom proxies.

## Actor input object example

```json
{
  "jobUrls": [
    "https://job-boards.greenhouse.io/anthropic/jobs/5101378008"
  ],
  "maxJobs": 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 = {
    "jobUrls": [
        "https://job-boards.greenhouse.io/anthropic/jobs/5101378008"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("reverend_bluebell/job-posting-ai-analyzer").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 = { "jobUrls": ["https://job-boards.greenhouse.io/anthropic/jobs/5101378008"] }

# Run the Actor and wait for it to finish
run = client.actor("reverend_bluebell/job-posting-ai-analyzer").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 '{
  "jobUrls": [
    "https://job-boards.greenhouse.io/anthropic/jobs/5101378008"
  ]
}' |
apify call reverend_bluebell/job-posting-ai-analyzer --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=reverend_bluebell/job-posting-ai-analyzer",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/NVqunVZc1qXek9Hzi/builds/N3pqvhQHJT6gdepjv/openapi.json
