Skip to content

louisecch/linkedin-bot-playwright

Repository files navigation

LinkedIn Easy Apply Bot

Automated bot that applies to LinkedIn jobs using Easy Apply.

Demo

bot.mp4

Quick Start

# 1. Install dependencies
pip install playwright python-dotenv pyyaml python-telegram-bot
playwright install chromium

# 2. Configure
cp .env.example .env
# Edit .env with your LinkedIn credentials
# Optional: Add Telegram credentials for notifications (see TELEGRAM_SETUP.md)

# 3. Run
python3 run.py

πŸ‘ Telegram Notifications (Optional)

Get instant notifications when you apply to jobs!

See TELEGRAM_SETUP.md for setup instructions.

You'll receive:

  • Real-time notifications for each application
  • Company name and job title
  • Summary at the end

Project Structure (SIMPLE!)

_linkedin-bot/
β”œβ”€β”€ run.py                 ← RUN THIS FILE
β”œβ”€β”€ bot.py                 ← Main bot logic
β”œβ”€β”€ config_classes.py      ← Configuration classes
β”œβ”€β”€ linkedin_selectors.py  ← CSS selectors
β”œβ”€β”€ config.yaml            ← Your job search settings
└── .env                   ← Your LinkedIn credentials

Files Explained

File What It Does
run.py ← Start here! Entry point to run the bot
bot.py Main bot implementation (don't run directly)
config_classes.py Configuration data structures
linkedin_selectors.py CSS selector constants
config.yaml Job search settings (edit this!)
.env LinkedIn login (edit this!)

How to Use

  1. Edit config.yaml:

    search:
      job_title: "Python Developer"
      location: "London"
      date_posted: "Past 24 hours"
      max_applications: 10
      exclude_keywords:
        - "senior"
        - "lead"
        - "principal"
    
    answers:
      salary_expectations: "50k"
      sponsorship: "No"
      # ... etc
  2. Edit .env:

    [email protected]
    LINKEDIN_PASSWORD=your_password
    
  3. Run:

    python3 run.py

What It Does

  1. Opens LinkedIn Jobs
  2. Searches for jobs matching your criteria
  3. Applies filters (Easy Apply, date posted)
  4. Finds all job cards in the left column
  5. Iterates through each job card (1 β†’ 2 β†’ 3...)
  6. For each job:
    • Extracts company and job title
    • Skips if job title contains excluded keywords
    • Clicks the job card to select it
    • Clicks Easy Apply
    • Fills out the form
    • Submits
    • Sends Telegram notification (if configured)
    • Moves to next job

Recent Fix (Feb 10, 2026)

Fixed job iteration - Bot now properly cycles through different jobs instead of clicking the same job repeatedly

Before: Kept clicking job #1 ten times
After: Clicks job #1, #2, #3... up to max_applications

Troubleshooting

Q: Which file do I run?
A: python3 run.py - That's it!

Q: Bot keeps clicking the same job?
A: This is now fixed! Update to latest code.

Q: Import error about 'selectors'?
A: Fixed! We renamed the file to avoid conflicts.

That's It!

Just run: python3 run.py

About

A headless, more humanized Luckykoi. 🐟

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages