Instahyre Jobs Scraper
Pricing
from $0.63 / 1,000 item extracteds
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
Maintained by CommunityActor stats
0
Bookmarked
22
Total users
3
Monthly active users
0.22 hours
Issues response
10 days ago
Last modified
Categories
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, andSales), 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?
| Field | Meaning |
|---|---|
jobId | Stable Instahyre vacancy ID |
title, candidateTitle | Public job titles |
companyId, companyName | Stable employer ID and name |
companyTagline, companyAbout | Public employer profile summary |
companyFounded, employeeCount | Employer context when available |
companyLogoUrl | Public company logo URL |
locations, locationsRaw | Normalized and source location values |
skills | Skills and technology keywords |
acceptsOutstationCandidates | Whether outstation candidates are accepted |
url, resourceUri | Canonical page and API resource references |
jobFunctionSlugs, jobType, companySize | Filters used for the row |
marketCounts | Total and facet counts for the same search |
scrapedAt | Collection timestamp in ISO 8601 format |
Fields may be null or empty when Instahyre does not provide a value.
How to scrape Instahyre jobs
- Open the Actor in Apify Console.
- Select one or more suggested job functions, enter a current
jobFunctionSlugsvalue, or use a common sales alias such asSDR,BDR,BDE,Account Executive, orSales. Use an empty list for the full feed. - Choose a job type and company-size facet if needed.
- Set
maxItemsto the maximum number of jobs to save. - Turn on
monitorModeonly for a recurring schedule that should deliver newly observed jobs. - 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
| Input | Type | Default | Description |
|---|---|---|---|
jobFunctionSlugs | string array | ['backend-development'] | Suggested Instahyre functions, current source slugs, or supported sales-role aliases. Empty means all functions. |
jobType | string | any | any, full_time, or internship |
companySize | string | any | any, small, medium, or large |
maxItems | integer | 100 | Maximum saved jobs, from 1 to 5,000 |
monitorMode | boolean | false | Retain 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 searchscope, first-pagemarketCounts(includingtopCompanies) andscrapedAt, 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,stopReasonand scope. Successful monitors also includescanOffsetandhistorySize.
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.
maxItemsis 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:
- schedule a data-science monitor every morning;
- send each resulting dataset to Google Sheets or a warehouse;
- group rows by
companyName,locations, orskills; - compare
marketCounts.totalJobsacross scheduled snapshots; - 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 ApifyClientclient = 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().itemsprint(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.
Related automation-lab Actors
- Cutshort Jobs Scraper for another India-focused technology hiring source.
- Internshala Scraper for public internship and early-career listings.
- Company Career Page Jobs Scraper for normalized listings from supplied employer career pages.
Combining source-specific Actors can broaden market coverage while preserving each source's stable identifiers and supported filters.