IIMJobs Job Listings Scraper avatar

IIMJobs Job Listings Scraper

Pricing

from $2.06 / 1,000 item extracteds

Go to Apify Store
IIMJobs Job Listings Scraper

IIMJobs Job Listings Scraper

Search and export public IIMJobs specialist vacancies with employer, location, experience, disclosed salary, descriptions, posting metadata, and canonical URLs.

Pricing

from $2.06 / 1,000 item extracteds

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Categories

Share

Search and export public IIMJobs job listings as structured vacancy data. Collect job titles, employers, locations, experience ranges, disclosed salary or CTC, skills, posting dates, descriptions, recruiter metadata, and canonical URLs.

The Actor is designed for recurring India recruiting feeds, specialist vacancy research, and labor-market analysis. It uses IIMJobs' anonymous public data surfaces: no account, login, browser, or proxy configuration is required.

What can you do with this IIMJobs scraper?

  • Search public vacancies by role, skill, employer, or qualification.
  • Restrict a search to one or more specialist IIMJobs categories.
  • Keep jobs matching a location or experience range.
  • collect recently posted jobs for a scheduled recruiting feed.
  • Extract one or more known public IIMJobs job URLs.
  • Include full public descriptions and posting metadata when needed.
  • Export results to JSON, CSV, Excel, Google Sheets, a database, or an ATS.
  • Compare scheduled datasets downstream to identify new or changed listings.

The Actor returns normalized records rather than raw pages. Each row has a stable source job ID and URL, which makes deduplication straightforward.

Who is it for?

Recruiters and talent teams

Build focused shortlists for finance, consulting, sales, HR, operations, legal, IT, BPO, and GenAI roles without copying vacancy cards manually.

Recruiting operations teams

Feed public IIMJobs vacancies into spreadsheets, ATS staging tables, n8n, Make, Zapier, or an internal data warehouse on a schedule.

Labor-market analysts

Track public role demand, requested experience, locations, skills, and disclosed compensation over time. Store each run as a dated snapshot and compare outside the Actor.

Developers and AI agents

Call one predictable Actor endpoint instead of maintaining page selectors. Use the stable jobId, typed fields, and canonical url in downstream automation.

Why use this Actor?

  • Source-specific output: fields are mapped to IIMJobs vacancy concepts.
  • Two input routes: search the job board or enrich exact public job URLs.
  • Optional detail enrichment: avoid detail requests when summary fields are enough, or enable them for descriptions and richer metadata.
  • Bounded execution: maxItems controls output and work performed.
  • Fail-closed behavior: invalid input and unexpected upstream response shapes produce a failed run instead of a misleading empty success.
  • No automatic paid proxy: the current public HTTP route works directly.

No scraper can guarantee historical completeness or permanent source uptime. This Actor reports what IIMJobs exposes publicly when the run executes.

What data does it extract?

FieldMeaning
jobIdStable IIMJobs vacancy identifier
titlePublic job title
designationRole designation when provided
employer, employerIdPublic employer name and source identifier
locationsAll displayed vacancy locations
experienceMinYears, experienceMaxYearsRequested experience range
salaryMinLakh, salaryMaxLakhAnnual lakh-INR range when disclosed
salaryDisclosedWhether a salary range is public
skillsPublic skills and tags
descriptionTextCleaned full description when enrichment is enabled
descriptionHtmlOriginal public description markup
postedAtPosting timestamp in ISO 8601 format
categoryNormalized IIMJobs specialist category
workFromHome, premiumPublic source flags
applications, viewsPublic counters when available
recruiterName, recruiterDesignationPublic recruiter fields when displayed
urlCanonical public job URL
source, scrapedAtSource attribution and collection timestamp

Fields unavailable or hidden by IIMJobs are returned as null; hidden salary is never guessed. Detail-only fields are null when includeDescription is false.

How to get started

  1. Open the Actor in Apify Console.
  2. Enter a query, such as investment banking or financial analysis.
  3. Optionally choose categories, location, experience, and posting-age filters.
  4. Keep includeDescription enabled for full job records, or disable it for a faster summary feed.
  5. Set maxItems to the maximum number of unique jobs you need.
  6. Click Start.
  7. Open the Dataset tab and export the result in your preferred format.

For one known vacancy, omit query and place the public job page in startUrls. You can also combine exact URLs with a search in one run.

Input parameters

InputTypeDefaultDescription
querystringRole, skill, employer, or qualification keywords
categoriesstring[]allIIMJobs specialist categories to search
locationstringCase-insensitive text contained in a public location
minExperienceintegerMinimum acceptable experience overlap
maxExperienceintegerMaximum acceptable experience overlap
postedWithinDaysintegerKeep jobs posted within 1–365 days
startUrlsURL[][]Specific public iimjobs.com job pages
includeDescriptionbooleantrueFetch full detail data for each accepted job
maxItemsinteger50Save at most 1–1,000 unique jobs

Provide at least one non-empty query or one startUrls entry. Unsupported domains and URLs without a terminal numeric IIMJobs job ID are rejected.

Search example

{
"query": "investment banking",
"categories": ["banking-finance"],
"includeDescription": false,
"maxItems": 10
}

This mode is useful for a low-transfer vacancy snapshot. Summary records still include employer, locations, experience, disclosed salary, skills, and URL.

Exact URL example

{
"startUrls": [
{
"url": "https://www.iimjobs.com/j/fis-global-business-solutions-analystsenior-lead-financial-planning-analysis-1729810"
}
],
"includeDescription": true,
"maxItems": 1
}

Search filters also apply to explicit URLs when both routes are combined. Duplicate job IDs are saved once.

Recurring recruiting-feed example

{
"query": "financial analysis",
"categories": ["banking-finance"],
"postedWithinDays": 30,
"includeDescription": true,
"maxItems": 100
}

Schedule this input daily or weekly in Apify. Keep each run dataset, then compare jobId and selected fields in your destination to identify additions or edits. The Actor itself does not send alerts or maintain a cross-run change database.

Output example

A current enriched run returns records shaped like this (long description fields are shortened here):

{
"jobId": 1729810,
"title": "FIS Global Business Solutions - Analyst/Senior Lead - Financial Planning & Analysis",
"designation": "Analyst/Senior Lead - Financial Planning & Analysis",
"employer": "FIS",
"employerId": 3437,
"locations": ["Gurgaon/Gurugram"],
"experienceMinYears": 10,
"experienceMaxYears": 20,
"salaryMinLakh": null,
"salaryMaxLakh": null,
"salaryDisclosed": false,
"skills": ["Financial Analysis", "Financial Planning", "Budgeting"],
"descriptionText": "Analyst Sr Lead, Financial Planning & Analysis…",
"postedAt": "2026-09-03T06:30:00.000Z",
"category": "banking-finance",
"workFromHome": false,
"premium": true,
"url": "https://www.iimjobs.com/j/fis-global-business-solutions-analystsenior-lead-financial-planning-analysis-1729810",
"source": "iimjobs.com",
"scrapedAt": "2026-09-03T14:30:00.000Z"
}

Use the dataset schema's overview view for the most useful columns. The full JSON export retains every documented field.

How much does it cost to export IIMJobs vacancies?

The Actor uses pay-per-event pricing: one small start event per run and one item event for each vacancy saved. Rejected, duplicate, or failed records do not create an item event. Tier prices decrease automatically at larger account usage levels; Console shows your applicable tier before the run.

At the BRONZE rate, the start event is $0.005 and each saved job is $0.003428. Example totals are approximately:

  • 1 job: $0.008428
  • 10 jobs: $0.03928
  • 100 jobs: $0.34780

Apify platform usage is included in this pricing model. Final billed totals can vary by the pricing tier applicable to your account. Set maxItems to create a clear upper bound on result-event charges.

Performance and cost tips

  • Set includeDescription: false when listing-card fields are sufficient.
  • Use a focused query and categories to avoid irrelevant candidates.
  • Apply location, experience, and posting-age filters before increasing limits.
  • Start with 10–50 items when testing a new pipeline.
  • Prefer one scheduled run with the required limit over many tiny runs because each run has one start event.
  • The direct HTTP implementation normally fits the configured 256 MB memory.

Integrations and workflows

Google Sheets or Excel

Run the Actor, open the dataset, and export CSV or XLSX. For recurring work, connect the dataset API to an automation that upserts by jobId.

ATS or recruiting database

Map jobId to the external source ID, title to role, employer to company, locations to workplace, and url to source link. Review source data before moving any person or vacancy into an automated decision process.

n8n, Make, and Zapier

Trigger the Actor on a schedule, wait for completion, retrieve default dataset items, then filter or route rows downstream. Use jobId for deduplication.

Data warehouse

Append each run with scrapedAt as snapshot time. This supports vacancy counts, skill trends, location distributions, experience demand, and disclosed-salary analysis without asking the Actor to infer missing values.

Run with the Apify API using cURL

Replace YOUR_APIFY_TOKEN with a secret or environment variable:

curl -X POST \
"https://api.apify.com/v2/acts/automation-lab~iimjobs-job-listings-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"query":"investment banking","categories":["banking-finance"],"includeDescription":false,"maxItems":10}'

Do not commit tokens to source control or include them in public task inputs.

Run with JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/iimjobs-job-listings-scraper').call({
query: 'financial analysis',
categories: ['banking-finance'],
postedWithinDays: 30,
includeDescription: true,
maxItems: 50,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Run with Python

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("automation-lab/iimjobs-job-listings-scraper").call(run_input={
"query": "financial analysis",
"categories": ["banking-finance"],
"includeDescription": True,
"maxItems": 50,
})
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(items)

Use with MCP and AI agents

Add the Apify MCP server to Claude Code:

claude mcp add --transport http apify \
"https://mcp.apify.com?tools=automation-lab/iimjobs-job-listings-scraper"

Claude Desktop setup

Add the following MCP server configuration in Claude Desktop.

Cursor setup

Use the same JSON in Cursor's MCP settings.

VS Code setup

Use the same server URL in your VS Code MCP configuration.

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=automation-lab/iimjobs-job-listings-scraper"
}
}
}

Example prompts:

  • “Find 20 public IIMJobs investment banking vacancies and return employer, location, experience, skills, and URL.”
  • “Extract this public IIMJobs job URL and summarize its required experience.”
  • “Create a dataset of recent financial analysis roles for my recruiting feed.”

Treat model-generated summaries as derived content and retain the source URL for verification.

Scheduling and change monitoring

Use an Apify schedule to run a stable input daily or weekly. Send each completed dataset to your own spreadsheet, database, or automation. Compare records by jobId; use postedAt and selected field values to decide what changed.

A listing can disappear, expire, or be edited between runs. The Actor does not claim that absence proves a role was filled, and it does not preserve deleted pages unless you retain prior datasets.

Limitations

  • Only public anonymous IIMJobs data is collected.
  • The Actor does not log in, apply to jobs, download resumes, or contact people.
  • Salary fields are null when the source hides or omits compensation.
  • Public counters and recruiter fields may be absent.
  • Search relevance and vacancy order are controlled by IIMJobs.
  • Large all-category searches can require several source requests.
  • Source API or field changes can temporarily require Actor maintenance.
  • No residential or browser fallback is enabled; unexpected blocks fail clearly.
  • This is a data extraction tool, not a guarantee that a vacancy remains open.

Responsible use and legality

IIMJobs and the displayed vacancies belong to their respective owners. Collect only public data you are authorized to use. Follow applicable website terms, robots guidance, database rights, privacy law, employment law, and contractual obligations. Do not use public recruiter information for spam or harassment.

You are responsible for retention, sharing, automated-decision, and outreach practices in downstream systems. Avoid inferring sensitive traits or making employment decisions solely from scraped data.

Troubleshooting

The run fails before making requests

Provide a non-empty query or at least one supported public job URL. Check that experience values are integers from 0 to 50 and that the minimum is not greater than the maximum.

A specific URL is rejected

Use a public https://www.iimjobs.com/j/...-NUMERIC_ID URL. Search pages, category pages, other domains, and URLs without a terminal job ID are not exact job inputs.

The dataset is empty

The query and filters may have no current public matches. Remove optional filters, broaden the category set, or test a known current role. A valid natural no-result search succeeds with an empty dataset.

Some descriptions are null

Set includeDescription to true. If it is already true, the source may not publish a description for that record.

The source returns an error

Transient network, rate-limit, and server errors are retried up to three times. A persistent block or unexpected response fails the run so a scheduled workflow can alert on the failure rather than ingesting false empty data.

Frequently asked questions

Does it need an IIMJobs account?

No. It uses anonymous public vacancy data and does not access user accounts.

Does it use a proxy?

No automatic proxy is configured. The current direct public HTTP route is both simpler and less expensive.

Can I scrape one job page?

Yes. Put one or more supported public job URLs in startUrls.

Can I filter by city?

Yes. location performs case-insensitive containment against locations shown by IIMJobs. For example, Bengaluru keeps records with that displayed location.

Can it disclose hidden salary?

No. Hidden or unavailable compensation remains null, and salaryDisclosed is false.

Can it send alerts for new jobs?

Schedule the Actor and compare datasets in your destination. Alerting and cross-run state are intentionally left to the integration layer.

How do I avoid duplicates?

The Actor deduplicates jobs by jobId within a run. Use the same field as an upsert key across scheduled runs.

Use separate source Actors when you need source attribution and field fidelity. Combine their datasets downstream only after defining your own normalization and deduplication rules.

Support

For a reproducible problem, include the Actor run URL, redacted input, expected result, and the first relevant log error. Never include Apify tokens, private credentials, or personal data in a support message.