Indeed Hiring Signals Snapshot avatar

Indeed Hiring Signals Snapshot

Pricing

from $4.25 / 1,000 job signal delivereds

Go to Apify Store
Indeed Hiring Signals Snapshot

Indeed Hiring Signals Snapshot

Bounded hiring-intelligence snapshots from Indeed search pages with deduplicated job cards, stable keys, free company summaries, and honest terminal sentinels. No detail-page requests or invented URLs.

Pricing

from $4.25 / 1,000 job signal delivereds

Rating

0.0

(0)

Developer

Tim Zinin

Tim Zinin

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

7 days ago

Last modified

Share

Bounded search-page data for hiring intelligence, market research, recruiting workflows, and machine-to-machine agents.

1. What it does

Enter a job or skill query and a location. The Actor makes a best-effort attempt to open up to three Indeed search pages, reads the cards shown on those pages, removes duplicates, and returns job-card signals plus free company summaries. Indeed may gate pages after the first behind source authentication, so maxPages is an upper bound, not a completeness guarantee.

2. What you upload

{
"query": "data analyst",
"location": "Austin, TX",
"maxPages": 2,
"maxItems": 15,
"proxyConfiguration": {"useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"], "apifyProxyCountry": "US"}
}

query and location are strings. maxPages is 1–3 and defaults to 1. maxItems is 1–50 and defaults to 15. Only Apify Proxy RESIDENTIAL with apifyProxyCountry: "US" is accepted; missing or non-US country, lowercase country, arbitrary groups, custom endpoints, and datacenter proxy are rejected before crawling. Proxy bandwidth is billed separately by Apify.

3. What you receive

Job rows contain rowType: "job", stable jobKey, title, company, location, salary and posted snippets when visible, page, position, source search URL, and a direct jobUrl only when the search card itself supplied one. Missing values remain null.

Company rows contain rowType: "company_summary", company, delivered job count, locations, and up to five representative titles. They are free.

Each terminal outcome produces exactly one free rowType: "sentinel" row. maxItems, maxPages, no-progress, budget-exhausted, and source authentication use status: "limited" with a matching action and partialReason. Explicit Indeed no-results uses status: "empty" and action: "stop-no-results"; an HTTP-200 page with neither cards nor an explicit no-results message is status: "error" with action: "stop-unrecognized-page". Blocked, error, and empty paths are not duplicated.

4. Simple examples

  • A recruiter asks for "registered nurse" in Denver, CO and receives deduplicated cards from the selected pages.
  • A market analyst asks for "warehouse automation" in Dallas, TX, groups the free company summaries, and feeds stable jobKey values into a later workflow.
  • An agent sets maxItems: 5 for a predictable small run.

5. Billing

Pricing is pay per event. On the FREE subscription tier, actor-start costs $0.005 per allocated GB and each successfully delivered rowType: "job" emits result-found at $0.005. The default 2 GB run therefore starts at $0.010. BRONZE/SILVER/GOLD/PLATINUM/DIAMOND per-GB start and per-job prices are $0.00475/$0.0045/$0.00425/$0.0041/$0.004. Company summaries, decoys, blocked/empty/error outcomes, and terminal sentinels have no dataset-item event charge. Residential proxy usage is a separate Apify charge. The Actor fails closed if pricing or the run budget cannot be verified.

6. Pagination and bounds

Pages use Indeed search offsets 0, 10, and 20. The Actor never requests more than three pages or 50 paid job rows. Pagination is best effort: pages after the first may redirect to Indeed's secure.indeed.com/auth?...branding=page-two-signin gate. When the gate's sign-in/create-account copy confirms that more than one page requires login, the Actor emits one free limited sentinel with partialReason: "authentication-required", preserves the requested /jobs?...&start=10 as sourceSearchUrl, and stops without incrementing failedCount. Reaching maxItems prevents another page even when the cap is reached by the final delivered row. A platform money/event limit is reported separately as budget-exhausted. Repeated real keys on page two or later produce no-progress; a page containing only decoys/unusable cards is empty; an unrecognized zero-card HTTP-200 page is an error. A page is not retried automatically.

7. Honest data boundary

This is a search-card snapshot, not a full job scraper. Its browser route guard fails closed: only the exact /jobs search pages (offsets 0, 10, and 20), approved static resources, and challenge resources are allowed; Indeed detail navigation and detail subrequests (/viewjob, /rc/clk, mobile/basecamp routes, detail APIs, and /jobs URLs carrying a detail selector such as vjk, jk, jobId/job_id, jobKey/job_key, postingId, or an equivalent job/posting/listing/position identifier) are aborted before they are sent. It never fetches job detail pages, descriptions, applications, contact information, or salary estimates. A URL is never invented from a title. Salary and posted values are snippets, not normalized facts.

8. Anti-bot behavior

Indeed challenge pages and HTTP 401/403/429/503 responses produce one free blocked sentinel. The exact positive page-two authentication gate produces stop-auth-required, not blocked or empty. Known honeypot/decoy cards are excluded from progress and billing; they do not create per-decoy dataset rows. The Actor does not solve challenges or click through them.

9. Output contract

The stable fields are rowType, jobKey, title, company, jobLocation, salary, posted, jobUrl, page, position, sourceSearchUrl, status, partial, and partialReason. Company summary rows also include companyJobCount and representativeTitles. The OUTPUT key-value record contains page count, paid/free counts, decoy count, blockedDetailAttempts, stop reason, replay safety, and fatal-error state. Authentication-gated pagination sets stopReason: "authentication-required", fatalError: false, and leaves failedCount unchanged.

10. Machine-to-machine use

The flat JSON rows are designed for n8n, Make, MCP tools, scheduled enrichment, and agent pipelines. Use rowType as the router, jobKey as the idempotency key, status as the health signal, and partialReason before acting on incomplete data.

Use this Actor to discover current hiring signals, then pass selected companies or stable keys to your own verification/enrichment workflow. Do not treat a search card as proof that a vacancy is still open without a separate permitted verification step.

Pair with company-hiring-radar for broader company hiring signals, hiring-trend-index for trend aggregation, job-postings-aggregator for multi-board comparison, and job-alert for recurring monitoring. These are complementary, not hidden dependencies; each must be run separately.

13. Privacy and safety

Do not submit personal data or secrets as query/location text. Inputs are encoded as search parameters. Logs contain counts and states, never proxy credentials or API keys.

14. Limitations and support

Indeed markup, availability, ranking, and anti-bot behavior can change. Results reflect only what was visible on the requested search pages at run time. For reproducible automation, save the input, OUTPUT summary, timestamp, and dataset export together.

15. Public task

The included public task searches data analyst in Austin with at most one page and ten paid rows. At the FREE subscription tier and this Actor's 2 GB memory setting, its maximum event charge is $0.06: up to two $0.005 start units (Apify counts one per GB) plus at most ten $0.005 delivered jobs. Residential proxy usage is billed separately; summaries and sentinels do not incur dataset-item charges.