naukri-job-hunter
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@naukri-job-hunterfind new remote jobs matching my resume and show top matches"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Naukri Job Hunter
Find remote jobs and side gigs (part-time, freelance, contract) on naukri.com, score every job against your resume, get a ranked HTML report, and optionally auto-apply. Works as a one-command script or as an AI agent (MCP server for Cursor, Claude Desktop and other MCP clients).
One command:
./run.sh; a first-run wizard sets everything upResume-based match score (0-100) with matched skills per job
Two hunts: regular remote jobs, and side gigs you can do alongside a job
Only shows new jobs each run; HTML + CSV reports
Choose how to apply: auto-apply, pick jobs from a numbered list, or get a contact list (recruiter emails, phones, company links, prefilled email drafts) to send your resume yourself
Auto-apply has a dry run, confirmation and daily caps
Your resume, login and results stay on your machine
Quick start
git clone https://github.com/psflwork/naukri-job-hunter.git
cd naukri-job-hunter
./run.shThe first run:
creates a Python environment and installs dependencies,
asks for your resume PDF (drag the file into the terminal), years of experience and the roles you want,
asks for your Naukri email/password (optional; saved only locally in
.env), thenopens Chrome, searches Naukri, scores the jobs and opens the report, then shows a menu:
What next?
[a] Auto-apply to 4 eligible jobs (of top 10)
[p] Pick jobs to apply to
[c] Contact list: emails / phones / links to send your resume manually
[o] Open top 10 jobs in your browser
[q] QuitAfter that, just run ./run.sh (regular jobs) or ./run.sh side (side gigs) whenever you want.
Requirements: Python 3.10+ and Google Chrome. macOS and Linux work out of the box; on Windows use WSL or Git Bash.
Run it as
./run.shfrom the project folder (with the./). It uses its own Python in.venv, so you never need to activate anything.
Related MCP server: remoote-mcp
Usage
./run.sh # regular hunt: search, report, then the menu above
./run.sh side # side-gig hunt (part-time / freelance / contract)
./run.sh --no-apply # search + report only
./run.sh --apply # auto-apply without the menu (for scheduled runs)
./run.sh --all # include jobs already seen in earlier runs
./run.sh --limit 10 # only the 10 best matches this run (default: max_results in config)
./run.sh --top 20 # consider the top 20 matches in the menu
./run.sh setup # re-run the setup wizardShortcuts
Work on the latest search results; put side first for the gig hunt (./run.sh side pick).
Shortcut | What it does |
| Numbered list of matches; type |
| Contact list for sending your resume yourself: recruiter emails and phones published in the job posts, company website/address, Draft email button (prefilled subject + message), and LinkedIn-recruiter / careers-page links |
| Open the top 10 matches in your browser |
| Dry run: what would be auto-applied ( |
| Search + report only |
| Log in and save the session |
The contact list only shows emails/phones that recruiters actually published (Naukri hides recruiter
details otherwise); it never guesses addresses. Edit the email template under outreach in your
config.
Search every morning at 9:00 without applying (crontab -e):
0 9 * * * cd /path/to/naukri-job-hunter && ./run.sh --no-apply --no-open >> output/cron.log 2>&1How it works
flowchart LR
You([You]) -->|"chat: find remote jobs"| Agent[AI agent<br/>Cursor / Claude]
You -->|./run.sh| CLI[run.sh → hunt.py]
Agent -->|MCP tools| MCP[mcp_server.py]
MCP --> Core
CLI --> Core
subgraph Core[Core]
Search[run_search] --> Matcher[matcher.py<br/>score 0-100]
Naukri[naukri.py<br/>Playwright + Chrome]
end
Search --> Naukri
Naukri -->|visible Chrome window| Site[(naukri.com<br/>jobapi/v3/search<br/>jobapi/v4/job)]
Resume[/your resume PDF/] --> Matcher
Config[/config.yaml/] --> Search
Env[/.env credentials/] --> Naukri
Matcher --> Out[output/*.html + *.csv]
Matcher --> State[(data/<br/>seen, applied,<br/>latest results,<br/>browser session)]Search: for each query in the config, a real Chrome window opens Naukri's search page with the Remote, experience and posted-in-last-N-days filters. The script reads the JSON the page itself loads, so it doesn't depend on the page's HTML layout.
Filter: drops excluded titles/companies, jobs already applied to, and jobs seen in earlier runs.
Score: each job gets 0-100 against your resume:
Part
Points
Based on
Skills
50
skillsfrom config found in the job, plus job tags found in your resumeTitle
25
strong_titles/target_titlesin the job titleExperience
15
your years inside the job's min-max range
Remote
10
location says Remote
Report: jobs at or above
min_scorego tooutput/jobs_<timestamp>.htmland.csv.Apply (optional): clicks Naukri's own Apply button. Company-site jobs and jobs with recruiter questionnaires are left for you to apply manually.
Two hunts: regular jobs and side gigs
Hunt | Command | Config | Looks for |
Regular |
|
| Full-time remote roles matching your queries |
Side gigs |
|
| Remote part-time, freelance, contract or second-job work for developer / full-stack / architect roles; salary ignored |
Each hunt keeps its own "already seen" history and report (output/side_jobs_*.html); applied jobs
are shared, so you never apply twice. Add more hunts by creating config.<name>.yaml and running
./run.sh <name>.
Naukri has no part-time filter, so the side hunt works differently:
flowchart LR
Q["Gig keywords<br/>freelance, part time,<br/>contract developer..."] --> S[Naukri search<br/>remote, last 30 days]
S --> G{Gig signal?<br/>part-time, freelance,<br/>6 months contract,<br/>secondary income...}
G -- no --> X[dropped]
G -- yes --> F{Tech role and<br/>not junior?}
F -- no --> X
F -- yes --> Sc["Score<br/>skills 45, gig 20,<br/>title 15, exp 10, remote 10"]
Sc --> R[side_jobs report<br/>with Gig signals column]Gig signal required: phrases like part-time, freelance, contractual, 6 months contract, secondary income, hourly in the job. A bare contract/weekend/consultant only counts in the title, and noise such as contract testing or smart contracts is ignored.
Filters: drops non-tech titles (teacher, sales, accountant, ...), jobs with none of your skills, and junior gigs (experience range below 5 years).
AI agent (MCP)
mcp_server.py exposes the hunter as MCP tools, so an AI assistant can search, read job details,
shortlist with reasons, write a tailored pitch, and apply only to the jobs you approve.
Cursor: the server and an agent rule (.cursor/rules/naukri-job-hunter.mdc) are already set up
in this repo. Open the folder in Cursor, enable naukri-job-hunter under Settings → MCP, then
ask e.g. "Find remote senior developer jobs from the last 3 days and shortlist the best 5" or
"Find part-time or freelance gigs I can do alongside my job."
Claude Desktop / other MCP clients: run ./run.sh setup once, then add:
{
"mcpServers": {
"naukri-job-hunter": {
"command": "/path/to/naukri-job-hunter/.venv/bin/python",
"args": ["/path/to/naukri-job-hunter/mcp_server.py"]
}
}
}sequenceDiagram
actor You
participant A as AI agent
participant M as MCP server
participant N as naukri.com
You->>A: "Find remote engineering jobs"
A->>M: get_candidate_profile
M-->>A: resume text + preferences
A->>M: search_jobs
M->>N: search pages (logs in from .env if needed)
N-->>M: job JSON
M-->>A: ranked matches + report path
loop top 5-8 jobs
A->>M: get_job_details(job_id)
M->>N: job page
M-->>A: full JD, skills, applicants
end
A-->>You: shortlist with fit + tailored pitch
You->>A: "Apply to #1 and #3"
A->>M: apply_to_job(job_id, confirm=true)
M->>N: click Apply
M-->>A: applied / needs_manual
A-->>You: resultsTool | Purpose |
| Resume text and preferences of a hunt profile |
| Search, score and rank ( |
| Filter a profile's latest results without re-searching |
| Full description, key skills, role, industry, applicants, company |
| Check or refresh the Naukri session |
| Preview by default; applies only with |
| Recruiter emails/phones, company links and email drafts for manual outreach |
| Jobs already applied to |
Configuration
./run.sh setup creates config.yaml and config.side.yaml from examples/ and fills
in your resume, experience and roles. Edit them any time to tune results:
Key | Meaning |
| Heading shown in the report |
| Your resume PDF (empty = first PDF in the folder) |
| Search keywords, each searched separately |
| Your experience; used for scoring |
| Naukri experience filter (defaults to |
| Search filters and depth |
| Random pause between page loads |
| Title words worth full / partial title points |
| Jobs to drop |
| Your core skills; drive the skill score |
| Drop jobs matching fewer of your skills |
| Drop junior jobs (experience range tops out below this) |
| Gig-signal detection (side hunt) |
| Keep only jobs with a gig signal |
| Score weights: |
| Minimum score to appear in results |
| Max jobs per run (best first); the rest aren't marked seen and show up later |
| Caps for CLI and agent auto-apply |
| Leave jobs with recruiter questions to you |
| Email template for the contact list's "Draft email" links |
Privacy
Everything runs locally. These files are git-ignored and never leave your machine: your resume
(*.pdf), Naukri login (.env, readable only by you), your configs, the saved browser session
and job history (data/), and reports (output/).
Troubleshooting
Problem | Fix |
| Run it as |
|
|
| Not needed; |
Searches return 0 jobs / "Access Denied" | Keep |
Login asks for OTP/captcha | Complete it in the Chrome window; the session is then saved |
Too many irrelevant jobs | Raise |
Project layout
Path | Contents |
| One-command entry point: environment, setup wizard, then |
| CLI, search pipeline, reports |
| First-run setup (configs, resume, experience, roles, login) |
| Browser automation: search, job details, login, apply |
| Resume parsing, gig-signal detection and scoring |
| Contact list: emails/phones from job posts, company links, email drafts |
| MCP server for AI agents |
| Config templates for the regular and side-gig hunts |
| Cursor MCP registration and agent rule |
Disclaimer
This is an unofficial personal-productivity tool, not affiliated with Naukri.com / Info Edge. Naukri's terms don't allow automated use; searching with polite delays is low risk, but heavy auto-applying can get an account flagged. Keep the caps low, review jobs before applying, and use it at your own risk.
License
This server cannot be deployed
Maintenance
Related MCP Connectors
Search AI-native jobs, inspect application forms, and fetch free interview-prep resources.
Auto-apply to jobs: matches your CV, tailors a fresh CV per posting, and applies for you.
Manage job applications — jobs, companies, boards, notes, and profile — from your AI client.
- mcpOAuthcom.qarera
Search jobs, manage resumes, and track applications on Qarera from your AI chat client.
Related MCP Servers
- AlicenseAqualityAmaintenanceAI job search and job application tracker. Search live jobs by title, location, salary, date posted, and remote or on-site, and see each one checked on real data: pay against market rates, ghost-job signals, visa sponsorship history, and how well it matches your resume. Check how hiring software reads your resume, track applications, set follow-up reminders, and get email alerts.121529 npmISC
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to search and explore remote job listings, salary stats, and popular roles, and supports token-authenticated actions like job alerts and apply redirects.MIT
- FlicenseNot gradedqualityBmaintenanceEnables automated scraping of Naukri.com job listings, extracting structured data such as job titles, companies, salaries, locations, skills, and descriptions for use in AI-driven workflows.-
- FlicenseNot gradedqualityBmaintenanceEnables automating job search and applications on Naukri.com, including bulk applying, profile management, application tracking, company research, and recruiter activity monitoring.-