IIMJobs Job Listings Scraper
Pricing
from $2.06 / 1,000 item extracteds
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
Maintained by CommunityActor 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:
maxItemscontrols 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?
| Field | Meaning |
|---|---|
jobId | Stable IIMJobs vacancy identifier |
title | Public job title |
designation | Role designation when provided |
employer, employerId | Public employer name and source identifier |
locations | All displayed vacancy locations |
experienceMinYears, experienceMaxYears | Requested experience range |
salaryMinLakh, salaryMaxLakh | Annual lakh-INR range when disclosed |
salaryDisclosed | Whether a salary range is public |
skills | Public skills and tags |
descriptionText | Cleaned full description when enrichment is enabled |
descriptionHtml | Original public description markup |
postedAt | Posting timestamp in ISO 8601 format |
category | Normalized IIMJobs specialist category |
workFromHome, premium | Public source flags |
applications, views | Public counters when available |
recruiterName, recruiterDesignation | Public recruiter fields when displayed |
url | Canonical public job URL |
source, scrapedAt | Source 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
- Open the Actor in Apify Console.
- Enter a
query, such asinvestment bankingorfinancial analysis. - Optionally choose categories, location, experience, and posting-age filters.
- Keep
includeDescriptionenabled for full job records, or disable it for a faster summary feed. - Set
maxItemsto the maximum number of unique jobs you need. - Click Start.
- 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
| Input | Type | Default | Description |
|---|---|---|---|
query | string | — | Role, skill, employer, or qualification keywords |
categories | string[] | all | IIMJobs specialist categories to search |
location | string | — | Case-insensitive text contained in a public location |
minExperience | integer | — | Minimum acceptable experience overlap |
maxExperience | integer | — | Maximum acceptable experience overlap |
postedWithinDays | integer | — | Keep jobs posted within 1–365 days |
startUrls | URL[] | [] | Specific public iimjobs.com job pages |
includeDescription | boolean | true | Fetch full detail data for each accepted job |
maxItems | integer | 50 | Save 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: falsewhen 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 osfrom apify_client import ApifyClientclient = 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().itemsprint(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
nullwhen 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.
Related Automation Lab Actors
- Instahyre Jobs Scraper for public India technology-job search feeds.
- Cutshort Jobs Scraper for another India-focused recruiting source.
- HiringCafe Jobs Scraper for normalized public vacancy search across HiringCafe.
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.