# iimjobs Scraper (`deriverge/iimjobs-scraper`) Actor

Management, finance, consulting and MBA jobs from iimjobs.com in India. Each job comes with the employer's AmbitionBox rating, the years of experience asked for, salary in LPA where shown, applicant counts and the full description.

- **URL**: https://apify.com/deriverge/iimjobs-scraper.md
- **Developed by:** [deriverge s.r.o.](https://apify.com/deriverge) (community)
- **Categories:** Jobs, Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.50 / 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

## iimjobs Scraper

iimjobs Scraper exports jobs from iimjobs.com, India's job board for management, finance, consulting, sales leadership and MBA roles. Each row is one job: title, company and its AmbitionBox rating, cities, the experience range the employer asks for, salary in lakh per annum where it is shown, applicant numbers and the full description. Enter a function or role such as `product manager` or `strategy` and click **Start**. Senior roles on iimjobs rarely show pay, so salary fields are usually empty. It costs $1.00 per 1,000 jobs on the Free plan ($0.50 on Business), and the $5 of monthly credit in Apify's Free plan covers about 5,000 jobs.

### What data does it return?

| Field | Description |
|---|---|
| `title` | The posting's title, which on iimjobs usually starts with the company: `Arcesium - Product Manager - Tax`. |
| `designation` | The role alone, without the company name. |
| `company`, `companyLogo` | Employer name as registered on iimjobs and a link to its logo. |
| `companyRating`, `companyReviews` | Employee rating on AmbitionBox (1 to 5) and how many reviews it rests on. |
| `companyIndustry`, `companyBenefits` | AmbitionBox industry, such as `IT Services & Consulting`, and the benefits listed there, such as `Performance Bonus`. |
| `locations` | Cities in iimjobs spelling, for example `Gurgaon/Gurugram` or `Delhi NCR`. |
| `experienceMin`, `experienceMax` | The experience band in years; `8` and `12` means a role for 8 to 12 years of experience. |
| `salaryMinLpa`, `salaryMaxLpa`, `salaryHidden` | Pay band in lakh rupees a year when published; `salaryHidden` is `true` when the employer keeps it private. |
| `salaryMin`, `salaryMax` | The pay band converted to rupees a year. |
| `applicants`, `views`, `applicationsReviewed` | Applications received, page views, and applications the recruiter has already opened. |
| `skills`, `mandatorySkills` | Skill and domain tags the employer attached, e.g. `IT Product Management` or `IT Jobs in BFSI`, and the ones marked as required. |
| `postedAt` | Posting time as an ISO 8601 timestamp. |
| `description` | The complete job text. |
| `url` | Link to the job on iimjobs.com. |

### How to scrape iimjobs

1. Add one or more **Keywords**: a function (`finance`, `strategy`), a title (`product manager`, `sales head`) or a domain. Each keyword is searched separately and the results are merged without duplicates.
2. Use **Cities** for Mumbai, Delhi NCR, Gurgaon, Bangalore, Hyderabad, Pune, Chennai or any other city in the job's location, and **Remote jobs only** for work-from-home roles.
3. Set **Minimum years of experience** and **Maximum years of experience** to match a seniority level; a band of 0 to 2 years finds roles for fresh graduates.
4. Add **Posted within days** to keep only fresh postings, and **Exclude keywords** to drop titles you do not want, such as `intern`.
5. Click **Start**. The jobs appear in the **Output** tab and can be exported to Excel, CSV or JSON.

Example API input for mid-level finance roles in two cities:

```json
{
  "keywords": ["finance", "fp&a"],
  "locations": ["Mumbai", "Bangalore"],
  "minExperience": 5,
  "maxExperience": 12,
  "postedWithinDays": 14
}
```

### Example output

A job from a run on 29 September 2026. The description and company profile are cut short here.

```json
{
  "key": "iimjobs:1734579",
  "site": "iimjobs",
  "jobId": "1734579",
  "title": "Arcesium - Product Manager - Tax",
  "designation": "Product Manager - Tax",
  "url": "https://www.iimjobs.com/j/arcesium-product-manager-tax-1734579",
  "company": "Arcesium",
  "companyLogo": "https://recruiter-static-content.s3.ap-south-1.amazonaws.com/CompanyLogos/centralised-9058.webp",
  "companyRating": 3.3,
  "companyReviews": 409,
  "companyIndustry": "IT Services & Consulting",
  "companyAbout": "Arcesium delivers an advanced data, operations, and analytics platform used by some of the world’s most sophisticated asset managers, hedge funds, and banks. We designed our elegant SaaS platform with industry-specific capabilities to harmonize massive amounts of disparate data and deliver ...",
  "companyBenefits": [
    "Free Meal",
    "Health & Wellness Support",
    "Learning & Development Support",
    "Transport / Travel Support",
    "Performance Bonus"
  ],
  "companyAmbitionBoxUrl": "https://www.ambitionbox.com/reviews/arcesium-reviews",
  "locations": [
    "Hyderabad",
    "Bangalore",
    "Gurgaon/Gurugram"
  ],
  "remote": false,
  "experienceMin": 8,
  "experienceMax": 12,
  "salaryMinLpa": null,
  "salaryMaxLpa": null,
  "salaryMin": null,
  "salaryMax": null,
  "salaryCurrency": null,
  "salaryHidden": true,
  "skills": [
    "IT Product Management",
    "IT Jobs in BFSI",
    "Product Roadmap"
  ],
  "mandatorySkills": [],
  "applicants": 206,
  "views": 328,
  "applicationsReviewed": 0,
  "diversityHiring": [],
  "premium": true,
  "postedAt": "2026-09-22T05:34:08.310Z",
  "description": "Location: HYD/BLR/GGM.Arcesium is looking for a hands-on Product Manager to own and drive the evolution of our Tax Product for the Alternative Investment industry.This is a builder's role for someone who can work closely with Engineering to translate complex tax workflows into scalable technology solutions - from requirements definition through production delivery.We are looking for someone who ...",
  "searchQuery": "\"product manager\" in gurgaon",
  "scrapedAt": "2026-09-29T20:56:30.108Z"
}
```

### How much does it cost to scrape iimjobs?

| | Free plan | Starter | Scale | Business |
|---|---|---|---|---|
| 1,000 jobs | $1.00 | $0.80 | $0.65 | $0.50 |

You pay only for the events in the table. There is no start fee, and compute time and proxies are included.

A run that returns 2,000 jobs costs $2.00 on the Free plan and $1.00 on the Business plan, with or without descriptions. Filtered-out jobs and repeats are free.

### Limits

- Searches need at least one keyword. The broad keyword `manager` matched about 4,700 jobs in September 2026, so several keywords are needed to cover most of the site.
- Salary is published on a minority of postings, and the salary filters only see those.
- About a quarter of the jobs have no AmbitionBox rating, because the employer has no page there.
- The recruiter behind each posting is shown on iimjobs but is not part of the output.
- A verification page from iimjobs ends the run early with the jobs collected so far; the actor does not work around it.
- Unless you change **Maximum jobs**, a run stops at 1,000 jobs.

### Following the market over time

Give the search a **Watch name** or save it as a task, switch on **Return only jobs new since the last run** and schedule it every morning. The first run returns everything that matches; after that you receive only postings that appeared since the previous run, and you pay only for those. This is how to keep a list of companies hiring for a function, for example CFO or head-of-sales roles in Mumbai.

### FAQ

#### Is it legal to scrape iimjobs?

The postings are public: iimjobs shows them to visitors who are not logged in, and the actor collects only the job and company information, not the recruiter. Using the data is up to you and the laws that apply to you, including privacy law if you combine it with personal data.

#### Why is `companyRating` empty for some jobs?

iimjobs attaches an AmbitionBox rating only when the employer has a page there. Jobs from employers without one keep the rating fields empty.

#### Does `applicationsReviewed` show the recruiter's activity?

It is a count iimjobs publishes with each job: how many of the applications the employer has already acted on. It is read from the job's detail page, so it needs **Include the full job description**.

### Related scrapers

- [Hirist Jobs Scraper](https://apify.com/deriverge/hirist-jobs-scraper)
- [Foundit Jobs Scraper](https://apify.com/deriverge/foundit-jobs-scraper)
- [Instahyre Jobs Scraper](https://apify.com/deriverge/instahyre-jobs-scraper)
- [Career Site Jobs Search](https://apify.com/deriverge/career-site-jobs-search)

### Support

This actor is built and maintained by deriverge s.r.o., a software company based in the Czech Republic. If a run fails or a field you need is missing, please open an issue in the **Issues** tab or write to us at info@deriverge.com. We respond in English and Czech. Runs can be scheduled in Apify Console or started from the **API** tab, which has examples for Python, JavaScript and cURL and works with Make, Zapier, n8n and the Apify MCP server. If the actor saves you time, a short review helps other people find it.

# Changelog

This Actor's version history is a separate document: https://apify.com/deriverge/iimjobs-scraper/changelog.md

# Actor input Schema

## `keywords` (type: `array`):

What to search for, as in the iimjobs search box: a skill, role or function, for example "product manager", "finance", "strategy" or "sales head". Each keyword is its own search. iimjobs needs at least one.

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

Only jobs in these cities, for example Bangalore, Mumbai, Delhi NCR, Gurgaon, Noida, Hyderabad, Pune or Chennai. Known cities use the site filter; others are matched in the job locations.

## `remoteOnly` (type: `boolean`):

Only jobs located as Remote or Work from home.

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

Only jobs whose experience range fits candidates with at least this many years (the site filter).

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

Only jobs whose experience range fits candidates with at most this many years; 0 to 2 finds fresher roles.

## `postedWithinDays` (type: `integer`):

Only jobs posted in the last N days, for example 1, 7 or 30.

## `hasSalary` (type: `boolean`):

Only jobs whose employer shows the salary range (most keep it hidden).

## `minSalaryLpa` (type: `integer`):

Only jobs whose published salary reaches this many lakh rupees a year, for example 20 for 20 LPA (2,000,000 INR).

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

Reads each job page for the full description and how many applications the employer has already reviewed. Turn off for faster runs with search data only; the price is the same.

## `excludeKeywords` (type: `array`):

Drop jobs whose title or company contains any of these, for example "intern" or a company name.

## `newOnly` (type: `boolean`):

Keeps a snapshot per watch name (or per saved task) and returns only jobs that were not there before. Schedule it daily for a job alert.

## `watchName` (type: `string`):

Name of the snapshot used by the new-only mode, for example "python-bangalore". Runs from a saved task get one automatically.

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

Hard cap on returned jobs; empty means 1,000. With descriptions about 80 jobs a minute, without them about 1,000.

## Actor input object example

```json
{
  "keywords": [
    "marketing"
  ],
  "remoteOnly": false,
  "hasSalary": false,
  "includeDescription": true,
  "newOnly": false,
  "maxItems": 20
}
```

# Actor output Schema

## `jobs` (type: `string`):

One row per job with company rating, experience, salary, skills and description.

## `summary` (type: `string`):

Jobs matching and returned per search, and rows dropped by filters.

# 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 = {
    "keywords": [
        "marketing"
    ],
    "maxItems": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("deriverge/iimjobs-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 = {
    "keywords": ["marketing"],
    "maxItems": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("deriverge/iimjobs-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 '{
  "keywords": [
    "marketing"
  ],
  "maxItems": 20
}' |
apify call deriverge/iimjobs-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,deriverge/iimjobs-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/pEX2rtc6dwtW9bssM/builds/bKSWfsHDOGzz9mFv3/openapi.json
