Automate LinkedIn Easy Apply job applications using Claude Code + Chrome DevTools MCP.
Works for any role - just update config.json with your profile and target keywords.
- Download from https://claude.ai/code
- Install and run it once to create config files
- Close Claude Code
Download from https://nodejs.org (LTS version)
Verify installation:
node --version # Should show v18+
npm --version # Should show 9+This connects Claude Code to a Chrome browser it can control.
Find your Claude config file:
- Mac:
~/.claude.json - Windows:
C:\Users\YourUsername\.claude.json
Open the file and add/merge this configuration:
Mac/Linux:
{
"mcpServers": {
"chrome-devtools": {
"type": "stdio",
"command": "npx",
"args": [
"chrome-devtools-mcp@latest",
"--userDataDir=/Users/yourusername/.chrome-debug-linkedin"
]
}
}
}IMPORTANT: Replace yourusername with your actual Mac username (run whoami in terminal to check).
Windows version:
{
"mcpServers": {
"chrome-devtools": {
"type": "stdio",
"command": "npx",
"args": [
"chrome-devtools-mcp@latest",
"--userDataDir=C:\\Users\\YourUsername\\.chrome-debug-linkedin"
]
}
}
}git clone https://github.com/dorddis/linkedin-easy-apply-automation.git
cd linkedin-easy-apply-automationEdit config.json with your details:
{
"profile": {
"name": "Jane Smith",
"email": "jane.smith@email.com",
"phone": "+1-555-123-4567",
"linkedin": "https://linkedin.com/in/janesmith",
"portfolio": "https://janesmith.com"
},
"job_search": {
"role": "Financial Analyst",
"keywords": ["Financial Analyst", "FP&A Analyst", "Finance Analyst"],
"location": "United States",
"remote_only": true
},
"salary": {
"current": "75000",
"expected": "90000",
"currency": "USD",
"notice_period": "2 weeks"
},
"years_of_experience": "3-5",
"skills": {
"Excel": 4,
"Financial Modeling": 3,
"SQL": 3,
"Power BI": 3
},
"daily_target": 20
}Edit data/EXPERIENCE_ANSWERS.md with YOUR actual experience. The automator uses these for text questions like "Describe your experience with..."
Replace all [CUSTOMIZE] sections with your real answers.
-
Open Claude Code in the project folder:
cd linkedin-easy-apply-automation claude -
Ask Claude:
Navigate to linkedin.com -
A Chrome window opens - log in to LinkedIn manually
-
Your session is now saved (won't need to login again)
Just type:
/apply
Or say:
Apply to jobs
/apply command
|
v
[1. FETCH JOBS]
- Searches LinkedIn with your keywords
- Finds 10-15 fresh Easy Apply jobs
- Uses progressive time filter (1h -> 2h -> 4h -> 24h)
|
v
[2. EVALUATE JOBS]
- Scores each job (freshness, applicant count, company size)
- Skips staffing agencies and senior roles
- Ranks by fit score
|
v
[3. APPLY SEQUENTIALLY]
- Opens each job
- Fills form using config.json
- Answers questions from EXPERIENCE_ANSWERS.md
- Submits application
- Waits 3-5 min (random delay)
|
v
[4. TRACK]
- Logs to tracking.csv
- Reports progress every 5 applications
| Command | What it does |
|---|---|
/apply |
Full workflow: fetch -> evaluate -> apply |
Find jobs |
Just fetch and show jobs (no applying) |
Apply to [URL] |
Apply to a specific job URL |
config.json # Your profile, skills, salary, keywords
data/EXPERIENCE_ANSWERS.md # Your answers to common questions
tracking.csv # Log of all applications
.claude/agents/ # Automation agents (don't edit)
.claude/commands/apply.md # The /apply command definition
docs/ # Additional documentation
| Limit | Recommendation |
|---|---|
| Daily applications | 20 (safe), 50 max |
| Delay between apps | 3-5 minutes (automatic) |
| If rate limited | Stop immediately, wait 30-60 min |
Warning signs to stop:
- "We limit how often you can apply" message
- HTTP 429 errors
- Account warnings
-
Edit
config.json:- Update
job_search.roleandkeywords - Update
skillssection with relevant skills - Adjust
salaryexpectations
- Update
-
Edit
data/EXPERIENCE_ANSWERS.md:- Rewrite answers for your new target role
- Add role-specific Q&A
{
"job_search": {
"role": "Software Engineer",
"keywords": ["Software Engineer", "Backend Engineer", "Full Stack Developer"],
"location": "United States"
},
"skills": {
"Python": 4,
"JavaScript": 3,
"React": 3,
"Node.js": 3,
"SQL": 3,
"AWS": 2
}
}- Check
~/.claude.jsonsyntax (no trailing commas) - Verify the userDataDir path is correct for your system
- Test manually in terminal:
npx chrome-devtools-mcp@latest --help
- Check your username:
whoami
- Ask Claude:
Navigate to linkedin.com - Log in manually in the browser
- Try again
- Check
config.jsonhas correct field names - Update
data/EXPERIENCE_ANSWERS.mdwith more specific answers - Watch the browser to see what's happening
- Stop all automation immediately
- Wait 30-60 minutes
- Reduce
daily_targetin config.json - Resume with fewer applications
- Clear npm cache:
npm cache clean --force - Reinstall:
npx chrome-devtools-mcp@latest --version - Restart Claude Code
MIT - Use at your own risk.
This tool automates legitimate job applications. Users are responsible for:
- Following LinkedIn's Terms of Service
- Providing accurate information in applications
- Not exceeding reasonable application volumes
- Reviewing applications before they're submitted