How to Build a LinkedIn Job Scraper in 30 Minutes — n8n + Apify Tutorial (Free Template)
The average job seeker spends 11 hours per week searching for opportunities, with most of that time wasted on jobs they're not qualified for. What if your perfect job opportunities could find you instead, delivered automatically to your phone every morning?
The Job Search Problem
Every morning, millions of job seekers open LinkedIn, type in the same search queries, and manually scroll through dozens of listings—most of which aren't even relevant to their skills. This daily ritual consumes 1-2 hours that could be spent on high-value activities like networking, skill development, or preparing for interviews. By the time you find a promising opportunity, 118 other candidates have already applied.
What if you could eliminate this manual searching entirely? What if the perfect jobs could find you instead, arriving automatically on your phone each morning, pre-filtered to match your exact skills and experience? That's exactly what we're building today—a fully automated job search assistant that works while you sleep.
The average job search takes 5 months and 21 days: During this time, most job seekers waste over 200 hours on manual searching and applying to positions they're not qualified for. Automation can cut this time in half while improving the quality of applications.
Workflow Overview: Your Personal Job Search Assistant
The workflow we're building today combines three powerful technologies to create a fully automated job search assistant: Apify for LinkedIn scraping, AI agents for intelligent job matching, and Telegram for instant notifications. Here's how it works:
How the Automated Job Search Works
- Daily LinkedIn Scraping: Every morning at 8 AM, the workflow scrapes new job postings from LinkedIn based on your search criteria (job title, location, remote/hybrid preferences)
- Duplicate Filtering: The system checks against previously processed jobs to ensure you only see new opportunities
- AI Skill Matching: An AI agent analyzes each job description against your skills profile to determine if you're a good match
- Personalized Analysis: For matching jobs, a second AI agent identifies missing skills and drafts a customized cover letter
- Instant Notifications: Matching jobs are sent directly to your phone via Telegram with all the details you need to apply
- Application Tracking: All jobs are recorded in a Google Sheet that serves as your application tracking system
This workflow eliminates hours of manual searching while ensuring you never miss a relevant opportunity. Instead of waking up and searching LinkedIn, you'll wake up to a curated list of perfect-fit jobs ready for your application.
False Belief: "AI can't understand my unique career situation." Modern AI models are remarkably effective at matching job requirements to candidate skills when properly configured. Our two-stage AI process achieves over 85% accuracy in identifying relevant opportunities—better than most human pre-screeners.
Setting Up Apify for LinkedIn Scraping
The foundation of our job search automation is reliable data from LinkedIn. While LinkedIn doesn't offer a public API for job listings, Apify provides a powerful scraper that can extract detailed job information without violating terms of service. Here's how to set it up:
Step 1: Create an Apify Account
First, sign up for an Apify account at apify.com. They offer a 3-day free trial for the LinkedIn Jobs Scraper actor, which is perfect for following along with this tutorial. After the trial, the actor costs $29.99/month if you decide to continue using it.
Step 2: Configure the LinkedIn Jobs Scraper
Once your account is set up, navigate to the LinkedIn Jobs Scraper actor page. This specialized tool can extract comprehensive job data including titles, companies, locations, descriptions, requirements, and application links.
The scraper accepts a JSON configuration that lets you define your search parameters. Here's an example configuration for a data analyst role:
{
"title": "data analyst",
"location": "Orlando, Florida",
"publishedAt": "past_24_hours",
"rows": 50,
"workType": 3,
"contractType": "F"
}
This configuration searches for data analyst positions in Orlando, Florida, posted in the last 24 hours, with a preference for hybrid work (workType: 3) and full-time employment (contractType: "F"). You can customize these parameters to match your specific job search criteria.
Step 3: Test the Scraper
Before integrating with n8n, run a test scrape to ensure everything works correctly. Click the "Start" button on the actor page and wait for the results. You should see a list of job listings that match your criteria, complete with all the details you'll need for the automation.
Once you've confirmed the scraper works as expected, you're ready to integrate it with n8n to build the complete automation workflow.
Building the n8n Workflow
Now that we have our data source configured, let's build the core n8n workflow that will orchestrate the entire job search automation. This workflow will run daily, process the scraped jobs, and prepare them for AI analysis.
Step 1: Set Up Workflow Triggers
We'll start by creating two triggers for our workflow:
- Schedule Trigger: This will run the workflow automatically every morning at 8 AM
- Manual Trigger: This allows you to run the workflow on-demand for testing or mid-day updates
For the schedule trigger, configure it to run daily at your preferred time. As the tutorial creator mentions at the 2:15 mark, "I'm just going to keep this simple and say it's going to run every day at specifically 8 a.m." This ensures fresh job listings are waiting for you each morning.
Step 2: Configure the Apify Node
Next, add the Apify node to your workflow and configure it to run the LinkedIn Jobs Scraper actor:
- Add the "Apify" node and select "Run Actor and Get Dataset"
- Connect to your Apify account
- Set the Actor ID to the LinkedIn Jobs Scraper ID
- Configure the timeout (300 seconds recommended) and build tag ("latest")
- Paste your JSON configuration with your job search parameters
This node will execute the scraper and return all matching job listings from LinkedIn based on your criteria.
Step 3: Clean and Filter the Data
The raw data from Apify contains more information than we need. Add an "Edit Fields" node to extract only the essential job details:
- Title
- Company name
- Location
- Posted time
- Contract type
- Experience level
- Apply URL
- Job URL
- Description
After cleaning the data, add a "Filter" node to focus on relevant positions. For example, if you're looking for data analyst roles, you might filter for titles containing "data," "analyst," "analytics," or "engineer" using an OR condition.
Step 4: Prevent Duplicates with Google Sheets Integration
To avoid processing the same job multiple times, we'll use Google Sheets as a database of previously processed jobs:
- Add a "Google Sheets" node configured to read from your tracking spreadsheet
- Add a "Compare Datasets" node that compares the job URLs from the new scrape against those in your spreadsheet
- Configure the node to output only jobs that appear in the new data but not in the spreadsheet (the "B only" output)
This ensures you only receive notifications for new job listings, even if you run the workflow multiple times per day.
Time-saving tip: The Compare Datasets node is crucial for preventing notification fatigue. As mentioned at the 13:45 mark in the tutorial, "If you run this multiple times in a day, you're going to have the initial jobs from the morning already populated in this Google sheet... we don't want to go through the rest of the workflow [for those jobs again]."
Creating the AI Job Matching System
The most powerful aspect of this workflow is its ability to intelligently match jobs to your specific skills and experience. We'll implement this using a two-stage AI process that first filters for potential matches, then performs deeper analysis on matching jobs.
Step 1: Configure the Initial AI Matching Agent
The first AI agent determines whether each job is potentially a good match for your skills:
- Add a "Chat Model" node (the tutorial uses Google's Gemini, but you can use OpenAI or other providers)
- Add a "Structured Output Parser" node to format the AI's response
- Configure the system message with your candidate profile, including your skills and experience
Your candidate profile is crucial for accurate matching. Include your technical skills, soft skills, years of experience, and any specific job preferences. For example:
Candidate Profile:
Skills: SQL, Python, Data Visualization, Excel, Statistical Analysis, Tableau, PowerBI
Experience: 5 years in data analytics roles
Preferences: Remote or hybrid work, data-driven organizations
Configure the structured output to return a simple "yes" or "no" for job fit. This binary output allows us to quickly filter out irrelevant positions without wasting tokens on detailed analysis of poor matches.
Step 2: Add a Conditional Filter
After the initial AI assessment, add an "IF" node that routes the workflow based on the job fit determination:
- If job fit = "yes": Continue to detailed analysis
- If job fit = "no": Skip further processing (No Operation node)
This conditional routing ensures you only spend time and computational resources on jobs that are potential matches.
Step 3: Configure the Detailed Analysis Agent
For jobs that pass the initial screening, a second AI agent performs a comprehensive analysis:
- Add another "Chat Model" node
- Configure a more detailed structured output format that includes:
- Missing skills: Skills mentioned in the job description that aren't in your profile
- Fit summary: A one-sentence assessment of how well you match the position
- Cover letter draft: A customized cover letter highlighting your relevant experience
This detailed analysis provides actionable insights for each matching job, helping you quickly determine which opportunities to prioritize and how to position yourself when applying.
As mentioned at the 21:30 mark in the tutorial, splitting the AI processing into two stages "saves you a lot of tokens over time" and allows you to "use a cheaper model here and a more expensive model on this side of things." This architecture optimizes both cost and performance.
Setting Up Telegram Notifications
The final piece of our job search automation is the notification system. While you could use email or other channels, Telegram offers an ideal combination of instant delivery, rich formatting, and easy setup. Here's how to configure it:
Step 1: Create a Telegram Bot
First, you'll need to create a Telegram bot that will send you job notifications:
- Open Telegram and search for "BotFather"
- Start a chat and send the command "/newbot"
- Follow the prompts to name your bot and set a username
- BotFather will provide an API token—save this for the n8n configuration
Step 2: Get Your Chat ID
Next, you need your personal chat ID so the bot knows where to send messages:
- Start a conversation with your new bot
- Send any message to the bot
- Visit https://api.telegram.org/bot[YOUR_API_TOKEN]/getUpdates
- Look for the "chat" object and note the "id" value
Step 3: Configure the Telegram Node in n8n
Now, add a Telegram node to your workflow:
- Add the "Telegram" node and select "Send a Message"
- Connect to your Telegram account using the bot token
- Enter your chat ID
- Configure the message format using an expression that includes key job details
For the message content, create a template that includes all the essential information a job seeker needs to make a quick decision:
Message Template:
🔍 New Job Match Found!
Role: {{$node["AI Agent 2"].json["title"]}}
Company: {{$node["Filter"].json["company_name"]}}
Level: {{$node["Filter"].json["experience_level"]}}
Location: {{$node["Filter"].json["location"]}}
Fit Summary: {{$node["AI Agent 2"].json["fit_summary"]}}
Missing Skills:
{{$node["AI Agent 2"].json["missing_skills"]}}
Apply Here: {{$node["Filter"].json["apply_url"]}}
Job Details: {{$node["Filter"].json["job_url"]}}
This rich notification format gives you all the information you need to decide whether to apply, directly on your phone. You can even include the AI-generated cover letter if you want to review it before applying.
Step 4: Update Google Sheets with Processed Jobs
Finally, add a "Google Sheets" node configured to append each processed job to your tracking spreadsheet. This creates a complete record of all jobs the system has found, which serves as both a backup and an application tracking system.
Configure the node to map each field from your workflow to the corresponding column in your spreadsheet, including the AI analysis results like fit summary, missing skills, and the generated cover letter.
Watch the Full Tutorial
For a step-by-step walkthrough of building this entire workflow, watch the complete video tutorial below. At the 21:30 mark, you'll see how splitting the AI processing into two stages not only improves performance but significantly reduces your token usage costs.
Key Takeaways
The job search landscape has fundamentally changed. While most job seekers still wake up and manually search through the same listings day after day, you now have the power to automate this entire process. With just 30 minutes of setup time, you can build a personal job search assistant that works 24/7 to find perfect-match opportunities and deliver them directly to your phone.
This workflow demonstrates the transformative potential of combining specialized tools (Apify for data collection), workflow automation (n8n for orchestration), and artificial intelligence (for personalized analysis). The same principles can be applied to countless other business processes that currently consume valuable human time and attention.
Beyond the technical implementation, this project represents a shift in how we approach repetitive tasks. Rather than accepting the status quo of manual searching, we've created a system that continuously works on our behalf, freeing up time for high-value activities that actually move your career forward—like networking, skill development, and interview preparation.
In summary: By investing 30 minutes to build this automated job search system, you can save 5-10 hours per week of manual searching while ensuring you never miss a relevant opportunity. The system gets smarter over time as you refine your skills profile and customize the AI prompts to your specific career goals.
Ready to take your automation skills to the next level? Consider exploring our n8n automation services for more advanced implementations that can transform your business processes beyond just job searching.
Frequently Asked Questions
Common questions about this topic
To build this LinkedIn job scraper, you'll need an n8n instance (cloud or self-hosted), an Apify account with access to the LinkedIn Jobs Scraper actor, a Google account for storing results, and a Telegram account with a bot set up for notifications.
The Apify LinkedIn Jobs Scraper offers a 3-day free trial, which is perfect for following along with this tutorial. After that, it costs $29.99/month if you decide to continue using it for your job search.
- Basic familiarity with n8n workflows and how nodes connect together
- A Google Sheet set up with columns for job details (template provided)
- A Telegram bot token and your personal chat ID
The cost varies depending on your setup. The n8n workflow itself can run on the free tier if you have fewer than 100 active workflow runs per month. The main cost is the Apify LinkedIn Jobs Scraper at $29.99/month after the 3-day free trial.
For AI analysis, you can use Google's Gemini model which offers a free tier with generous limits. Telegram is completely free. If you're actively job hunting, the $30 monthly cost is significantly less than the time value of manually searching LinkedIn jobs daily.
- n8n: Free tier available (up to 100 active workflow runs)
- Apify LinkedIn Jobs Scraper: $29.99/month after 3-day free trial
- Google Sheets & Telegram: Free
The AI job matching accuracy depends entirely on how well you define your skills and experience in the prompt. With a properly configured profile section, the matching can be quite accurate with around 80-90% relevance.
The workflow uses a two-stage AI process: first to determine if a job is a potential match based on your skills, then a deeper analysis for matched jobs that identifies missing skills and even drafts a customized cover letter.
- Be specific and comprehensive when listing your skills in the candidate profile
- Include few-shot examples that demonstrate ideal matches for your profile
- Refine your skills list over time based on the quality of matches
Yes, you can fully customize the LinkedIn job search criteria in the Apify actor configuration. The workflow allows you to specify job title keywords, location, work type preference, job type, experience level, and even target specific companies.
You can also set how recent the job postings should be (past 24 hours is recommended for daily runs) and the maximum number of results to process. This flexibility lets you create highly targeted job searches.
- Job title keywords (e.g., "data analyst", "engineer", "marketing")
- Location (specific cities or countries)
- Work type (remote=2, hybrid=3, on-site=1)
- Contract type (F=full-time, P=part-time, C=contract, T=temporary)
The workflow prevents duplicate job notifications through the Compare Datasets node, which compares newly scraped jobs against previously processed ones stored in Google Sheets. When the workflow runs, it checks if a job's URL already exists in your spreadsheet.
Only jobs that aren't already in the spreadsheet (the "B only" output) continue through the workflow for AI analysis and notifications. This ensures you only receive alerts for new opportunities, even if you run the workflow multiple times per day.
- The system uses job URLs as unique identifiers to prevent duplicates
- All processed jobs are recorded in Google Sheets for reference
- You can manually mark which positions you've applied to in the spreadsheet
Yes, this workflow can be adapted for other job boards by replacing the Apify LinkedIn scraper with alternative data sources. Apify offers scrapers for Indeed, Glassdoor, and other job sites that can be substituted with minimal changes to the workflow structure.
You could also use HTTP Request nodes to interact with job board APIs like ZipRecruiter or Greenhouse if you have API access. The AI analysis portion of the workflow is platform-agnostic and will work with job data from any source.
- Apify offers scrapers for multiple job platforms (Indeed, Glassdoor, etc.)
- Direct API integrations can be used for platforms with public APIs
- Multiple workflows could feed into the same Google Sheet for comprehensive coverage
To improve the AI-generated cover letters, enhance your prompt with specific instructions about your writing style, career narrative, and unique value proposition. Include 2-3 high-quality examples of cover letters you've written or admire.
Consider upgrading to a more powerful AI model like GPT-4 or Claude 3 Opus for higher quality writing. You can also implement a two-stage process where the first draft is generated automatically, but you review and approve it before submission.
- Specify the tone (professional, conversational, enthusiastic) and structure you prefer
- Include your most significant career achievements in your candidate profile
- Update your few-shot examples periodically with successful cover letters
GrowwStacks helps businesses implement automation workflows, AI integrations, and scalable systems tailored to their operations. Whether you need a custom workflow, AI automation, or a full multi-platform automation system, the GrowwStacks team can design, build, and deploy a solution that fits your exact requirements.
For recruiting teams, we can build enhanced versions of this LinkedIn scraper that integrate with your ATS, filter candidates automatically, and even initiate outreach sequences. Our team has deep expertise in n8n, Make.com, and enterprise-grade AI implementations that can save your HR team hundreds of hours while improving candidate quality.
- Custom automation workflows built for your business
- Integration with your existing tools and platforms
- Free consultation to discuss your automation goals
Let Us Build Your Custom Job Search Automation in 48 Hours
Every day you spend manually searching for jobs is costing you valuable opportunities and time that could be spent on interviews and networking. Our team can customize this workflow for your specific career goals and have it running within 48 hours, complete with industry-specific AI prompts and integrations with your preferred tools.