Instahyre Scraper - India Tech Jobs & Company Data
Pricing
from $1.46 / 1,000 job returneds
Instahyre Scraper - India Tech Jobs & Company Data
Every job on Instahyre with the hiring company attached: company size, founding year, Instahyre’s own note about the company, locations and the skills each posting asks for. A rejected filter or a rate limit comes back as its own row and is never charged. Unofficial, not affiliated with Instahyre.
Pricing
from $1.46 / 1,000 job returneds
Rating
0.0
(0)
Developer
NeverEmpty
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
9 hours ago
Last modified
Categories
Share
Pull jobs from Instahyre with the hiring company attached: how many people the company has, what year it was founded, Instahyre's own note about the company, the locations, and the exact skills each posting asks for.
Unofficial. This Actor is not affiliated with, endorsed by, or sponsored by Instahyre. All product names are trademarks of their respective owners.
No API key. Reads Instahyre's own public job feed.
Why this one is different
It does not pretend to filter by things Instahyre cannot filter
Measured on 2026-09-03 against the live API: sending location, city, company_size, experience or min_experience changes nothing - the total stays at 13,844 jobs. The request answers HTTP 200 and quietly ignores what you asked for.
Only job_functions actually filters (id 10 narrows 13,844 → 3,869). So this Actor offers only that. A location field would look better on the input form and would be a lie.
A filter Instahyre rejects tells you so, and is not charged
An unknown job function id makes the API answer HTTP 400. You get one row naming the ids that do work:
10 = Backend Development 1 = Full-Stack Development9 = Data Science / ML 76 = Other Software Development
That row is not charged. The run does not fall back to "all jobs" and let you think you filtered.
You are not charged for jobs you did not ask for
Instahyre answers with 35 jobs per request no matter what limit is set to (asking for 10 still returns 35). This Actor cuts the last page down to your maxJobs, so asking for 40 jobs charges 40 events - not 70.
The rate limit is handled, and told to you when it bites
Measured: about 20 requests in quick succession returns HTTP 429, clearing after roughly an hour. With the Apify residential proxy on (default), sessions rotate so larger runs finish - measured on 2026-09-03: 300 jobs in 9 requests, 17 seconds, no 429, no duplicate ids. If a run is still cut short, you get a row saying how many jobs were returned before it happened - and that row is not charged.
Nothing is invented
Instahyre's job feed carries no salary, no years of experience and no posted date - the detail endpoint returns the same 14 fields as the list. So those columns do not exist in the output. Empty columns that look like data are worse than no columns.
Input
| Field | Type | Default | Description |
|---|---|---|---|
jobFunctions | array | [] (all) | Instahyre job function ids. Several are combined as a union (10 + 1 = 4,900 jobs) |
maxJobs | integer | 35 | 1-1000. One job = one row = one charged event |
useProxy | boolean | true | Rotates the session so bigger runs are not cut off by the rate limit |
keywords | array | — | Keep only jobs containing one of these words |
keywordMatch | string | any | any or all |
excludeKeywords | array | — | Drop jobs containing one of these |
companyNames | array | — | Keep only these companies (partial match) |
postedWithinDays | integer | 0 | 0 = no limit. An unreadable date is kept |
monitoringMode | boolean | false | Return only jobs not returned on a previous run |
resetMonitoringState | boolean | false | One-shot: forget what was already returned |
Filters are applied before you are charged
The filters narrow the jobs already read - nothing extra is fetched from Instahyre - and a job that does not match is never delivered and never charged. If the search returns jobs but none match your filters you get one unpaid row saying exactly that (no-filter-match), so you can tell "the filter was too tight" apart from "there is nothing there".
There is deliberately no salary filter: Instahyre's public search does not publish a salary, and a filter over a field that is always empty would be a filter that silently drops everything.
Monitoring mode turns this into a daily feed
Schedule it with monitoringMode: true and each run reads the newest jobs and returns only the ones it has not returned before. Jobs read but filtered out are remembered too, so changing a filter later does not resurrect them as false "new" postings.
The minimal call is an empty input: 35 jobs from the whole board.
Output columns
| Column | Example |
|---|---|
jobId | 434743 |
url | the public job page |
title | Senior Business Consultant (Life Insurance) |
company | Infosys BPM |
companyTagline | Reboot, reconnect, revive |
companyFounded | 2002 |
companyEmployeeCount | 1000 |
companyNote | Instahyre's own description of the company |
companyLogo | image URL |
locations | Pune |
skills | ["Business Analyst", "JIRA", "SQL", ...] |
acceptsOutstation | true |
status / note | only on rows that carry no job, with the reason |
scrapedAt | ISO timestamp of the fetch |
Measured, not estimated
Checked against the live API on 2026-09-03, not read off documentation:
- 13,844 jobs in the feed (
meta.total_count). limitis ignored: 10, 35, 50 and 100 all return exactly 35 rows.- Only
job_functionsfilters: id 10 → 3,869 · id 1 → 1,890 · ids 10+1 → 4,900 (a union, not a sum). - Unknown ids return HTTP 400, they are not silently ignored.
- Rate limit: 300 ms apart, the 20th request returned HTTP 429; it had cleared about 80 minutes later.
https://www.instahyre.com/robots.txtis 62 bytes and contains no Disallow rules at all.
The Actor ships with 9 checks run against a saved copy of the real API response, and a mutation suite of 14 deliberate breakages - all 14 are caught.
Typical uses
- Build a live picture of who is hiring in Indian tech, with company size attached to every role.
- Track which skills a function is asking for right now (the
skillsarray is the posting's own list). - Feed a recruiter workflow or a job board with fresh roles and the company context already joined.
- Compare hiring volume between functions - Backend vs Data Science vs Full-Stack - from the counts the API returns.
Notes and limits
- Instahyre is an Indian tech hiring platform. Roles and companies are India-based.
- There is no salary, experience or posted-date field in Instahyre's feed. See above - they are not invented here.
acceptsOutstationis Instahyre's own flag for whether the employer considers candidates from other cities.
Other tools by NeverEmpty
- Internshala Scraper - India Jobs & Internships, Salary - jobs and internships with pay parsed into numbers and the deadline as a date.
- Job Listing API - Career Site Jobs from Any ATS - open roles straight from company career sites.
Support
Found a row that looks wrong? Open an issue on the Actor page with the url from the row.