# Hirist & iimjobs Jobs Scraper: India Tech & Management Jobs (`cprussin/hirist-iimjobs-jobs`) Actor

Scrape Hirist (tech) and iimjobs (management, finance, sales) jobs in India by keyword, city and experience: title, company, locations, experience range, salary, skills, posted date and job URL. New-job monitoring. No login. $2 per 1,000 jobs.

- **URL**: https://apify.com/cprussin/hirist-iimjobs-jobs.md
- **Developed by:** [Connor Prussin](https://apify.com/cprussin) (community)
- **Categories:** Jobs, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 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.

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

## Hirist & iimjobs Jobs Scraper: India Tech & Management Jobs

**Hirist & iimjobs Jobs Scraper** exports job listings from **Hirist** (hirist.tech, India's tech job board) and **iimjobs** (iimjobs.com, management, finance, sales and marketing jobs) as clean JSON, CSV or Excel. It reads the same public search data both websites load, no login needed:

- ✅ **Two job boards, one actor**: search Hirist, iimjobs or both with the same queries.
- ✅ **Filters**: keywords (`python developer`, `product manager`, `investment banking`, ...), cities (`Bangalore`, `Mumbai`, `Delhi NCR`, `Remote`, ...) and years of experience.
- ✅ **Experience and salary**: experience range in years, yearly salary range in INR when the recruiter discloses it.
- ✅ **Job details**: title, designation, company, logo, locations, skills, posted date, applicant count, recruiter, job URL; full description optional.
- ✅ **Monitoring mode**: get only jobs you haven't seen before, for daily new-job alerts.
- ✅ Polite and light: plain JSON requests, one at a time, no browser, and iimjobs' requested 10-second crawl delay respected. Pay only for jobs written to your dataset.

### Start in one minute

Click **Start** with the prefilled input:

```json
{
  "site": "both",
  "queries": ["product manager"],
  "locations": ["Bangalore"],
  "maxItems": 20
}
```

You get: 20 product manager jobs in Bangalore (10 from Hirist, 10 from iimjobs) with `title`, `company`, `experienceMin`/`experienceMax`, `salaryMin`/`salaryMax`, `skills` and `jobUrl`.

**Cost:** $0.04: 20 jobs × $0.002, plus the $0.00005 actor-start fee.

### Use with an AI assistant

Connect the [Apify MCP server](https://mcp.apify.com) to Claude, ChatGPT, Cursor or any MCP client (`https://mcp.apify.com?tools=cprussin/hirist-iimjobs-jobs` loads only this actor), then paste:

```text
Use the Apify actor cprussin/hirist-iimjobs-jobs to find 20 data scientist jobs on Hirist in Bangalore for 3–6 years of experience, and summarize salaries and top skills.
```

### Recipes

#### Mid-level tech roles on Hirist

Data scientist jobs for 3–6 years of experience.

```json
{
  "site": "hirist",
  "queries": ["data scientist"],
  "locations": ["Bangalore"],
  "minExperience": 3,
  "maxExperience": 6,
  "maxItems": 30
}
```

#### Finance roles on iimjobs

Investment banking jobs in Mumbai.

```json
{
  "site": "iimjobs",
  "queries": ["investment banking"],
  "locations": ["Mumbai"],
  "maxItems": 20
}
```

#### Remote roles with full descriptions

Remote growth marketing jobs on both boards, with the full description.

```json
{
  "site": "both",
  "queries": ["growth marketing"],
  "locations": ["Remote"],
  "maxItems": 20,
  "includeDescription": true
}
```

#### Daily new-job alert

Schedule it daily: after the first run you get (and pay for) only jobs not returned before.

```json
{
  "site": "both",
  "queries": ["product manager"],
  "locations": ["Bangalore", "Gurgaon"],
  "maxItems": 50,
  "onlyNew": true
}
```

### Who uses Hirist and iimjobs job data?

- **Recruiters and staffing agencies**: see which companies are hiring engineers or managers in a city right now, with experience and pay.
- **Sales and lead generation**: companies hiring many engineers, product managers or sales leaders are growing and buying; reach them first.
- **Job seekers and job boards**: build your own feed or alerts for Indian tech and MBA jobs.
- **HR and market analysts**: benchmark in-demand skills, experience levels and salaries by role and city.
- **AI agents**: give an LLM live Indian job listings through the Apify API or MCP server.

### How does the Hirist and iimjobs scraper work?

1. Pick the site(s), add search queries and (optionally) locations and an experience range.
2. The actor calls the sites' public search API for each query, 50 jobs per page: about one request per second on Hirist, one per 10 seconds on iimjobs (its robots.txt asks for that).
3. It pages through results until `maxItems` jobs in total, or the end of the results.
4. You get one dataset item per job, in the sites' own ranking.

### How do I choose which jobs to scrape?

| Field                | Description                                                                 | Example                              |
| -------------------- | --------------------------------------------------------------------------- | ------------------------------------ |
| `site`               | `hirist` (tech), `iimjobs` (management) or `both`                           | `"both"`                             |
| `queries`            | Search keywords. Each query is searched on every selected site              | `["data scientist", "growth"]`       |
| `locations`          | City or state filters (optional); jobs in any of them match                 | `["Bangalore", "Gurgaon", "Remote"]` |
| `minExperience`      | Only jobs whose experience range reaches at least this many years           | `3`                                  |
| `maxExperience`      | Only jobs whose experience range starts at or below this many years         | `8`                                  |
| `maxItems`           | Max jobs in total, split evenly between the sites                           | `500`                                |
| `includeDescription` | Add the full job description (one extra request per job)                    | `true`                               |
| `onlyNew`            | Monitoring: only jobs not returned by an earlier run with the same searches | `true`                               |
| `proxyConfiguration` | Optional Apify Proxy (not needed normally)                                  | `{ "useApifyProxy": true }`          |

- Locations accept common spellings: `Bangalore`/`Bengaluru`, `Gurgaon`/`Gurugram`, `Delhi NCR`, `Navi Mumbai`, `Kochi`, `Remote`, `Anywhere in India`, states such as `Karnataka`, and abroad (`Singapore`, `Dubai`, `US`, ...).
- With `site: "both"`, `maxItems` is split evenly; if Hirist runs out of jobs, iimjobs gets the rest.

### What data do you get for each job?

```json
{
  "jobId": "1675588",
  "site": "hirist",
  "title": "Zeta - Product Manager - Fintech Domain",
  "designation": "Product Manager",
  "company": "Zeta Tech",
  "companyLogoUrl": "https://rec-assets.iimjobs.com/CompanyLogos/centralised-218.webp",
  "locations": ["Bangalore"],
  "remote": false,
  "experienceMin": 4,
  "experienceMax": 9,
  "salaryMin": null,
  "salaryMax": null,
  "salaryCurrency": null,
  "skills": [
    "Product Management",
    "Agile",
    "Product Roadmap",
    "Product Strategy",
    "Jira"
  ],
  "postedAt": "2026-09-29T10:19:12.990Z",
  "applicants": 364,
  "recruiterName": "Janushi",
  "jobUrl": "https://www.hirist.tech/j/zeta-product-manager-fintech-domain-1675588",
  "applyUrl": null,
  "descriptionSnippet": null,
  "searchQuery": "product manager",
  "scrapedAt": "2026-10-04T13:15:30.922Z"
}
```

- `salaryMin`/`salaryMax` are yearly amounts in INR (2000000 = ₹20 lakh a year). Most recruiters hide the salary; then all three salary fields are `null`.
- `experienceMin`/`experienceMax` are years.
- `company` and `recruiterName` are `null` for confidential jobs.
- `jobId` is unique per site; use `site` + `jobId` as the key when combining both.
- `description` and `descriptionSnippet` are filled only with `includeDescription: true`.
- `applyUrl` is set when the job is applied for on an external site; otherwise apply on `jobUrl`.

### How much does it cost to scrape Hirist and iimjobs jobs?

Pay-per-event, only for jobs written to your dataset:

| Event | Price      |
| ----- | ---------- |
| Job   | **$0.002** |

That's **$2 per 1,000 jobs**. The default input (20 product manager jobs in Bangalore, 10 per site) costs $0.04. If you set a **maximum cost per run**, the actor stops cleanly when it reaches it.

### How fast is it?

- **Hirist**: about 50 jobs per second (50 jobs per page, one page per second).
- **iimjobs**: 50 jobs every 10 seconds, because iimjobs.com asks crawlers to wait 10 seconds between requests.
- **Descriptions** need one request per job: ~1 s per job on Hirist and 10 s per job on iimjobs. Leave `includeDescription` off for large runs.

### How do I monitor Hirist and iimjobs for new jobs?

Turn on `onlyNew` and run the actor on an [Apify schedule](https://docs.apify.com/platform/schedules) (e.g. daily; save the input as a task and schedule the task).

- The first run is a baseline and returns jobs as usual. Later runs return, and charge for, only jobs not returned before. Skipped jobs are never charged.
- `maxItems` counts only new jobs.
- State lives in your account in the key-value store `hirist-iimjobs-jobs-state`, one record per set of searches (sites, queries, locations, experience). Changing them starts a new baseline. It remembers the latest 50,000 jobs.
- Add a Slack, email or webhook integration to the task to get new-job alerts.

### Hirist and iimjobs scraper FAQ

**Is this an official Hirist or iimjobs API?** No. It reads the public search results the sites show to logged-out visitors, and respects their robots.txt, including iimjobs' crawl delay.

**Why are some jobs outside my city?** Multi-city jobs match any of their cities, and "Anywhere in India" jobs can match too. Filter on `locations` in the output if you need exact matches.

**What's the difference between the sites?** Hirist lists software, data and IT jobs; iimjobs lists management, finance, consulting, sales, marketing and HR jobs. Both run on the same platform, with separate job IDs.

**Do I need a proxy?** No. The APIs answer Apify's servers directly. You can still enable Apify Proxy; the actor then switches IP automatically if a request is blocked.

**Can I use it through the API or with AI agents?** Yes. Call it through the Apify API, the Apify MCP server or any Apify integration.

**Disclaimer:** This actor is not affiliated with, endorsed by or sponsored by Hirist or iimjobs. Hirist and iimjobs are trademarks of their owners. You are responsible for complying with the sites' terms and applicable laws when using the data.

### Related actors

- [foundit-jobs](https://apify.com/cprussin/foundit-jobs?fpr=to54nm): Indian job listings from Foundit (Monster India) with salary, experience and skills.
- [wellfound-jobs](https://apify.com/cprussin/wellfound-jobs?fpr=to54nm): Startup jobs from Wellfound (AngelList Talent) with salary, equity and company data.
- [ycombinator-companies](https://apify.com/cprussin/ycombinator-companies?fpr=to54nm): Y Combinator company directory by batch, industry and region, plus YC startup jobs.
- [new-business-registrations](https://apify.com/cprussin/new-business-registrations?fpr=to54nm): New LLC and corporation filings from state open-data portals.

# Actor input Schema

## `site` (type: `string`):

<code>hirist</code>: tech jobs from hirist.tech. <code>iimjobs</code>: management, finance, sales and marketing jobs from iimjobs.com. <code>both</code>: each query on both sites.

## `queries` (type: `array`):

Keywords as you would type them on the site, e.g. <code>python developer</code>, <code>product manager</code>, <code>investment banking</code>. Each query is searched on every selected site.

## `locations` (type: `array`):

Optional city or state filter, e.g. <code>Bangalore</code>, <code>Mumbai</code>, <code>Delhi NCR</code>, <code>Gurgaon</code>, <code>Pune</code>, <code>Hyderabad</code> or <code>Remote</code>. Jobs in any of them match. Leave empty for all of India and abroad.

## `minExperience` (type: `integer`):

Optional: only jobs whose experience range reaches at least this many years.

## `maxExperience` (type: `integer`):

Optional: only jobs whose experience range starts at or below this many years (e.g. 2 for freshers and juniors).

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

Stop after this many jobs in total, across all searches; with both sites it is split evenly (a site with fewer jobs leaves the rest to the other). Each job is billed as one event.

## `includeDescription` (type: `boolean`):

Fetch each job's page data for the full description (plain text) and a <code>descriptionSnippet</code>. One extra request per job: slower, especially on iimjobs (10 s per request).

## `onlyNew` (type: `boolean`):

Return only jobs not returned by an earlier run with the same searches. Schedule the actor (e.g. daily) for new-job alerts: the first run is a baseline, later runs output (and bill) only new jobs. State is kept in the key-value store "hirist-iimjobs-jobs-state" in your account.

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

Optional Apify Proxy. Not needed normally: the Hirist and iimjobs APIs answer datacenter IPs directly. If set, the actor switches to a new IP whenever a request is blocked or rate-limited.

## Actor input object example

```json
{
  "site": "both",
  "queries": [
    "product manager"
  ],
  "locations": [
    "Bangalore"
  ],
  "maxItems": 20,
  "includeDescription": false,
  "onlyNew": false
}
```

# Actor output Schema

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

No description

# 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 = {
    "site": "both",
    "queries": [
        "product manager"
    ],
    "locations": [
        "Bangalore"
    ],
    "maxItems": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("cprussin/hirist-iimjobs-jobs").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 = {
    "site": "both",
    "queries": ["product manager"],
    "locations": ["Bangalore"],
    "maxItems": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("cprussin/hirist-iimjobs-jobs").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 '{
  "site": "both",
  "queries": [
    "product manager"
  ],
  "locations": [
    "Bangalore"
  ],
  "maxItems": 20
}' |
apify call cprussin/hirist-iimjobs-jobs --silent --output-dataset

```

## MCP server setup

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

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/ByoaOPAHFCtBlZH33/builds/nsRLAbEbZwCvbfFgG/openapi.json
