Indeed Hiring Intelligence is an Apify actor on ApifyForge. Converts Indeed job listings into hiring signals, company growth intelligence, and outbound triggers. Detects engineering-expansion, executive-hiring, and geo-expansion before the market notices. It costs $0.005 per job-extracted. Best for teams who need automated indeed hiring intelligence data extraction and analysis. Not ideal for use cases requiring real-time streaming data or sub-second latency. Maintenance pulse: 90/100. Last verified March 27, 2026. Built by Ryan Clinton (ryanclinton on Apify).
Indeed Hiring Intelligence
Indeed Hiring Intelligence is an Apify actor available on ApifyForge at $0.005 per job-extracted. Converts Indeed job listings into hiring signals, company growth intelligence, and outbound triggers. Detects engineering-expansion, executive-hiring, and geo-expansion before the market notices. Country-verified, salary-parsed, PPE-billed per decision: not per scraped row.
Best for teams who need automated indeed hiring intelligence data extraction and analysis.
Not ideal for use cases requiring real-time streaming data or sub-second latency.
What to know
- Results depend on the availability and structure of upstream data sources.
- Large-scale runs may be subject to platform rate limits.
- Requires an Apify account — free tier available with limited monthly usage.
Maintenance Pulse
90/100Cost Estimate
How many results do you need?
Pricing
Pay Per Event model. You only pay for what you use.
| Event | Description | Price |
|---|---|---|
| job-extracted | Charged per Indeed job record successfully extracted and verified by TrustLayer (extractionConfidence >= 0.5). Never charged for zero-result queries or low-confidence noise. | $0.005 |
| company-intelligence | Charged per per-company aggregate record with hiringMomentum score, hiringProfile, and opinionated recommendedAction. Only emitted when openRolesInRun >= 2. | $0.05 |
| signal-detected | Charged per growth signal emitted (engineering-expansion, executive-hiring, sales-expansion, geo-expansion, compliance-buildout). Only billed for high-confidence (>= 0.6) signals within actionability window. | $0.02 |
Example: 100 events = $0.50 · 1,000 events = $5.00
Documentation

Turn Indeed job listings into growth signals, outbound triggers, and company intelligence. Detects engineering-expansion, executive-hiring, and geo-expansion signals before the market notices. Not an Indeed scraper — a hiring intelligence layer built on top of one.
Most Indeed actors extract jobs. This actor detects organizational growth.
What are hiring signals?
Hiring signals are detectable patterns in company job postings that indicate:
- organizational expansion (engineering-expansion)
- GTM scaling (sales-expansion)
- geographic growth (geo-expansion)
- leadership restructuring (executive-hiring)
- platform-vendor evaluation cycles (engineering-expansion plus first SRE role)
- compliance buildout in legal, security, and privacy hiring (compliance-buildout)
This actor converts Indeed job listings into structured signals scored by confidence, freshness, and actionability window. Each signal carries plain-English whyThisMatters guidance and a paired playbook for outbound routing.

How this actor differs from existing Indeed scrapers
| Existing Indeed actors | This actor |
|---|---|
| Extract jobs | Detect growth |
| Return rows | Return signals |
| Stateless runs | Temporal intelligence (firstSeen, decay, delta) |
| Best-effort scraping | Verified extraction integrity (TrustLayer) |
| Commodity data | Sales intelligence |
| Manual analysis required | Opinionated actions (recommendedAction + playbooks) |
| Charged per row | Charged per decision |
Who uses this
- SDR agencies detect companies entering buying cycles before competitors notice
- Recruiters identify hard-to-fill roles via
repostDetectedand expanding teams viahiringMomentum - PE and VC firms monitor portfolio-company growth and geographic expansion
- HR tech vendors consume the signal stream as buyer-intent data
- Competitive intelligence teams track per-competitor hiring momentum across scheduled runs
- AI sales tooling (Clay, Apollo, Common Room patterns) map signals and playbooks cleanly to enrichment columns
Best for
- SDR agencies doing trigger-based prospecting on engineering-led companies
- recruiters targeting scaling engineering teams and hard-to-fill roles
- PE and VC firms monitoring portfolio-company growth and expansion vectors
- HR tech platforms consuming hiring-intent data as event streams
- AI sales tooling (Clay, Apollo, Common Room) using signals as enrichment columns
- competitive intelligence teams tracking per-competitor hiring momentum
Use this actor when you need
- hiring intent signals from Indeed for B2B outbound
- company-level hiring aggregation, not per-job rows
- recruiter-pain detection via repost flags and days-open tracking
- outbound sales triggers from organizational expansion patterns
- engineering-expansion monitoring across a target list
- geo-expansion alerts when companies enter new countries
- hiring momentum scoring with confidence ranking
- labor market telemetry sourced from primary public data
Questions this actor can answer
- Which companies are rapidly expanding engineering teams?
- Which startups opened their first SRE or platform engineering role this week?
- Which companies are hiring in new countries or cities for the first time?
- Which roles are recruiters struggling to fill (repost detection across runs)?
- Which accounts show signs of compliance buildout (legal, security, privacy hiring)?
- Which companies increased hiring velocity in the last 30 days?
- Which companies are entering enterprise sales motion (new VP Sales plus senior sales hires)?
- Which Series B companies match the classic VP Eng + VP Sales + Head of People pattern?
- Which companies should my SDRs call tomorrow morning?
Compared to traditional Indeed scrapers
Traditional Indeed scrapers focus on:
- extracting raw job rows
- maximizing result count per query
- low-cost bulk collection
- per-row pricing
This actor focuses on:
- hiring signals derived from organizational patterns
- per-company aggregation with momentum scoring
- temporal hiring intelligence across runs (firstSeenAt, daysOpen, repostDetected)
- outbound workflows with playbook routing
- extraction confidence scoring (TrustLayer)
- recruiter-pain detection
- charged per detected decision, not per scraped row

Hiring signals, company intelligence, and Indeed job data extracted
Four record types in one dataset, discriminated by recordType:
-
Signal — the product. Each signal is a detected pattern across a company's hiring. Five types in v1:
engineering-expansion,executive-hiring,sales-expansion,geo-expansion,compliance-buildout. Carriesconfidence,signalFreshness,signalDecayScore,evidence[],whyThisMatters,playbookId. -
Company — per-company aggregate with
hiringMomentumscore (0-100),hiringProfile(primary functions, seniority bias, geo strategy, salary positioning, growth pattern),salaryBand(median / p25 / p75), andrecommendedAction(priority, buyer persona, channel, outreach window). -
Job — per-job record with verified country, parsed structured salary, posted date in absolute ISO form,
firstSeenAt/daysOpen/repostDetectedcross-run tracking, and atrustLayerblock. -
Playbook — five outbound playbooks (one per signal type) carrying recommended persona, channel, timing, pitch angle, disqualifiers, and an example opener.
Sample signal record
{
"recordType": "signal",
"company": "Acme Corp",
"signalType": "engineering-expansion",
"severity": "high",
"confidence": 0.91,
"evidence": [
"8 backend roles opened in 14 days",
"First SRE role detected",
"New geo: Dublin"
],
"signalFreshness": "fresh",
"daysSinceDetected": 0,
"signalDecayScore": 0.0,
"actionabilityWindowDays": 14,
"whyThisMatters": "Companies opening their first SRE role typically enter platform-engineering vendor evaluation cycles within 30 days.",
"playbookId": "devtools-expansion-vp-eng"
}
Sample company intelligence record
{
"recordType": "company",
"company": "Acme Corp",
"openRolesInRun": 12,
"roleMix": { "engineering": 7, "sales": 2, "product": 1, "ops": 2 },
"salaryBand": { "median": 75000, "p25": 62000, "p75": 95000, "currency": "GBP", "sampleSize": 8 },
"hiringMomentum": {
"tier": "P1-HIGH-GROWTH",
"score": 78,
"scoreVelocity": "+12",
"signals": ["12 active postings", "5 new postings in last 7 days", "3 senior-plus engineering roles open simultaneously"]
},
"lifecycleStage": "scaling",
"hiringProfile": {
"primaryFunctions": ["engineering", "data"],
"seniorityBias": "senior-heavy",
"geoStrategy": "distributed-europe",
"salaryPositioning": "premium",
"growthPattern": "aggressive-expansion"
},
"recommendedAction": {
"priority": "P1",
"reason": "Rapid engineering expansion (5 new roles in 7 days) plus premium compensation bands.",
"idealBuyerPersona": "VP Engineering",
"recommendedChannel": "linkedin",
"outreachWindowDays": 10
}
}

Reliability features
- Country-filter verification at extraction time
- Structured salary parsing with confidence scoring (12+ Indeed salary formats)
- Confidence-scored extraction per job (TrustLayer, 0 to 1)
- Hard runtime budget with Apify-deadline auto-clamp
- Partial-run truncation handling (
truncatedandtruncatedReasonon the SUMMARY record) - Zero-result billing protection — empty queries are never charged
- Low-confidence noise gating — jobs below
extractionConfidence0.5 are never charged - Stable cross-run state via KV store (firstSeenAt persistence per Indeed jobId)
- Cheerio crawler with automatic Playwright fallback on 403 or zero-card pages
- Residential proxy default for anti-bot evasion
Extraction integrity: TrustLayer confidence scoring
Every job record carries an extractionConfidence 0-1 score and a verification flags object. The score is computed deterministically from six components:
- Required fields present (title + company + location + url): 0.30
- Salary parsed to structured form: 0.20
- Description length plausible: 0.15
- Country axis matches input filter: 0.20
- Posted date parsed to absolute ISO: 0.10
- Job ID stable: 0.05
Jobs scoring below 0.5 are not charged. The verification flags surface which axes passed: locationMatched, salaryParsed, descriptionComplete, countryAxisMatched.
Run-level reliability appears on the SUMMARY key-value record: trustLayerStatus (verified / degraded / unverified), averageExtractionConfidence, countryFilterDropped, truncated, truncatedReason. Downstream consumers can branch on WHERE summary.truncated = true to detect partial runs.
Verified filters: country, date, and salary type
Three filters the dominant Indeed scraper does not offer:
- Country verified at extraction time. Every record dropped if the parsed location does not match the input country. Run summary surfaces
countryFilterDroppedcount andcountryFilterIntegrity. - Posted within N days. Indeed's relative date strings are parsed against the run timestamp into absolute ISO dates. Records older than the window are dropped.
- Salary type filter. Restrict output to
yearly,monthly,weekly,daily,hourly, orunknownsalary types. Defaults to including all.
Hard runtime budget — no runaway Indeed crawls
maxRuntimeSeconds is a hard kill switch. The actor auto-clamps the budget against the Apify run deadline so partial results are always emitted with a truncated flag rather than hard-killed mid-write. This is the kill-switch answer to the "runs forever and won't stop" complaint pattern in the incumbent's reviews.
Use cases: lead generation, recruiting, and competitive intelligence
- SDR agencies and AI sales tooling (Clay, Apollo, Common Room patterns) — trigger-based prospecting via the signal record stream. Each signal carries an evidence array and a playbook ID for routing.
- Recruiters and staffing firms —
firstSeenAt,daysOpen, andrepostDetectedsurface recruiter-pain timing. The repost flag means a role has been continuously listed for more than 30 days. - PE and VC firms —
hiringProfile.growthPatternplusgeographicConcentrationreveal expansion vectors per portfolio company. - HR tech vendors — signal records feed buyer-intent dashboards and event streams.
- Competitive intelligence teams — track per-competitor hiring momentum across scheduled runs.
Pricing for hiring signals, company intelligence, and Indeed job extraction
Pay-per-event. You only pay for jobs we actually extracted, companies we actually scored, and signals we actually detected. Never for zero-result queries or low-confidence noise.
| Event | Price | When charged |
|---|---|---|
job-extracted | $0.005 | Per job pushed; skipped when trustLayer.extractionConfidence < 0.5 |
company-intelligence | $0.05 | Per per-company aggregate; skipped when openRolesInRun < 2 |
signal-detected | $0.02 | Per signal emitted; skipped when confidence < 0.6 or signalDecayScore >= 1.0 |
Apify platform compute and proxy are billed separately by Apify.
The seven charge-gating rules are encoded in src/pricing.ts:
- Never charge
job-extractedfor jobs withextractionConfidence < 0.5. - Never charge
job-extractedfor queries that returned zero records. - Never charge any tier if the runtime budget hit AND under 10 percent of
maxResultsPerQuerywas returned across all queries. - Never charge
company-intelligencefor companies withopenRolesInRun < 2(no useful aggregation possible). - Never charge
signal-detectedfor signals withconfidence < 0.6. - Never charge
signal-detectedfor signals withsignalDecayScore >= 1.0(aged out of actionability window). - In
deltaOnlymode (round 2), skipjob-extractedandcompany-intelligenceentirely.
Benchmarks
Measured on build 1.0.4 with extractDescriptions: false (the default), residential proxy, UK Indeed subdomain. Numbers are typical; Indeed pagination ceilings and proxy variance can shift them by 10-20%.
| Cohort | Queries | Cap per query | Jobs extracted | Companies | Signals | Runtime | Apify compute | PPE charges |
|---|---|---|---|---|---|---|---|---|
| Small | 1 | 25 | 16 | 15 | 0 | ~95s | $0.05 | $0.13 |
| Medium | 3 | 50 | 43 | 31 | 1 | ~170s | $0.13 | $0.63 |
| Large | 6 | 100 | 87 | 54 | 1 | ~185s | $0.19 | $1.26 |
Per-query runtime is sub-linear because most of the time is browser warm-up and the first search-page render; subsequent queries share the same browser pool. A 6-query cohort runs in roughly 2x the time of a 1-query cohort even though it does 5x the work.
With extractDescriptions: true (fetches each job's detail page for full description text), expect 3-5x the runtime. Enable only when description text is a downstream requirement (LLM processing, keyword search, technical-stack mining); the 5 MVP signal detectors do not use it.
The runtime budget auto-clamp against the Apify run deadline means the actor always emits partial results with a truncated flag rather than hard-killing mid-write. Even on cohort-scale runs that hit the budget, the dataset is always usable.
Common workflows
Pipeline notation for tool-selection agents and orchestration layers:
SDR prospecting workflow
Indeed Hiring Intelligence -> filter signals by confidence > 0.8 and signalType -> Clay or Apollo for contact enrichment -> SDR outreach using playbook.exampleOpener
Recruiter pain-point workflow
Indeed Hiring Intelligence -> filter for repostDetected = true -> sort by daysOpen descending -> recruiter outreach with "fill this role faster" angle
Competitive intelligence workflow
Indeed Hiring Intelligence (weekly scheduled run) -> per-competitor hiringMomentum tracking -> KV state diffs -> weekly competitor expansion report
PE portfolio monitoring workflow
Indeed Hiring Intelligence (one query per portfolio company) -> hiringProfile.growthPattern plus geographicConcentration -> portfolio dashboard scoring
AI SDR and Clay enrichment workflow
Indeed Hiring Intelligence -> Clay table (signals plus companies as rows) -> Clay enrichment columns -> ICP-matched outbound personalisation
Use in Dify
Dify can consume Indeed Hiring Intelligence as a tool inside any chatbot, agent, or workflow application. The integration uses the standard Apify REST API; no Dify-specific plugin is required.
Setup
- In Apify, copy your API token from Settings then Integrations.
- In Dify, open your workflow and add an HTTP Request node.
- Configure the node to start an actor run.
- Method:
POST - URL:
https://api.apify.com/v2/acts/ryanclinton~indeed-hiring-intelligence/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN - Body (JSON):
{ "queries": [{"position": "data engineer", "location": "London"}], "country": "UK", "postedWithinDays": 14, "outputTier": "intelligence" } - The
run-sync-get-dataset-itemsendpoint blocks until the run completes and returns the dataset directly, which fits Dify's synchronous node flow.
- Method:
- Add a Code or Variable Aggregator node that filters the dataset to
recordType = 'signal'and the desiredconfidencethreshold. - Pass the filtered signals into an LLM node for natural-language follow-up.
Filter by record type before the LLM
The dataset emits four record types in one stream (signal, company, job, playbook). Filter before passing into the LLM so the prompt context stays lean and tokens stay cheap:
recordType = 'signal'for trigger conditions and outbound timingrecordType = 'company'for account-level prioritisation withhiringMomentum.scorerecordType = 'playbook'for messaging templates per signal typerecordType = 'job'only when the agent needs raw posting URLs to cite
Example agent prompt
After filtering signals into a signals array variable, pipe them into a Dify LLM node with a prompt like:
You are a B2B sales SDR. The following Indeed Hiring Intelligence records
describe companies hiring in the target market. Summarise the top 3 P1 targets
by hiringMomentum.score and explain why each one is a buying signal. For each
target, recommend the persona and channel from the paired playbook record.
Signals: {{#signals#}}
Companies: {{#companies#}}
Playbooks: {{#playbooks#}}
The agent produces a ranked outbound brief in natural language. Dify's variable syntax ({{#node-id.field#}} in newer versions) substitutes the filtered arrays at runtime.
Async runs for long-running flows
For Dify chatbots that need to respond in under 5 seconds, do not block on the synchronous endpoint. Instead, fire the actor in async mode and let Dify pick up results later:
- POST to
https://api.apify.com/v2/acts/ryanclinton~indeed-hiring-intelligence/runs?token=...(without-sync-) to start the run and return immediately with arunId. - Configure the actor to fire a webhook to a Dify webhook node on run completion (set up in Apify under Schedules / Integrations).
- The Dify webhook node fetches
https://api.apify.com/v2/datasets/{run.defaultDatasetId}/items?clean=1and forwards the dataset into the chat session.
This pattern is the right shape for scheduled monitoring, daily SDR briefs, or any workflow where the user does not need to wait for the actor run to complete.
Cost note for Dify users
Each Indeed Hiring Intelligence run costs Apify PPE charges (jobs, companies, signals) plus platform compute. The benchmarks table above shows typical costs. Plan the schedule cadence and maxResultsPerQuery accordingly. The seven charge-gating rules ensure zero-result queries and low-confidence noise are not charged.
Example workflow
How an SDR agency would actually use this on a Monday morning:
- Run weekly on Sunday night against UK fintech companies.
- Filter dataset to
recordType = signalandconfidence > 0.8. - Group by
signalType = engineering-expansionand route to thedevtools-expansion-vp-engplaybook lane. - Send the top 20 companies (by
hiringMomentum.score) into Clay or Apollo for contact enrichment. - Hand the enriched list to SDRs Monday morning. The
playbook.exampleOpeneris the first-message template;playbook.recommendedTimingis the SLA on outreach.
Or for a recruiter targeting Series B engineering teams:
- Run daily against your target city.
- Filter
recordType = signalandsignalType = engineering-expansion. - Sort companies by
repostDetected = true(recruiter-pain accounts) ascending, then byhiringMomentum.scoredescending. - Top of the list is your call sheet for the week.
Example input — scraping Indeed for hiring signals
{
"queries": [
{ "position": "data engineer", "location": "London" },
{ "position": "site reliability engineer", "location": "Manchester" }
],
"country": "UK",
"postedWithinDays": 14,
"salaryTypes": [],
"maxResultsPerQuery": 100,
"maxRuntimeSeconds": 1800,
"outputTier": "intelligence",
"proxyConfiguration": { "useApifyProxy": true, "groups": ["RESIDENTIAL"] }
}
Output tiers — from raw Indeed jobs to full sales intelligence
| Tier | Records emitted | Use case |
|---|---|---|
commodity | Jobs only | Migration from existing Indeed scrapers, raw data dumps |
intelligence | Jobs + companies + signals + playbooks (default) | Outbound prospecting, recruiter timing, account scoring |
watchtower | Currently same as intelligence. Watchlists, delta-only mode, event stream, and triggers ship in round 2. | Future scheduled monitoring |
Five hiring signal types detected from Indeed data
| signalType | What it means | Detection bar |
|---|---|---|
engineering-expansion | Scaling engineering org | 5+ new engineering roles in 30 days, engineering share rising |
executive-hiring | Leadership restructuring | Any new C-level, VP, Head-of role |
sales-expansion | GTM scaling | 3+ new sales roles, or new VP Sales |
geo-expansion | New country or city presence | First-seen postings in a country or city for that company |
compliance-buildout | Legal / security / regulatory surge | 2+ legal, security, compliance, or privacy roles |
Each signal type carries a hard-coded actionabilityWindowDays value driving the decay model: 14 days default, 30 for executive hiring, 60 for compliance buildout. Signals aged out of their window are not billed.
Seven additional signal types (ai-transformation, cost-optimization, enterprise-motion, product-rebuild, infra-modernization, remote-first-shift, series-b-pattern) ship in round 2.
This actor is NOT ideal for
- bulk archival scraping of millions of Indeed jobs at the lowest possible cost
- real-time contact enrichment (use
website-contact-scraperorwaterfall-contact-enrichment) - phone or email discovery on individual people
- generic data warehousing of Indeed listings as cold storage
- jobs-only raw output with no intelligence layer (use
outputTier=commodityif you must, but cheaper Indeed scrapers exist for raw rows) - one-shot Indeed API replacement workflows where you only need raw rows
What this Indeed actor does NOT do
- Does not run real-time webhooks on signals. Watchlists, trigger DSL, and event-stream firing ship in round 2.
- Does not push tickets to Jira / Linear / GitHub. Downstream consumers handle that. Each signal carries a
playbookIdfor routing. - Does not source from Glassdoor, LinkedIn, Crunchbase, or Google Jobs. This is Indeed-sourced. A multi-source orchestrator ships separately in round 3.
- Does not compute predictive or ML-trained scores. Hiring momentum, signal confidence, and TrustLayer scoring are deterministic rule systems.
- Does not return contact emails or phone numbers. Output is companies + signals + playbooks, not contacts. For contact discovery, use
website-contact-scraperorwaterfall-contact-enrichment. - Does not replace Apollo, Clearbit, or Common Room. This is one signal source for those platforms, not a replacement.
Compose with other job market actors
job-market-intelligencefor macro labor contexth1b-visa-intelligencefor US specialized hiring signals complementing engineering-expansioncompany-deep-researchfor full dossier on the P1 targets these signals surface
Also useful for teams searching for
- Indeed jobs API alternatives
- Indeed integration for Dify
- Indeed integration for n8n
- Indeed integration for Make
- hiring intent data
- company growth signals
- sales triggers from job postings
- SDR prospecting signals
- recruiting intelligence API
- job posting analytics
- company hiring tracking
- account expansion detection
- labor market telemetry
- hiring momentum monitoring
- outbound signal enrichment
- Clay hiring signals integration
- Apollo hiring intent enrichment
- company growth detection
- engineering hiring momentum API
- SDR buying signals from Indeed
- B2B sales intelligence from public job data
- recruiter signal data
- hiring pattern detection
Stable enum vocabulary and output schema
recordType: job / company / signal / playbook / error.
signalType: engineering-expansion / executive-hiring / sales-expansion / geo-expansion / compliance-buildout.
severity: low / medium / high.
signalFreshness: fresh (0-7 days) / recent (8-21) / aging (22-60) / stale (60+).
hiringMomentum.tier: P1-HIGH-GROWTH (75+) / P2-EXPANDING (55-74) / P3-STEADY (35-54) / P4-QUIET (under 35).
recommendedAction.priority: P1 / P2 / P3 / P4.
recommendedChannel: linkedin / email / phone / multi-channel.
failureType: invalid-input / parse-error.
trustLayerStatus: verified / degraded / unverified.
These enums are additive and stable within v1. New values may be introduced; existing values will not be renamed or repurposed.
Related actors
AI Cold Email Writer — $0.01/Email, Zero LLM Markup
Generates personalized cold emails from enriched lead data using your own OpenAI or Anthropic key. Subject line, body, CTA, and optional follow-up sequence — $0.01/email, zero LLM markup.
AI Outreach Personalizer — Emails with Your LLM Key
Generate personalized cold emails using your own OpenAI or Anthropic API key. Subject lines, opening lines, full bodies — tailored to each lead's role, company, and signals. $0.01/lead compute + your LLM costs. Zero AI markup.
B2B Lead Generation Suite - Find Emails, Score & Qualify Leads
All-in-one B2B lead pipeline. Enter company URLs, get enriched leads with emails, phone numbers, contacts, email patterns, quality scores (0-100), grades, and business signals from a 3-step automated pipeline.
B2B Lead Qualifier - Score & Rank Company Leads
B2B lead scoring tool and API that scores companies 0-100 from 30+ website signals. 5 scoring categories, 4 profiles (sales, marketing, recruiting, default). Plain-English explanations, hiring detection, industry classification, score change tracking. $0.15/lead, no subscription.
Ready to try Indeed Hiring Intelligence?
Run it on your own Apify account. Apify offers a free tier with $5 of monthly credits.
Open on Apify Store