Instahyre startup tech jobs as JSON API
Instahyre Jobs Scraper is a pay-per-record Apify Actor by Daemon Data that returns India tech jobs from product companies and startups by skill, city, experience and company size, full descriptions included as JSON, CSV or Excel. It costs $0.0008 per job with the default options ($0.80 per 1,000); no login to the source site, no proxy, no browser, and the same input runs from the Apify console, one REST call, Python, Node.js, n8n or an AI assistant through MCP.
Daemon Data Instahyre Jobs Scraper on Apify Listing as plain text
Checked on 21 Oct 2026
python matched 4,300 open Instahyre jobs (2,600 in Bangalore), react 1,600, data science 8,000 (title and skill-tag matching is broad), devops work-from-home 134. A 50-job run with descriptions takes well under a minute on the Apify platform and costs $0.04 plus the $0.001 start fee.
Who uses it, for what
| You are | What you get |
|---|---|
| Tech recruiters and staffing agencies | A daily list of new openings by skill, city, experience band and company size, with the hiring company's headcount and founding year, so you know which startups and product companies are hiring right now. |
| Job aggregators and HR-tech products | Instahyre as a source with stable job IDs (dedupKey), full JD text, de-duplication across keywords and runs, and an API you can call on a schedule. Same conventions as the IIMJobs, Hirist and Foundit Actors by the same publisher. |
| B2B sales and lead generation | A company hiring five backend engineers is buying cloud, tooling and services. Each row carries the company name, size, tagline, website and logo. |
| Workforce and market analysts | Demand by skill, city, experience band and company size over time; share of remote roles; which skills large companies ask for versus startups. |
| Candidates and job-alert builders | Your own alert for golang jobs at small companies in Bangalore, delivered to a sheet, Slack or email the moment they appear. |
| AI agents (MCP) | Ask Claude or ChatGPT "new Python jobs in Hyderabad at startups posted this week" and let it call this Actor through Apify's MCP server. |
Output fields
The most useful top-level fields with values from a real record; the full list is id, dedupKey, url, applyUrl, title, company, locations, remote, acceptsOutstation, experienceMinYears, experienceMaxYears, employmentType, skills, functions, postedAt, descriptionHtml, description, query, scrapedAt. Per-field notes and the OpenAPI definition are on the Apify API page.
| Field | Type | Example |
|---|---|---|
id | number | 446412 |
dedupKey | string | "instahyre:446412" |
url | string | "https://www.instahyre.com/job-446412-python-engineer-at-nineleaps-... |
applyUrl | string | "https://www.instahyre.com/job-446412-python-engineer-at-nineleaps-... |
title | string | "Python Engineer" |
company | object | {"id": 5003, "name": "Nineleaps", "tagline": "We build high perform... |
locations | array | ["Bangalore", "Hyderabad"] |
remote | boolean | false |
acceptsOutstation | boolean | true |
experienceMinYears | number | 2 |
experienceMaxYears | number | 4 |
employmentType | string | "FULL_TIME" |
skills | array | ["FastAPI", "MySQL", "PostgreSQL", "Python", "SQL"] |
functions | array | ["Backend Development", "Full-Stack Development", "Other Software D... |
postedAt | string | "2026-10-09T00:00:00.000Z" |
Input and how to call it
A verified example input (it returned data on 2026-10-23):
{
"queries": [
"python"
],
"locations": [
"Bangalore"
],
"companySizes": [
"small",
"medium"
],
"includeDescription": true,
"maxJobsPerQuery": 50
}
One HTTP call starts a run, waits for it and returns the records (token from console.apify.com):
curl -X POST "https://api.apify.com/v2/acts/data_daemon~instahyre-jobs-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"queries": ["python"], "locations": ["Bangalore"], "companySizes": ["small", "medium"], "includeDescription": true, "maxJobsPerQuery": 50}'
Python: ApifyClient(token).actor("data_daemon/instahyre-jobs-scraper").call(run_input=...), full file python/instahyre-jobs-scraper.py. Node.js: node/instahyre-jobs-scraper.mjs. n8n: importable workflow.
AI assistant (MCP): add the remote server https://mcp.apify.com/?tools=data_daemon/instahyre-jobs-scraper with header Authorization: Bearer YOUR_APIFY_TOKEN in Claude, ChatGPT, Cursor or VS Code and ask for the data in plain words.
All input fields
| Field | Type | Meaning |
|---|---|---|
queries | array | One Instahyre search per item, matched against job titles and skill tags, e.g. python, react, data science, devops, product management, java developer. Put cities in locations. A job found by two keywords is saved and charged once. Leave the list with one item for a quick first run. |
locations | array | Optional. Cities as Instahyre lists them: Bangalore, Mumbai, Delhi, Gurgaon, Noida, Hyderabad, Chennai, Pune, Kolkata, Ahmedabad, or Work From Home for remote roles; regions such as South India and about 300 smaller cities also work. Several cities = any of them. Common alternative spellings (Bengaluru, Gurugram, Bombay, Remote) are mapped; an unknown name is ignored with a note in the status message. Leave empty for all of India. |
minExperience | integer | Only jobs whose stated experience range reaches at least this many years (0-30). Checked on each job page; jobs that state no range are kept. |
maxExperience | integer | Only jobs whose stated experience range starts at or below this many years (0-30). 1 or 2 is a good early-career filter. |
experienceYears | integer | Instahyre's own experience filter: only jobs open to a candidate with exactly this many years (the job's range must cover it). Applied by the site before anything is fetched, so it is the cheapest way to narrow a search; combine with minExperience/maxExperience for a band. |
postedWithinDays | integer | Only jobs posted in the last N days (1-365). Instahyre keeps jobs open for months and its search has no date filter, so the Actor reads the posting date from each job page and leaves out older jobs without charging. In only-new mode the jobs that are left out are remembered too, so later runs do not re-check them. |
companySizes | array | Optional. Any of small (under 100 employees), medium (100-1,000) and large (over 1,000). Several values = any of them. Applied by the site. |
jobType | string | all (default), full-time or internship. Applied by the site. |
companies | array | Optional. Only jobs posted by these companies, e.g. Amazon, Deutsche Telekom Digital Labs. Several names = any of them. Applied by the site; combine with an empty keyword list to watch everything a company posts. |
includeDescription | boolean | On (default): one extra request per job reads the public job page and adds the full description (HTML and plain text), posting date, experience range, employment type, job functions and the company website. The price per job is the same either way. Off: listing fields only (title, company profile, cities, skills, URL), about three times as fast, enough for counting jobs or sizing a market. |
maxJobsPerQuery | integer | Stop a keyword after this many new jobs (default 50). Cost: $0.0008 per job with its description, so 50 jobs = $0.04. Raise it for full exports: python alone matches about 4,300 open jobs and the site serves 35 per page. |
maxJobs | integer | Hard cap on saved jobs for the whole run across all keywords (0 = no cap). |
onlyNewSinceLastRun | boolean | On: deliver only jobs that an earlier run with the same stateName has not already delivered, and skip the rest without charging. Set maxJobsPerQuery high enough for the first run to take the whole result list (or add postedWithinDays), so later runs really return only new postings. Off (default): return every matching job. |
stateName | string | Optional name for this search's memory when onlyNewSinceLastRun is on, e.g. python-bangalore-daily. Leave empty to derive it from the keywords, cities and filters. Use a new name to start over. |
skipJobIds | array | Array of job IDs you already have (the id field from earlier runs), e.g. ["424473", "441980"]. They are skipped before any page fetch and never charged. Large arrays are fine. |
Price
$0.0008 per job ($0.80 per 1,000); $0.001 per run. List prices for Apify Free and Starter plans; Scale and Business plans pay 15% to 30% less.
| Event | Price | Per 1,000 | Charged when |
|---|---|---|---|
| Job | $0.0008 | $0.80 | One job with its full description: title, company profile, experience range, skills, functions, locations, posted date, job URL. |
| Actor Start | $0.001 | Charged when the Actor starts running. Number of events charged depends on Actor memory (one event per GB, minimum one event). |
Worked example: the input above, capped at 50 jobs, costs at most $0.041. Apify's free plan includes $5 of usage a month, about 6,250 jobs; the Actor's own compute is included in the per-record price, and records skipped by filters, de-duplication or only-new mode are not charged.
What it is not for
Non-tech roles (IIMJobs, Foundit); salary bands (Instahyre does not publish pay); applicant counts (Hirist, IIMJobs). The data belongs to its publisher; the Actor reads public pages and endpoints and leaves out personal contact details.
Ready-made example pages
Saved inputs you can run with one click on Apify (Examples tab); each has its own page:
- Python jobs in Bangalore at startups (Instahyre): Open Python jobs on Instahyre in Bangalore at companies with under 1,000 employees, with the full description, experience range, skills and the company's headcount, founding year and website. Save as a task and switch on
{"queries": ["python"], "locations": ["Bangalore"], "companySizes": ["small", "medium"], "includeDescription": true, "maxJobsPerQuery": 50} - Work-from-home tech jobs in India (Instahyre): Remote (work from home) engineering, data and product jobs on Instahyre, with the full description, experience range, skills and company profile. Change the keywords to your stack; switch on only-new mode for a daily fee
{"queries": ["react", "node.js", "data engineer"], "locations": ["Work From Home"], "includeDescription": true, "maxJobsPerQuery": 30} - Early-career software jobs in India, 0-2 years (Instahyre): Software engineering jobs on Instahyre open to candidates with up to 2 years of experience, with the full description, skills and company profile. Internships are listed separately with jobType = internship.
{"queries": ["software engineer"], "maxExperience": 2, "includeDescription": true, "maxJobsPerQuery": 50}
Questions buyers ask
How much does it cost to scrape Instahyre?
$0.0008 per job with its full description plus $0.001 per run, so 100 jobs cost about $0.08 and a 50-jobs-a-day feed about $1.25 a month.
Is there an official Instahyre API?
No public one. This Actor reads the JSON that the Instahyre website itself loads for its job search, plus the public job pages, and exposes them as a REST API with schedules, webhooks and only-new-jobs runs.
Does it return the full job description?
Yes, as HTML and plain text, plus the experience range, posting date, job functions, skills and the company profile with headcount, founding year and website.
Why is the posting date old on many jobs?
Instahyre keeps a job open until the employer closes it, so a feed without postedWithinDays includes jobs posted months ago. Use postedWithinDays for recent postings, or only-new mode, which after the first run delivers only jobs that are new on the site.
Does it include salaries or applicant counts?
No. Instahyre does not publish salary ranges or applicant counts on public job pages, and this Actor only reads public data.
Why does a city return nothing?
The site only accepts the location names it lists; the Actor maps the common alternative spellings and names any location it had to ignore in the status message. Use Bangalore, Delhi, Gurgaon, Noida, Mumbai, Hyderabad, Chennai, Pune, Kolkata, Ahmedabad or Work From Home.
Do I need a proxy or login?
No.
Alternatives, honestly
| Option | What it gives you | Where it falls short for this job |
|---|---|---|
| Instahyre website | Candidate and employer accounts | No export or API; salary and applicant counts are not shown publicly anywhere |
| Hirist or IIMJobs APIs (same publisher) | Applicant counts and salary bands | Different boards; Instahyre is the one with company headcount and size filters |
| Other Instahyre Actors on Apify Store | Same board | Compare price per 1,000, company-profile fields and only-new mode |