Instahyre Jobs Scraper avatar

Instahyre Jobs Scraper

Pricing

from $0.63 / 1,000 item extracteds

Go to Apify Store
Instahyre Jobs Scraper

Instahyre Jobs Scraper

Extract public Instahyre jobs with employer profiles, locations, skills, supported facets, and India hiring-market counts. No login or browser required.

Pricing

from $0.63 / 1,000 item extracteds

Rating

0.0

(0)

Developer

Automation Lab

Automation Lab

Maintained by Community

Actor stats

0

Bookmarked

22

Total users

3

Monthly active users

0.22 hours

Issues response

10 days ago

Last modified

Share

Extract Instahyre jobs from the platform's public India hiring feed without a login. The Actor returns stable job and employer IDs, titles, employer profiles, locations, skills, supported search facets, canonical URLs, and current hiring-market counts.

Use the results for vacancy tracking, recruiting research, employer hiring signals, skill-demand analysis, or a scheduled new-job feed. The Actor uses Instahyre's public JSON search API rather than challenged HTML pages.

What does Instahyre Jobs Scraper do?

The Actor resolves public Instahyre job-function slugs and common role aliases, applies the source's genuine server-side filters, walks the search feed, and saves one normalized dataset row per vacancy.

It supports:

  • one or several job functions, such as backend development, data science, or sales / business development;
  • common sales-role aliases (SDR, BDR, BDE, Account Executive, and Sales), normalized to Instahyre's sales / business development function;
  • full-time and internship filtering;
  • small, medium, or large company facets;
  • bounded pagination up to your requested job limit;
  • monitor mode for recurring new-vacancy collection;
  • aggregate counts for company sizes, job types, top locations, job functions and top hiring companies;
  • a market snapshot and clear run summary, including when a monitor returns no new jobs.

It does not scrape login-only candidate or recruiter information.

Who is it for?

  • Recruiting teams can identify companies hiring for specific technical functions.
  • Talent intelligence analysts can compare vacancy and skill demand over time.
  • Job-market researchers can track India technology hiring by location and company size.
  • Data engineers can feed normalized job rows into a warehouse, spreadsheet, or BI tool.
  • Automation builders can schedule the Actor and process only newly observed listings.

Why use this Actor?

The main Instahyre search and detail HTML pages are protected by a browser challenge. The public search JSON feed is not: it provides structured listings without a browser, residential proxy, account, or fragile selectors.

The Actor validates filter values instead of silently accepting unsupported searches. Instahyre's public feed does not implement reliable keyword or location query parameters, so this Actor does not claim those filters. It exposes only source-supported job function, job type, and company-size facets.

What Instahyre job data can I extract?

FieldMeaning
jobIdStable Instahyre vacancy ID
title, candidateTitlePublic job titles
companyId, companyNameStable employer ID and name
companyTagline, companyAboutPublic employer profile summary
companyFounded, employeeCountEmployer context when available
companyLogoUrlPublic company logo URL
locations, locationsRawNormalized and source location values
skillsSkills and technology keywords
acceptsOutstationCandidatesWhether outstation candidates are accepted
url, resourceUriCanonical page and API resource references
jobFunctionSlugs, jobType, companySizeFilters used for the row
marketCountsTotal and facet counts for the same search
scrapedAtCollection timestamp in ISO 8601 format

Fields may be null or empty when Instahyre does not provide a value.

How to scrape Instahyre jobs

  1. Open the Actor in Apify Console.
  2. Select one or more suggested job functions, enter a current jobFunctionSlugs value, or use a common sales alias such as SDR, BDR, BDE, Account Executive, or Sales. Use an empty list for the full feed.
  3. Choose a job type and company-size facet if needed.
  4. Set maxItems to the maximum number of jobs to save.
  5. Turn on monitorMode only for a recurring schedule that should deliver newly observed jobs.
  6. Click Start and open the default dataset when the run finishes.

The default prefill collects current backend-development jobs and produces useful output immediately.

Input parameters

InputTypeDefaultDescription
jobFunctionSlugsstring array['backend-development']Suggested Instahyre functions, current source slugs, or supported sales-role aliases. Empty means all functions.
jobTypestringanyany, full_time, or internship
companySizestringanyany, small, medium, or large
maxItemsinteger100Maximum saved jobs, from 1 to 5,000
monitorModebooleanfalseRetain delivered IDs and scan a bounded rotating feed window for unseen jobs

Common sales-role aliases (SDR, BDR, BDE, Account Executive, and Sales) normalize to sales-business-development. Unknown or inactive values still fail clearly rather than returning misleading unfiltered data.

Example input

{
"jobFunctionSlugs": ["backend-development"],
"jobType": "full_time",
"companySize": "any",
"maxItems": 25,
"monitorMode": false
}

For internships across all functions, use an empty jobFunctionSlugs array and set jobType to internship.

Example output

{
"jobId": 430341,
"title": "Senior Software Engineer - Care & Onboarding",
"candidateTitle": "Senior Software Engineer - Care & Onboarding",
"companyId": 36883,
"companyName": "Toast",
"companyTagline": "Be there",
"companyFounded": 2011,
"employeeCount": 1000,
"companyAbout": "Toast provides cloud-based restaurant software and customer support.",
"companyLogoUrl": "https://media.instahyre.com/images/profile/base/employer/36883/sample.webp",
"locations": ["Bangalore"],
"locationsRaw": "Bangalore",
"skills": ["Java"],
"acceptsOutstationCandidates": false,
"url": "https://www.instahyre.com/job-430341-senior-software-engineer-care-onboarding-at-toast-bangalore/",
"resourceUri": "/api/v1/job_search/430341",
"jobFunctionSlugs": ["backend-development"],
"jobType": "full_time",
"companySize": "any",
"marketCounts": {
"totalJobs": 3952,
"byCompanySize": { "small": 1105, "medium": 626, "large": 2227 },
"byJobType": { "full_time": 3952, "internship": 6 },
"topLocations": [{ "name": "Bangalore", "count": 2348 }],
"topJobFunctions": [{ "id": 10, "name": "Backend Development", "count": 3958 }],
"topCompanies": [{ "name": "Example Technologies", "count": 25 }]
},
"scrapedAt": "2026-08-12T20:16:58.452Z"
}

The example reflects the current output shape. Source values and counts change as Instahyre's feed changes.

How does monitor mode work?

With monitorMode: true, the Actor retains up to 20,000 delivered job IDs for the normalized combination of job functions, job type, and company size. Sales aliases and their canonical slug share a filter identity; changing only maxItems does not reset it. Existing saved IDs are migrated without a baseline reset. Unchanged runs and removal of an old head no longer erase delivered history.

Every run checks the first page, then resumes a rotating background cursor within the first 10,000 source results. It stops at maxItems, the charge budget, the end/window boundary, the first background page with no newly delivered jobs, or a page budget of ceil(maxItems / 35) + 1. A zero-new run reads at most two search pages. A partial page is revisited so a cap does not discard its pending vacancies. Results follow source-observed order, not a guaranteed posting-date order. A run can return fewer than maxItems while background scanning continues on later runs.

Within a stable feed and retained history, repeated successful runs drain unseen backlog without re-delivering old IDs. Background-only additions can take a full cursor cycle to appear (up to 285 background pages, plus extra runs to drain capped pages). Feed movement, removals before collection, records beyond the 10,000-result window and IDs evicted after 20,000 later deliveries prevent a complete historical or exactly-once guarantee.

State uses the existing named store instahyre-jobs-monitor-state-v1 and normalized filter key. Same-filter runs in the same account share state, including different Tasks. Different filter combinations have separate keys; Tasks alone do not isolate identical filters. Do not overlap same-filter monitor runs: there is no distributed writer lock. Checkpoints are written only after successful collection and summary storage. Dataset writes, item charges and state updates are not one atomic transaction: a failed or interrupted run can leave partial output/charges without a checkpoint and redeliver those IDs next time. Deduplicate downstream by jobId.

Monitor mode is not an alert delivery service by itself. Connect the dataset to a webhook, Make, Zapier, Slack, email workflow, or your own system for notifications.

Market snapshot and run summary

The Output tab links to the default key-value store records:

  • MARKET_SNAPSHOT: normalized search scope, first-page marketCounts (including topCompanies) and scrapedAt, even for a genuine empty query or zero-new monitor. Counts describe the search, not inferred facts about each job.
  • RUN_SUMMARY: requests, retries, responseBytes, pagesRead, scanned, invalid, duplicates, saved, stopReason and scope. Successful monitors also include scanOffset and historySize.

Stop reasons distinguish empty_query, no_new in the scanned slice, maxItems, charge_budget, end_of_feed, scan_slice, scan_window, time_budget and failure. A zero-new slice does not establish that every result in the source window was checked. Snapshots and summaries are not job rows and have no item charge.

How much does it cost to scrape Instahyre jobs?

Pricing uses one start event per run plus one item event per delivered job. Empty pages and duplicate jobs do not create item charges.

At the BRONZE tier, the run fee is $0.001 and each delivered job is $0.001056:

  • 10 jobs: about $0.01156;
  • 100 jobs: about $0.1066;
  • 1,000 jobs: about $1.057.

Apify subscription tiers apply decreasing per-job prices. The Console shows the active price before you start a paid run. Platform compute is included in Store PPE pricing for users of the published Actor.

Limits and source coverage

  • Instahyre returns 35 records per search page even when a different page size is requested.
  • The source search index limits deep offset pagination to approximately 10,000 jobs per filter combination.
  • maxItems is capped at 5,000 to bound runtime and output.
  • Public search results include employer summaries and skills, but not full job descriptions or per-job salary ranges.
  • Keyword and location parameters are not exposed because observed public API parameters for them are ignored.
  • Individual detail pages may require a browser challenge or account and are outside this Actor's scope.
  • The public API can change. A changed or non-JSON response causes a failed run rather than silent empty output.

Reliability and troubleshooting

Requests time out after 30 seconds and retry transient network errors, HTTP 429 responses, and temporary server failures up to three attempts. Source Retry-After hints are honored up to 60 seconds within a 90-second request deadline. One end-to-end three-minute work deadline starts before initialization and includes job-function lookup, all pages, retries and body reads; each attempt is limited by the time remaining. A shorter platform timeout also limits work, reserving 30 seconds for finalization. Retry waits that cannot fit are not started. After a validated page, deadline exhaustion saves partial output, a summary and the pending-page cursor; exhaustion before any validated search page fails rather than claiming an empty feed. Finalization still depends on storage/platform availability. A large request can therefore return a partial result with time_budget; monitor mode retains its cursor for a later run. Invalid input and deterministic source errors are not retried blindly.

If a run fails with Unknown or inactive job function, select a suggested value in the input UI or use a current Instahyre slug such as backend-development, full-stack-development, or data-science-machine-learning.

Malformed required job records are counted and skipped; a nonempty page with no valid public jobs fails clearly. Missing optional fields remain null or empty. A malformed envelope, non-JSON response or exhausted request fails without advancing monitor state.

Failed operations send sanitized diagnostic input, exceptions and Actor/build/run IDs to our private GlitchTip service for repair. Secret fields and URL queries are removed; reports are retained for 30 days. Bounded work counters accompany fatal-error reports.

If a narrow combination returns no rows, try companySize: 'any' or an empty job-function list. A genuine zero-result query completes without fabricated records or item charges.

Export and integration workflows

Dataset rows can be downloaded as JSON, CSV, Excel, XML, or RSS from Apify. Common workflows include:

  1. schedule a data-science monitor every morning;
  2. send each resulting dataset to Google Sheets or a warehouse;
  3. group rows by companyName, locations, or skills;
  4. compare marketCounts.totalJobs across scheduled snapshots;
  5. trigger recruiting outreach research when a target employer begins hiring.

For stable incremental processing, deduplicate downstream records by jobId.

Use the API with cURL

curl -X POST \
"https://api.apify.com/v2/acts/automation-lab~instahyre-jobs-scraper/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"jobFunctionSlugs":["backend-development"],"maxItems":25}'

To wait for completion and receive dataset items directly, use the synchronous dataset-items endpoint documented in Apify Console.

Use the API with JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/instahyre-jobs-scraper').call({
jobFunctionSlugs: ['data-science-machine-learning'],
jobType: 'full_time',
maxItems: 100,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Use the API with Python

from apify_client import ApifyClient
client = ApifyClient('YOUR_APIFY_TOKEN')
run = client.actor('automation-lab/instahyre-jobs-scraper').call(run_input={
'jobFunctionSlugs': ['backend-development'],
'companySize': 'small',
'maxItems': 100,
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)

Use Instahyre Jobs Scraper with MCP

Add the Actor to Claude Code through Apify MCP:

claude mcp add --transport http apify \
"https://mcp.apify.com?tools=automation-lab/instahyre-jobs-scraper"

Claude Desktop, Cursor, and VS Code setup: add this JSON MCP server configuration in the client's MCP settings.

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=automation-lab/instahyre-jobs-scraper"
}
}
}

Example prompts:

  • "Collect 50 current backend-development jobs from Instahyre and summarize the most common skills."
  • "Export Instahyre internships and group them by location."
  • "Run my Instahyre data-science monitor and list newly observed employers."

Data handling and support

This Actor uses no AI models or external enrichment services. It sends supported search facets to Instahyre and stores public job/employer data in Apify. Dataset, snapshot and log retention follows your Apify account settings; you can delete run storage in Console. Named monitor state persists until you delete its filter record or store and is bounded by ID count rather than age. Deleting it resets deduplication. Diagnostic reports use our private self-hosted GlitchTip service with 30-day retention; no customer-supplied service key is needed.

For help, open an issue on the Actor's Apify Store page and include the run link and sanitized input. This is an independent automation-lab tool, not affiliated with or endorsed by Instahyre. Source names identify the data source, not a partnership.

Responsible use and legality

This Actor accesses publicly returned job-search data. You are responsible for complying with applicable laws, Instahyre's terms, privacy requirements, and your downstream use case. Do not use the data for discrimination, harassment, spam, or attempts to identify private candidates or recruiters.

Store only what your workflow needs, apply suitable retention controls, and respect deletion or correction obligations. This documentation is operational guidance, not legal advice.

Frequently asked questions

Does the Actor require an Instahyre login?

No. It uses the public unauthenticated job-search and job-function JSON endpoints.

Does it scrape full descriptions or salary?

No. Those fields are not available in the accepted public search feed, and this Actor does not bypass challenged or account-dependent detail pages.

Can I search by arbitrary keyword or city?

Not server-side. Instahyre's observed public feed ignores plausible keyword and location parameters. Use supported job-function facets, then filter the returned skills or locations downstream.

Why did a monitor run return zero jobs?

No unseen records were found in this run's bounded scan slice for those normalized filters, or the charge budget was exhausted. Inspect RUN_SUMMARY.stopReason and MARKET_SNAPSHOT. It does not mean the whole search feed is empty or fully scanned.

Can I use several job functions together?

Yes. Provide up to 20 valid slugs. Instahyre combines repeated job-function filters in one search.

Combining source-specific Actors can broaden market coverage while preserving each source's stable identifiers and supported filters.