India Jobs MCP
Search nine Indian job boards (Naukri, Indeed India, Foundit, Shine, Apna, CutShort, Hirist, Instahyre, Internshala) from one remote MCP endpoint, plus LinkedIn candidate sourcing and AmbitionBox employer snapshots. 14 tools. Hosted on Apify, pay per result, and a search that comes back empty is not billed.
Hosted MCP Server
npx add-mcp 'https://themineworks--india-jobs-mcp.apify.actor/mcp'Installs into Claude Code, Codex, Cursor and more
Documentation
India Jobs MCP | 14 Tools: Naukri, LinkedIn, 9 Boards (themineworks/india-jobs-mcp) Actor
Aggregated India job-market data for AI agents: Naukri, Indeed India, Foundit, Shine, Apna, CutShort, Hirist, Instahyre, Internshala, plus LinkedIn candidate sourcing and AmbitionBox employer snapshots. No result, no charge.
- URL: https://apify.com/themineworks/india-jobs-mcp.md
- Developed by: The Mine Works (community)
- Categories: Jobs, Business, MCP servers
- Stats: 201 total users, 69 monthly users, 100.0% runs succeeded, 0 bookmarks
- User rating: No ratings yet
Pricing
from $35.00 / 1,000 search_jobs_naukris
This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
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 section below.
Each client library has reference documentation the quickstart does not restate: JavaScript/TypeScript (npm install apify-client) and Python (pip install apify-client).
README
India Jobs MCP | 14 Tools: Naukri, LinkedIn, 9 Boards
From The Mine Works, makers of Threads Scraper and B2B Leads Finder, with nearly 139,000 runs across our actors.
Why choose this actor?
- Nine India job boards behind one connection. Naukri, Indeed India, Foundit, Shine, Hirist, Internshala, Apna, CutShort and Instahyre, plus LinkedIn sourcing and an AmbitionBox employer lookup: 14 tools, one URL, one Apify token. In a recorded test, one
search_jobs_naukricall returned 25 Bengaluru data engineer jobs, billed as one $0.035 event and nothing else. No job board accounts or API keys. - One price per call, and it is the whole bill. The tool price is the only charge. The scrapers behind the tools run on our Apify account, so no second actor run appears in your Console or on your bill.
- No result, no charge. A tool that finds nothing, times out or fails is not billed. The two multi-board tools bill by how many boards actually answered, so a search where only one board responds costs $0.052, not the full $0.364.
- Retries are not billed twice. If your agent repeats the exact same call within 60 seconds of a billed answer (a network blip, a client retry), the server that answered hands back the same result with a charge of zero. In a recorded test the repeat came back instantly with a billed count of 0.
Part of The Mine Works Jobs and hiring family: Foundit Monster India Jobs, Hirist Jobs Scraper, Naukri Jobs Scraper, Shine.com Jobs Scraper, Internshala Scraper, Instahyre Jobs Scraper.
Try it in one minute
This actor is an MCP server, not a scraper you start with a form. You connect an MCP client (Claude, Cursor, your own agent) to its address and the client calls the tools. Starting a normal run from the Console does nothing except print the address.
Claude Code, one line in your terminal:
claude mcp add --transport http india-jobs https://themineworks--india-jobs-mcp.apify.actor/mcp --header "Authorization: Bearer YOUR_APIFY_TOKEN"
Cursor (.cursor/mcp.json), and any client that accepts a remote server with headers:
{
"mcpServers": {
"india-jobs": {
"url": "https://themineworks--india-jobs-mcp.apify.actor/mcp",
"headers": { "Authorization": "Bearer YOUR_APIFY_TOKEN" }
}
}
}
Claude Desktop and other clients that only start local servers can reach it through the mcp-remote bridge:
{
"mcpServers": {
"india-jobs": {
"command": "npx",
"args": ["mcp-remote", "https://themineworks--india-jobs-mcp.apify.actor/mcp", "--header", "Authorization: Bearer YOUR_APIFY_TOKEN"]
}
}
}
Then ask: "Search Naukri for 10 data engineer jobs in Bengaluru." The client picks search_jobs_naukri and sends these arguments:
{
"keywords": "data engineer",
"location": "Bengaluru",
"max_jobs": 10
}
Every tool takes plain arguments like these: a keyword or job title, a city, a company name, a list of LinkedIn profile URLs, or a board's own category slug for the three boards that only browse by category. The full argument list for each tool is in "Input parameters" below. Your Apify API token is at console.apify.com/account/integrations.
Apify's free plan includes $5 of credit every month, which covers about 142 search_jobs_naukri calls of 25 jobs each (about 3,550 jobs) at $0.035 a call. Nothing else is charged (see "Pricing").
Copy to your AI assistant
themineworks/india-jobs-mcp on Apify. An MCP server with 14 India job market tools: search_jobs_naukri, search_jobs_indeed_india, search_jobs_foundit, search_jobs_shine, search_jobs_hirist, search_internshala, search_jobs_apna, search_jobs_cutshort, search_jobs_instahyre, search_all_india_jobs, hiring_signals_india, find_candidates, enrich_profile, company_snapshot. Do not start it with ApifyClient(...).actor(...).call(): a normal run only prints its address. Connect instead: POST JSON-RPC 2.0 to https://themineworks--india-jobs-mcp.apify.actor/mcp with headers Authorization: Bearer TOKEN and Accept: application/json, text/event-stream (replies arrive as server-sent events), call tools/list, then tools/call with {"name": "search_jobs_naukri", "arguments": {"keywords": "data engineer", "location": "Bengaluru", "max_jobs": 25}}. Required per tool: keywords (Naukri, Foundit, Shine, all-India search), query (Indeed India), company (find_candidates, hiring_signals_india), company_name (company_snapshot), profile_urls (enrich_profile, up to 25). Optional: location, max_jobs (default 25, max 200), experience and salary filters per board, max_per_source (default 15, max 50) for the two multi-board tools. Most tools bill per 25 results; nothing found is free; the tool price is the only charge (the underlying actors run on the server owner's account, and each answer's billed.total_usd states what the call cost). Full spec: GET https://api.apify.com/v2/acts/themineworks~india-jobs-mcp/builds/default (Bearer TOKEN), which returns inputSchema and readme. Token: https://console.apify.com/account/integrations
Key features
- 14 tools in four groups: 9 single-board job searches, 2 multi-board tools (
search_all_india_jobsacross 6 boards,hiring_signals_indiaacross 6 boards plus an employer snapshot), 2 LinkedIn candidate tools and 1 employer snapshot. - Up to 200 results per call on every single-board tool (default 25), and up to 50 per board (default 15) on the two multi-board tools, which run their boards in parallel.
- Board-native filters where the board has them: Naukri's experience, salary, work mode, job type and posting window; Foundit's experience, employment type and posting window; Shine's experience and salary bands; Hirist's categories and locations; Internshala's internship, job or fresher board with a stipend floor.
- Billed per 25 results, never for nothing. 11 tools bill one event per 25 results or part of 25, so 10 jobs is one event and 60 jobs is three.
company_snapshotis one flat charge. Empty answers, errors and timeouts cost nothing. Each tool's description, as your agent sees it, states the current price read from this server's live pricing. - Honest about three boards. Apna, CutShort and Instahyre have no real keyword search on their own sites, so their tools browse by category, function or city instead of pretending to search, and they are kept out of the multi-board search.
- Guard rails for agents: 60 calls a minute per caller, a 120 second limit per tool (240 seconds for the multi-board tools, 180 for Apna), and a clear reason in every answer that comes back empty.
How to use it
Each example is what your MCP client sends as tools/call arguments. In practice you type the request in plain language and the client fills these in.
Basic: one board, one city
Tool search_jobs_naukri:
{ "keywords": "data engineer", "location": "Bengaluru", "max_jobs": 25 }
Returns up to 25 Naukri jobs, billed as one event ($0.035).
Several boards at once
Tool search_all_india_jobs:
{ "keywords": "backend engineer", "location": "Bangalore", "max_per_source": 10 }
Searches Naukri, Indeed India, Foundit, Shine, Hirist and Internshala in parallel and returns each board's results under its own key. Billed once, by how many boards answered.
Is this company hiring in India, and where?
Tool hiring_signals_india:
{ "company": "Swiggy", "max_per_source": 15 }
Searches the same six boards for the company name and adds a LinkedIn and AmbitionBox snapshot. Useful for sales teams timing outreach, and for candidates checking whether a company is growing. Run it weekly from a scheduled agent to watch the open-role count move.
Build a sourcing list for one role at one company
Tool find_candidates, then enrich_profile on the promising ones:
{ "company": "Razorpay", "job_title": "product manager", "max_results": 25 }
{ "profile_urls": ["https://www.linkedin.com/in/<profile-from-the-first-call>"] }
find_candidates returns public LinkedIn profiles of people at the company with that title; enrich_profile turns up to 25 profile URLs per call into structured experience, education and skills.
Internships and fresher roles for a campus team
Tool search_internshala:
{ "keywords": "digital marketing", "employment_type": "internship", "location": "bangalore", "stipend_min": 10000, "max_results": 50 }
Set employment_type to job or fresher_job for Internshala's other two boards.
Blue-collar and early-career roles
Tool search_jobs_apna:
{ "category": "dep_delivery_driver_logistics", "max_jobs": 50 }
Apna has no keyword search, so give it a category (or a city). A keyword is only a filter on job titles after the browse, and without a category it can walk hundreds of jobs and run past its 180 second limit.
Input parameters
The actor's own input form has a single field, because the server takes its instructions from MCP tool calls, not from a run input:
| Parameter | Type | Default | What it does |
|---|---|---|---|
readme | string | "Connect your MCP client to https://themineworks--india-jobs-mcp.apify.actor/mcp. See the README." | Information only. A normal run prints this pointer and stops; nothing is scraped or billed. |
Tool arguments
| Tool | Required | Optional (default) |
|---|---|---|
search_jobs_naukri | keywords | location, experience_min_years (0 to 30), experience_max_years (0 to 30; passed to the Naukri actor, which does not apply it today), salary_min_lakhs, work_mode (work-from-office, remote, hybrid), job_type (permanent, contract, freelance, temporary, internship), posted_within_days (1, 3, 7, 15, 30), max_jobs (25, up to 200) |
search_jobs_indeed_india | query | location (omit for nationwide), max_jobs (25, up to 200) |
search_jobs_foundit | keywords | location, experience_min_years, experience_max_years, employment_type (Full Time, Part Time), posted_within_days (1, 3, 7, 15, 30), max_jobs (25, up to 200) |
search_jobs_shine | keywords | location, experience_level (lt1, 1to2, 3to5, 6to8, 9to10, 11to15, gt15), salary_range in lakhs (0to2, 3to5, 6to8, 9to12, 13to16, 17to25, gt25), employment_type (regular, contractual, internship, work-from-home), sort_by (relevance, freshness), max_jobs (25, up to 200) |
search_jobs_hirist | none | keyword, category (one of 12 tech categories such as backend-development-jobs, data-engineering-jobs, ai-ml-jobs, devops-sre-jobs), locations (list), experience_min_years, experience_max_years, posted_within_days, max_jobs (25, up to 200) |
search_internshala | none | keywords, employment_type (internship by default, or job, fresher_job), category, location, work_from_home, part_time, stipend_min (INR a month for internships, a year for jobs), max_results (25, up to 200) |
search_jobs_apna | none | category (Apna department slug), city (ignored when a category is set), job_type (full_time, part_time), keyword (title filter only), freshers_only, work_from_home_only, night_shift_only, max_jobs (25, up to 200) |
search_jobs_cutshort | none | categories (list of CutShort category slugs such as remote-golang-jobs; omit to browse the whole index), max_jobs (25, up to 200) |
search_jobs_instahyre | none | job_functions (list of function slugs such as backend-development), job_type (full_time, internship), company_size (small, medium, large), max_jobs (25, up to 200) |
search_all_india_jobs | keywords | location, max_per_source (15, up to 50) |
hiring_signals_india | company | linkedin_url, max_per_source (15, up to 50) |
find_candidates | company | job_title, max_results (25, up to 200) |
enrich_profile | profile_urls (1 to 25 LinkedIn profile URLs) | none |
company_snapshot | company_name | linkedin_url (without it, only the AmbitionBox half is looked up) |
What data do you get?
Every tool call returns one JSON answer.
A billed answer carries tool (the tool name), cached (true when the answer came from the server's 24 hour cache, which the Indeed India, CutShort and enrich_profile tools use), billed (the event name, how many events were charged, the price of one event and total_usd, the full cost of the call) and data (the results).
An empty or failed answer carries found: false, source (which board or service) and reason in plain words, and costs nothing.
A repeated call within 60 seconds of a billed one also carries duplicate with a note that it was served again and not billed.
Single-board tools put a list of job rows in data, in the same shape as the matching Mine Works actor. For search_jobs_naukri that is the Naukri Jobs Scraper row: job_id, title, company, company_rating, company_logo, experience_min_years, experience_max_years, experience_text, salary_text, salary_min_lakhs, salary_max_lakhs, location, work_mode, job_type, posted_date_text, posted_days_ago, skills, description (cut to 500 characters), apply_url, source_url, scraped_at. Each underlying actor's run-summary rows are removed before counting, so you are never billed for them.
search_all_india_jobs returns keywords, location, sources_tier (complete, partial or pay_per_section), sources_attempted, sources_usable, total_jobs_found and results_by_source, with one key per board (naukri, indeed_india, foundit, shine, hirist, internshala). A board that did not answer shows found: false with its reason.
hiring_signals_india returns company, signals_tier, sections_attempted, sections_usable, open_postings_found and a report with the six boards plus employer_snapshot.
company_snapshot returns linkedin and ambitionbox, each with found, count and items. Only real company records count; when neither source has one, the answer is found: false and free.
Stable fields for automations
These fields were present in every billed answer and every Naukri row we recorded:
| Field | What it holds |
|---|---|
tool | The tool that answered |
cached | Whether the answer came from the 24 hour cache |
billed.event | The pricing event charged, such as search_jobs_naukri |
billed.count | How many events were charged (0 on a repeat) |
billed.total_usd | What the call cost you in USD, in full (0 on a repeat) |
data | The results |
job_id | Naukri's job ID |
title | Job title |
company | Employer name |
location | Location as the board lists it |
salary_text | Salary as published, including "Not disclosed" |
skills | Skill tags |
apply_url | Link to the job page |
scraped_at | ISO timestamp of capture |
We will not rename these fields. New fields may be added; existing ones keep their names.
Output examples
These answers were recorded on 30 September 2026 (IST) by running this server's code on our own machine, with the job board actors it calls also run locally through a datacenter proxy. Rows are trimmed.
A search_jobs_naukri answer for {"keywords": "data engineer", "location": "Bengaluru"}: 25 jobs, one event.
{
"tool": "search_jobs_naukri",
"cached": false,
"billed": { "event": "search_jobs_naukri", "count": 1, "price_usd": 0.035, "total_usd": 0.035 },
"data": [
{
"job_id": "050826500995",
"title": "Data Engineer",
"company": "Cisco",
"company_rating": "4.1",
"company_logo": "https://img.naukimg.com/logo_images/groups/v1/45216.gif",
"experience_min_years": 4,
"experience_max_years": 8,
"experience_text": "4-8 Yrs",
"salary_text": "Not disclosed",
"location": "Bengaluru",
"posted_date_text": "30+ Days Ago",
"skills": ["Computer science", "Data analysis", "Agile scrum"],
"description": "<p> <b>Meet The Team</b> <br /> </p> <p>Our team works in a fast-paced, complex environment…",
"apply_url": "https://www.naukri.com/job-listings-data-engineer-cisco-bengaluru-4-to-8-years-050826500995",
"source_url": "https://www.naukri.com/job-listings-data-engineer-cisco-bengaluru-4-to-8-years-050826500995",
"scraped_at": "2026-09-30T08:00:56.758Z"
},
{
"job_id": "180926016268",
"title": "PySpark Data Engineer",
"company": "Infosys",
"company_rating": "3.5",
"company_logo": "https://img.naukimg.com/logo_images/groups/v1/13832.gif",
"experience_min_years": 2,
"experience_max_years": 5,
"experience_text": "2-5 Yrs",
"salary_text": "Not disclosed",
"location": "Hyderabad, Chennai, Bengaluru",
"posted_date_text": "12 Days Ago",
"posted_days_ago": 12,
"skills": ["Pyspark", "Spark", "SQL"],
"description": "Preferred Candidate Profile <br><br>Exposure to Databricks,Hadoop,or Hive is preferred…",
"apply_url": "https://www.naukri.com/job-listings-pyspark-data-engineer-infosys-hyderabad-chennai-bengaluru-2-to-5-years-180926016268",
"source_url": "https://www.naukri.com/job-listings-pyspark-data-engineer-infosys-hyderabad-chennai-bengaluru-2-to-5-years-180926016268",
"scraped_at": "2026-09-30T08:00:56.777Z"
}
]
}
The call cost $0.035 in total. The Naukri actor run behind it started on our Apify account, so nothing else was billed to the caller. An earlier recorded call with max_jobs: 60 returned 60 jobs and was billed "count": 3 (60 jobs is three blocks of 25).
The same call sent again a few seconds later: the same data, not billed.
{
"tool": "search_jobs_naukri",
"cached": false,
"billed": { "event": "search_jobs_naukri", "count": 0, "total_usd": 0 },
"duplicate": "Identical call within 60s of a billed success, served again and not billed again.",
"data": ["the same 25 jobs"]
}
A search_all_india_jobs answer for {"keywords": "backend engineer", "location": "Bangalore", "max_per_source": 10}. Five boards answered. Indeed India refused the datacenter address we tested from, which shows how a partial answer is reported and billed: one partial_all_india_jobs event, $0.208 in total, instead of the full price.
{
"tool": "search_all_india_jobs",
"cached": false,
"billed": { "event": "partial_all_india_jobs", "count": 1, "price_usd": 0.208, "total_usd": 0.208 },
"data": {
"keywords": "backend engineer",
"location": "Bangalore",
"sources_tier": "partial",
"sources_attempted": 6,
"sources_usable": 5,
"total_jobs_found": 41,
"results_by_source": {
"naukri": ["10 Naukri job rows, same shape as above"],
"indeed_india": { "found": false, "source": "Indeed India", "reason": "No matching records found." },
"foundit": ["10 Foundit job rows"],
"shine": ["10 Shine.com job rows"],
"hirist": ["10 Hirist job rows"],
"internshala": ["1 Internshala job row"]
}
}
}
When all six boards answer, the call is billed once as search_all_india_jobs ($0.364).
Pricing
Pay per event, the same price on every Apify plan (no Free, Bronze, Silver or Gold split on this server) and no start fee. The prices below are the whole cost of a call.
| Tool | Event | Price | Charged per | Underlying actor |
|---|---|---|---|---|
search_jobs_naukri | search_jobs_naukri | $0.035 | 25 results or part of 25 | Naukri Jobs Scraper |
search_jobs_indeed_india | search_jobs_indeed_india | $0.12 | 25 results or part of 25 | Indeed Jobs Scraper |
search_jobs_foundit | search_jobs_foundit | $0.0625 | 25 results or part of 25 | Foundit Jobs |
search_jobs_shine | search_jobs_shine | $0.0625 | 25 results or part of 25 | Shine.com Jobs Scraper |
search_jobs_hirist | search_jobs_hirist | $0.125 | 25 results or part of 25 | Hirist Jobs Scraper |
search_internshala | search_internshala | $0.05 | 25 results or part of 25 | Internshala Scraper |
search_jobs_apna | search_jobs_apna | $0.0625 | 25 results or part of 25 | Apna Jobs Scraper |
search_jobs_cutshort | search_jobs_cutshort | $0.045 | 25 results or part of 25 | CutShort Jobs Scraper |
search_jobs_instahyre | search_jobs_instahyre | $0.05 | 25 results or part of 25 | Instahyre Jobs Scraper |
find_candidates | find_candidates | $0.1875 | 25 people or part of 25 | LinkedIn Employees Scraper |
enrich_profile | enrich_profile | $0.175 | 25 profiles or part of 25 (a call takes at most 25) | LinkedIn Profile Scraper |
company_snapshot | company_snapshot | $0.02 | call with a usable answer | LinkedIn Company Scraper and AmbitionBox |
search_all_india_jobs | search_all_india_jobs | $0.364 | call where all 6 boards answer | the six board actors above |
partial_all_india_jobs | $0.208 | call where 3 to 5 boards answer | ||
all_india_jobs_section | $0.052 | each board that answers, when only 1 or 2 do | ||
hiring_signals_india | hiring_signals_india | $0.475 | call where 6 or 7 of the 7 sections answer | the six board actors plus the employer snapshot |
partial_hiring_signals_india | $0.2903 | call where 4 or 5 sections answer | ||
hiring_signal_india_section | $0.066 | each section that answers, when only 1 to 3 do |
Per 1,000 results, the single-board tools work out to $1.40 (Naukri), $4.80 (Indeed India), $2.50 (Foundit, Shine, Apna), $5.00 (Hirist), $2.00 (Internshala, Instahyre) and $1.80 (CutShort), when every call returns a full block of 25.
What a call costs in total: the tool price, nothing more. Each tool works by starting the matching Mine Works actor (the last column), and that run starts on our Apify account, not yours. It does not appear in your Console and Apify does not bill you for it. A search_jobs_naukri call that returns 25 jobs costs $0.035; a search_all_india_jobs call where all six boards answer costs $0.364. Every billed answer states its own cost in billed.total_usd.
Never charged: a call that finds nothing, a call that fails or times out, a call refused by the rate limit, the underlying actors' summary rows, an identical call repeated within 60 seconds of a billed one, and the underlying actor runs themselves. Cached answers (Indeed India, CutShort and enrich_profile, kept for 24 hours) are billed like fresh ones but start no new actor run.
There is no scheduled price change. The Pricing tab on this page always shows the current prices, and each tool's description, the text your agent reads, is built from the same live pricing. If either ever differs from this table, they are right.
FAQ
What is an MCP server, and why use one for job data? MCP (Model Context Protocol) is the standard way AI assistants such as Claude call outside tools. Instead of learning nine job board scrapers and their inputs, your assistant connects once and picks the right tool from a plain request like "is Swiggy hiring in Pune?".
Which job boards does it cover? Naukri, Indeed India (indeed.co.in), Foundit (formerly Monster India), Shine.com, Hirist, Internshala, Apna, CutShort and Instahyre. LinkedIn is used for candidate sourcing and company profiles, and AmbitionBox for employer ratings.
How many results can one call return?
Up to 200 on each single-board tool (25 by default), up to 50 per board on the two multi-board tools (15 by default), and up to 25 profiles per enrich_profile call.
How fresh is the data?
Every call reads the boards live when you ask, except the 24 hour cache on the Indeed India, CutShort and enrich_profile tools, where an identical request within a day gets the stored answer.
How long does a call take? Each call starts an actor run on our account, so expect seconds to tens of seconds, not milliseconds. In our local tests a 25 job Naukri call took 21 to 35 seconds, most of it Naukri's session warm-up, and a Foundit call about 2 seconds. Tools stop at 120 seconds (240 for the multi-board tools, 180 for Apna) and return a clear reason instead of hanging.
Will the job board actors show up in my Apify account or on my bill? No. Each tool starts its job board actor on our Apify account. Your account shows the India Jobs MCP run and its tool charges, and nothing else.
Do I need accounts, cookies or API keys for the job boards? No. One Apify account and its API token cover all 14 tools. No board logins and no LinkedIn cookies.
Why can't I search Apna, CutShort or Instahyre by keyword?
Their own sites do not offer a real keyword search, which we checked against each live site. Their tools browse by category, function or city instead, and they are left out of search_all_india_jobs so they cannot fill it with unrelated jobs.
What happens when a board is down or finds nothing?
That tool answers with found: false and a reason, and nothing is billed. In the multi-board tools the other boards still answer, and the price drops to match how many did.
Can I call it without an MCP client?
Yes. Send JSON-RPC 2.0 requests (tools/list, then tools/call) as HTTP POSTs to https://themineworks--india-jobs-mcp.apify.actor/mcp with your token as a Bearer header and Accept: application/json, text/event-stream. Replies arrive as server-sent events. Any language with an HTTP client works.
Can I run it on a schedule?
The server answers when called, so schedule the caller: a cron job, an n8n or Make scenario, or an agent that calls hiring_signals_india or search_jobs_naukri every morning. For a plain daily job feed without an agent, the individual actors (such as Naukri Jobs Scraper with its new-job monitor) can be scheduled directly in Apify.
How do I export the results? The answer is JSON returned to your client. To keep it, have your agent write it to a sheet or file, or run the underlying actor directly and export its dataset as CSV, Excel or JSON.
Is it legal to use this data? The tools read public job listings and public profile and company pages, with no login. Candidate tools return data about people, which is personal data under laws such as India's DPDP Act, GDPR and CCPA. You are responsible for how you use it and for each site's terms. This is general information, not legal advice.
Integrations
- Claude Code, Claude Desktop, Cursor and other MCP clients: connect with the snippets in "Try it in one minute".
- Your own agent or backend: JSON-RPC over HTTPS to the server address, as in the FAQ.
- Make, Zapier and n8n: call the server with an HTTP module, or use the Apify app to run the underlying actors on a schedule and send the rows to Google Sheets, Slack or your ATS.
- Webhooks and the Apify API: available on every underlying actor for scheduled, non-agent pipelines.
More from The Mine Works
Jobs and hiring
- Foundit Monster India Jobs
- Hirist Jobs Scraper
- Naukri Jobs Scraper
- Shine.com Jobs Scraper
- Internshala Scraper
- Instahyre Jobs Scraper
- Indeed Jobs Scraper
- CutShort Jobs Scraper
- Apna Jobs Scraper
- LinkedIn Jobs Scraper
- Recruiting & Jobs MCP
- Career Site Jobs Scraper
Social media and video
Leads and business directories
Marketing, SEO and reviews
Real estate
Science, health and government data
E-commerce and marketplaces
Company and business data
Food and local services
Developer and AI tools
More tools
Support
Found a bug or a tool that returns less than it should? Open an issue on the Issues tab of this page. To ask for another Indian job board or data source, email dmineworks@gmail.com. A guide for this server also lives at themineworks.com.
India Jobs MCP gives your AI assistant nine Indian job boards, LinkedIn sourcing and employer snapshots through one connection, billed only when a tool returns something.
Actor input Schema
readme (type: string):
This Actor serves India job postings (9 boards, job-seeker side) and recruiter tools (candidate sourcing, employer snapshots) to AI agents over the Model Context Protocol.
Connect your MCP client to: https://themineworks--india-jobs-mcp.apify.actor/mcp
with your Apify API token as a Bearer token. Works in Claude Desktop, Claude Code, Cursor and Windsurf. Copy-paste config blocks are in the README.
Starting a normal run here does nothing except print this pointer.
Actor input object example
{
"readme": "Connect your MCP client to https://themineworks--india-jobs-mcp.apify.actor/mcp. See the README."
}
Actor output Schema
mcpEndpoint (type: string):
Streamable HTTP MCP endpoint for this run. Works in Claude Desktop, Claude Code, Cursor and Windsurf; copy-paste config is in the README.
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
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 = {};
// Run the Actor and wait for it to finish
const run = await client.actor("themineworks/india-jobs-mcp").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
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 = {}
# Run the Actor and wait for it to finish
run = client.actor("themineworks/india-jobs-mcp").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
echo '{}' |
apify call themineworks/india-jobs-mcp --silent --output-dataset
MCP server setup
{
"mcpServers": {
"apify": {
"type": "http",
"url": "https://mcp.apify.com/?tools=fetch-actor-details,themineworks/india-jobs-mcp"
}
}
}
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/8e9SMJ7r9mCU6QG5i/builds/tipNex0ohNCoKblUY/openapi.json

