< Back to Blog

LinkedIn Meets Python: How to Automate Job Applications with a Python Bot

A walkthrough of setting up an open-source Python bot that automates LinkedIn Easy Apply job applications - from installation to configuration to execution.

This post is adapted from my YouTube video: LinkedIn Meets Python

If you've ever spent hours scrolling through LinkedIn, clicking Easy Apply, and filling out the same fields over and over, you already know that job searching feels like a job in itself. A remote position posted an hour ago with Easy Apply already has hundreds of applications - the speed game is real.

So I went looking for a better approach and found an open-source Python tool on GitHub that automates the LinkedIn Easy Apply process. Here's how it works, how to set it up, and what to know before you decide to use it.

What This Tool Does

The Auto Job Applier LinkedIn is a Python bot that programmatically navigates LinkedIn, searches for jobs matching your criteria, fills in application forms with your pre-configured details, and submits Easy Apply applications - all while you focus on other things.

It's not a headless bot operating invisibly. It opens a real Chrome browser window, and you can watch it work. It includes a pause-before-submit option so you can review each application before it goes out, and it pauses on failed questions so you can intervene manually. This makes it more of an automation assistant than a fire-and-forget bot.

Prerequisites

Before getting started, you'll need Python 3 or above installed on your machine, along with three Python packages: undetected-chromedriver, pyautogui, and setuptools. You'll also need Google Chrome and the corresponding ChromeDriver installed.

Install each package via terminal:

pip install undetected-chromedriver
pip install pyautogui
pip install setuptools

Then clone or download the GitHub repository and open the project in VS Code or your preferred code editor.

Configuration Walkthrough

The entire bot configuration lives in Python (.py) files within the config folder. Python's syntax makes this approachable even if you're not a developer - anything after a # symbol is a comment (instructions, not executable code), and all your inputs go inside quotation marks.

Personal Details

The first file covers your personal information: name, contact details, website, LinkedIn profile URL, and similar fields. Fill in everything relevant to your applications. For fields that don't apply to you, leave the quotation marks empty.

Application Questions

The questions file maps to common LinkedIn application fields - work authorization, notice period, years of experience, salary expectations, and similar prompts. Pre-filling these means the bot can auto-complete most application forms without pausing.

You can add custom fields here too. If certain questions appear frequently in your target roles, add them to the configuration so the bot handles them automatically.

I recommend writing a generic cover letter for the cover letter field, but for roles you're seriously interested in, always write a custom one. For a more sophisticated approach, check out my automated job search pipeline that uses AI to generate tailored cover letters for each application.

Search Parameters

This is where you define what the bot searches for. You set your search queries (e.g., "digital marketing," "marketing director," "director of digital media"), your location, and how many applications to submit per query before moving to the next one.

I set mine to 30 applications per search term, which provides good coverage without over-saturating any single keyword. After completing all queries, the bot can cycle back or stop - your choice.

Additional filters include sorting by most recent (always recommended), date posted (I suggest within the past week, or even past 24 hours given competition levels), salary range, job type (full-time, part-time, contract), and work location preference (remote, hybrid, on-site).

Credentials and Resume

The secrets file stores your LinkedIn login credentials. There's also an option to integrate OpenAI to have the bot reference your resume and tailor responses per application, though I prefer keeping my standard resume consistent across automated applications.

In the settings file, make sure your directory paths correctly point to your resume file and any output logs for tracking applied and failed applications.

Running the Bot

With everything configured, click the Run Python button in VS Code. The bot will open Chrome, navigate to LinkedIn, and prompt you to confirm your login (you'll need to manually approve the authentication once).

After that, it's hands-free. The bot searches your configured queries, scrolls through listings, opens Easy Apply applications, fills in your pre-set answers, and either submits automatically or pauses for your review - depending on your settings.

Staying Under the Radar

A few built-in features help keep the automation from looking like automation. The bot includes randomized delays between actions, a configurable timeout that prevents it from running too long in a single session, and the pause-before-submit option that adds a human-in-the-loop element.

I also recommend running it during normal browsing hours and keeping session lengths reasonable. The goal is augmented efficiency, not reckless volume.

Mac-Specific Troubleshooting

If you're on macOS and hit an SSL certificate error during installation, you'll need to update your SSL certificate:

pip install --upgrade certifi

Then open Spotlight (Cmd + Space) and run the "Install Certificates" command that comes with your Python installation. This resolved the only installation issue I encountered.

The Ethics Question

Is automating LinkedIn applications ethical? The honest answer is that it's ambiguous. LinkedIn is already heavily botted - you're competing against automation whether you use it or not. This tool still requires your real credentials, your real resume, and your genuine interest in the roles. The pause-before-submit option means you're still making the final decision on every application.

Think of it less as gaming the system and more as leveling the playing field. You're still the one showing up to the interview. The bot just saves you from the repetitive clicking that adds no value to the process.

That said, if you want a more comprehensive approach that includes AI-driven scoring and personalized outreach, I built a full automated job search pipeline that takes this concept significantly further.

Key Takeaways

Automation is a tool, not a replacement. The bot handles the mechanical parts of applying. Strategy, interview preparation, and genuine engagement are still on you.

Configuration quality determines output quality. The 20 minutes you spend dialing in your search parameters and pre-filling answers pays for itself across hundreds of applications.

Filter aggressively. Don't cast too wide a net. Targeting recent postings in your specific niche produces better results than blasting every listing in sight.

Combine with manual effort. Use the bot for volume coverage and apply manually to your top-priority roles with custom cover letters and tailored messaging.


Edward Chalupa is a digital marketing specialist and founder of Whtnxt, a digital marketing and automation consultancy. Connect with him on LinkedIn or explore more at echalupa.com.