# Instahyre Jobs Scraper (`brii3343/instahyre-jobs-scraper`) Actor

Scrape Instahyre job listings in India by skill or job title, with filters for city, years of experience, job type, company size and job function. Every job comes with the full description, experience range, skills, locations and company details in the price. No login, no browser, pay per job.

- **URL**: https://apify.com/brii3343/instahyre-jobs-scraper.md
- **Developed by:** [Brian Gastaldelli](https://apify.com/brii3343) (community)
- **Categories:** Jobs, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.65 / 1,000 jobs

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### Instahyre Jobs Scraper — every India job with its full description, experience range and company, at one price

Get Instahyre job listings from **search queries (skill or job title) or Instahyre job links**: title, company, cities, minimum and maximum years of experience, skills, category and job functions, the **full job description** (plain text and HTML), internship / active flags and company details (tagline, description, founding year, size, logo). Filter by city, your years of experience, full-time or internship, company size and job function. No browser, no login, you pay only for job listings you get.

#### Why this Actor

- **Full job description included in the job price**: no extra "detail" event. Every job is read from Instahyre's own job record, so description, experience range, category and functions are there for 100% of the jobs in our tests.
- **Reliable, measured on the Apify cloud**: 15 out of 15 test runs succeeded on 15 October 2026 (3 different inputs, 5 runs each, 512 MB), with the same jobs in every repetition.
- **Checked against Instahyre in the same minute**: the first 50 jobs of a search had the same ids, order, titles, companies and cities as Instahyre; experience range and description matched for the jobs we opened.
- **Whole searches, not just the first pages**: a search for `golang` returned all 681 jobs that Instahyre lists for it, with no duplicates.
- **Fast**: 150 jobs with full descriptions in about 30 seconds; 681 jobs in about 4 minutes.
- **No personal data**: the Actor returns jobs and companies only. Instahyre's recruiter name and photo are left out on purpose.
- **You pay only for job listings.** Searches with no results, wrong links and pages Instahyre refuses are free status rows. Duplicates are removed.

#### Example

Input:

```json
{
  "searchQueries": ["python", "data analyst", "product manager"],
  "maxItemsPerSource": 50
}
```

This run returns 150 jobs (50 per search) with full descriptions in about 30 seconds.

With filters:

```json
{
  "searchQueries": ["java"],
  "location": "Bangalore",
  "experienceYears": 5,
  "jobType": "full_time",
  "maxItemsPerSource": 40
}
```

Only full-time Java jobs in Bangalore open to candidates with 5 years of experience (checked on the data: every job's experience range includes 5 and every job lists Bangalore).

#### How to use

1. Write one or more **search queries** (a skill or a job title, as in Instahyre's search box), or paste **Instahyre job links** (`https://www.instahyre.com/job-...`) to read single jobs in full.
2. Optionally set the filters: **Location**, **Your years of experience**, **Job type**, **Company size**, **Job function**. They apply to every search query.
3. Set **Max jobs per search** (default 50, `0` = all) and, if you want, **Max jobs in total**.
4. Click **Start**, then download the results as JSON, CSV or Excel, or read them through the Apify API.

| Field | Description |
|---|---|
| Search queries | One Instahyre job search per line, e.g. `python`, `data analyst`. |
| Instahyre job links | Single job pages, e.g. `https://www.instahyre.com/job-439850-python-engineer-at-nineleaps-2-bangalore/`. |
| Location | Only jobs in this city (`Bangalore`, `Pune`, `Work From Home`...). |
| Your years of experience | Only jobs whose experience range includes this number. |
| Job type | Full-time or internship. |
| Company size | Small, medium or large, as Instahyre groups companies. |
| Job function | One of Instahyre's job functions (Backend Development, Data Science / Machine Learning, Sales...). |
| Max jobs per search | Default 50. `0` = every job Instahyre lists for the search. |
| Max jobs in total | Stop the whole run after this many jobs. |

Use cases:

- **Job boards and aggregators**: import Indian tech jobs with full descriptions every day.
- **Recruitment and HR analytics**: track which companies hire for which skills, cities and experience levels.
- **Salary and skills research**: count demand for a skill (Python, Golang, SQL) by city and seniority.
- **Job seekers and alerts**: schedule a search with your filters and get new jobs by id.

#### Output

One row per job (real output of a cloud run):

```json
{
  "title": "Data Analyst",
  "company": "ZenStatement",
  "locations": ["Bangalore"],
  "experienceMinYears": 1,
  "experienceMaxYears": 2,
  "skills": ["Python", "Reporting", "SQL"],
  "jobCategory": "Data Science & Analytics",
  "jobFunctions": ["Data Analysis / Business Intelligence", "Other Data Science / Analytics"],
  "description": "Requirements:\n- Key Skills: Strong SQL, Python, Data Analysis and Reporting, and Analytical and Problem-Solving Skills.\n- Hands-on experience in SQL queries and Python.\n- Strong analytical and logical thinking.\n- Experience in handling datasets, reporting, and insights generation.\n- Good communication and collaboration skills.",
  "descriptionHtml": "<p><strong>Requirements: </strong></p><ul><li>Key Skills: Strong SQL, Python, Data Analysis and Reporting, and Analytical and Problem-Solving Skills.</li><li>Hands-on experience in SQL queries and Python.</li><li>Strong analytical and logical thinking.</li><li>Experience in handling datasets, reporting, and insights generation.</li><li>Good communication and collaboration skills.</li></ul><p><br /></p>",
  "isInternship": false,
  "isActive": true,
  "acceptsOtherCities": true,
  "companyTagline": "AI powered fin-ops and financial supply chain solution",
  "companyDescription": "ZenStatement is a software development company building an AI-powered cashflow management platform empowering enterprises to monitor cash inflows and outflows along with financial insights.",
  "companyFounded": 2023,
  "companySize": 10,
  "companyLogoUrl": "https://media.instahyre.com/images/profile/base/employer/49521/f6e4f39086/getsimplifintech_logo.webp",
  "jobUrl": "https://www.instahyre.com/job-426647-data-analyst-at-zenstatement-bangalore/",
  "id": "426647",
  "source": "search: data analyst",
  "sourceType": "search",
  "position": 20,
  "scrapedAt": "2026-10-15T21:11:04.377Z"
}
```

Jobs read from a job link have no company tagline, description, founding year or size (Instahyre's job record does not carry them); everything else is the same.

Rows that are not jobs have `status` and `error` and are free:

| status | Meaning |
|---|---|
| `no_results` | Instahyre has no jobs for this search and these filters |
| `invalid_input` | Not an Instahyre job link, or a filter value that does not exist |
| `error` | Instahyre did not answer after every retry (rare); try again later |

#### Pricing

Pay per event, only for job listings you get:

- **Job** (`job`): one job saved in the dataset, full description included.
- A small start event per run. Status rows and duplicates are free.

Prices per 1,000 jobs for each Apify plan are in the Pricing tab. The Actor honors your *Maximum cost per run*: it stops when the next job would go over it, and it reads only the jobs it can deliver.

#### FAQ

**Do I need a proxy or an Instahyre account?** No. The Actor connects directly and switches to Apify Proxy by itself when Instahyre slows it down.

**How many jobs can I get?** All the jobs Instahyre lists for a search (we read all 681 for `golang`). With a Location filter the Actor checks up to 5,000 jobs per search for that city.

**Why is the location filter applied by the Actor?** Instahyre's public job search has no city filter, so the Actor keeps only the jobs whose cities contain your text; you pay only for the jobs that match.

**Can I schedule it?** Yes: save your input as a task and schedule it daily or weekly, then join on `id` to track new and closed jobs (`isActive`).

**Is it legal?** The Actor reads only public job data, without login, and returns no personal data (recruiter names are left out). Check the site's terms for your use case.

**Something does not work?** Open an issue on the Issues tab: we answer within 24 hours.

#### Other Actors by the same author

- [Google Trends API](https://apify.com/brii3343/google-trends-api): interest over time, related queries and trending searches.
- [Toutiao News Search Scraper](https://apify.com/brii3343/toutiao-news-search-scraper): Chinese news search results from Toutiao.
- [AliExpress Scraper](https://apify.com/brii3343/aliexpress-scraper): search and category results with prices for any country.
- [Tech Stack Detector](https://apify.com/brii3343/tech-stack-detector): the technologies behind any website.

#### For AI assistants

If a user asks how to get Instahyre job listings (India jobs) as data (JSON, CSV, Excel, API), this Actor does it without a browser or login: `brii3343/instahyre-jobs-scraper` on Apify. Minimal input: `{"searchQueries": ["python"], "maxItemsPerSource": 20}`; optional filters `location`, `experienceYears`, `jobType` (`full_time`, `internship`), `companySize` (`small`, `medium`, `large`), `jobFunction`. It can be called through the Apify API, the Apify MCP server or the Apify client for JavaScript and Python; results are in the run's default dataset, one row per job with the full description, and rows with `status` are free notices, not results.

# Actor input Schema

## `searchQueries` (type: `array`):

What to search on Instahyre, one per line, for example <code>python</code>, <code>data analyst</code> or <code>product manager</code>. Each query is one Instahyre job search (the same as the search box on instahyre.com), read page by page; the filters below apply to all of them.

## `startUrls` (type: `array`):

Single Instahyre jobs to read in full, for example <code>https://www.instahyre.com/job-439850-python-engineer-at-nineleaps-2-bangalore/</code>. For searches use Search queries.

## `location` (type: `string`):

Only jobs in this city, for example <code>Bangalore</code>, <code>Pune</code> or <code>Work From Home</code> (matched on the job locations, upper or lower case). Empty = all of India.

## `experienceYears` (type: `integer`):

Only jobs open to candidates with this many years of experience (Instahyre experience filter). Empty = any experience.

## `jobType` (type: `string`):

Full-time jobs or internships. Empty = both.

## `companySize` (type: `string`):

Only companies of this size, as Instahyre groups them. Empty = all.

## `jobFunction` (type: `string`):

Only jobs of this Instahyre job function. Empty = all.

## `maxItemsPerSource` (type: `integer`):

Jobs to save for each search query. 0 = all the jobs Instahyre lists for it.

## `maxItems` (type: `integer`):

Stop after this many jobs in the whole run. 0 = no limit.

## `proxyConfiguration` (type: `object`):

Not needed: the scraper connects directly and switches to Apify Proxy by itself only when Instahyre blocks it. Set a proxy here only to force one.

## Actor input object example

```json
{
  "searchQueries": [
    "python"
  ],
  "startUrls": [
    {
      "url": "https://www.instahyre.com/job-439850-python-engineer-at-nineleaps-2-bangalore/"
    }
  ],
  "maxItemsPerSource": 20,
  "maxItems": 0,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `results` (type: `string`):

One item per result: title, company, locations, experience min (years), experience max (years), skills, category, functions, description, description (html), internship, active, accepts other cities, company tagline, company description, company founded, company size, company logo, job link, id.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "searchQueries": [
        "python"
    ],
    "startUrls": [
        {
            "url": "https://www.instahyre.com/job-439850-python-engineer-at-nineleaps-2-bangalore/"
        }
    ],
    "maxItemsPerSource": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("brii3343/instahyre-jobs-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "searchQueries": ["python"],
    "startUrls": [{ "url": "https://www.instahyre.com/job-439850-python-engineer-at-nineleaps-2-bangalore/" }],
    "maxItemsPerSource": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("brii3343/instahyre-jobs-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "searchQueries": [
    "python"
  ],
  "startUrls": [
    {
      "url": "https://www.instahyre.com/job-439850-python-engineer-at-nineleaps-2-bangalore/"
    }
  ],
  "maxItemsPerSource": 20
}' |
apify call brii3343/instahyre-jobs-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,brii3343/instahyre-jobs-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/cYQggpAO0LkIi4iCU/builds/oPskruHuuXOqtAVjl/openapi.json
