π£ Scrape LinkedIn hiring posts with Apify and save qualified leads to Google Sheets
β‘ 698 views Β· π£ Lead Generation & Enrichment
π‘ Pro Tip β If youβre pulling LinkedIn data through HTTP requests or dealing with API restrictions, thereβs a community node called ScraperNode that handles this natively. It has dedicated scrapers for profiles, companies, jobs, and people search β you just pass a URL and get structured data back.
Description
> π See real sample data this workflow collects: > View Sample Google Sheet β
Stop manually searching LinkedIn every day. This workflow runs every 6 hours, scrapes LinkedIn posts, filters out all the noise, confirms real hiring intent, and saves only clean, qualified leads to your Google Sheet β automatically.
Pre-configured for n8n automation roles, but fully customizable for any job title, skill, or tool.
What it does
- Scrapes LinkedIn post search results using Apify for your target keywords
- Removes noise posts (tips, self-promo, events, tutorials, engagement bait)
- Filters out job seekers posting βhire meβ or βopen to workβ
- Detects genuine hiring intent using 35+ hiring phrases
- Handles LinkedIn bold/italic Unicode text β so formatted posts like πͺπ²βπΏπ² ππΆπΏπΆπ»π΄ are correctly detected
- Matches your target job titles and tool name (fully customizable)
- Extracts emails, phone numbers, WhatsApp links, and apply links from each post
- Prevents duplicates across all runs using a two-layer system (fingerprint + DataTable)
- Saves every clean lead to Google Sheets with author name, LinkedIn profile, post URL, job type, and contact info
Who itβs for
Freelancers β find clients posting for your exact skill before anyone else responds
Automation agencies β build a steady pipeline of inbound hiring signals
Job seekers β catch real job posts the moment they go live on LinkedIn
Anyone β swap keywords and job titles to track any role in any industry
How it works (Step by Step)
- Schedule Trigger β runs automatically every 6 hours
- Get Posts β Apify scrapes LinkedIn posts from your custom search URLs
- Generate Fingerprint β catches duplicate posts within the same run
- Database Check β skips posts already seen in any previous run using LinkedIn post URN
- Removing Noise β filters out thought leadership, tutorials, events, and self-promo
- Remove Job Seekers β removes βhire meβ and βopen to workβ style posts
- Check Hiring Intent β confirms post has real hiring language (35+ phrases checked)
- Match Job Title β keeps only posts matching your tool name AND target job titles
- Enrich Data β extracts all contact info and detects job type (Remote / Hybrid / On-Site)
- Google Sheets β logs every qualified lead automatically
What you get in Google Sheets
| Field | Description |
|---|---|
| Post Content | Full LinkedIn post text |
| Post URL | Direct link to the post |
| Job Type | Remote / Hybrid / On-Site |
| Published Date | When the post was published |
| Author Name | Who posted it |
| Author LinkedIn | Direct profile link |
| Extracted from post | |
| Phone Number | Extracted from post |
| Apply Link | lnkd.in short links |
| wa.me links if present |
Customization
This workflow is built to be adapted. You are not locked into n8n roles.
To use it for your own niche:
- Go to Get Posts β replace the LinkedIn search URLs with your own keywords
- Go to Match Job Title β replace
n8nwith your tool (e.g. Zapier, Make, Python) - Add or remove job titles in Match Job Title to match what you are targeting
- Add more noise phrases in Removing Noise if needed
Other ideas:
- Add a Telegram or Slack notification node after Google Sheets for instant alerts
- Use the sheet as a mini-CRM β add outreach status, reply date, and notes columns
- Run multiple copies for different niches or platforms
Setup Requirements
- Apify account β for LinkedIn post scraping (paid plan recommended)
- n8n DataTable β built-in n8n feature, used to track seen posts across runs
- Google Sheets β to store and manage your leads
- Google Sheets OAuth2 credentials connected in n8n
Setup Checklist
- Add your Apify API credentials to the Get Posts node
- Build your LinkedIn search URL and paste it into the
urlsarray in Get Posts - Create a DataTable in your n8n project named Post Job Scraper with one column:
post_ID(string) - Link the DataTable in both If Job Not in Database and Insert row nodes
- Create your Google Sheet with headers in row 2 and connect it in Append row in sheet
- Customize job titles and tool name inside Match Job Title
Support & Questions
Have questions, need help setting it up, or want to suggest improvements?
π§ Email: salmanmehboob1947@gmail.com π LinkedIn: https://www.linkedin.com/in/salman-mehboob-pro/
π Nodes Used
Google Sheets, Schedule Trigger, Filter, Data table
π₯ Import
Download workflow.json and import into n8n:
Workflow menu β Import from File