LinkedIn Post Comment Enrichment Pipeline
A pipeline that finds LinkedIn posts by topic, extracts commenters, and enriches them into the CRM -- without touching LinkedIn directly.
A thread in r/n8n ran the numbers last month: a pipeline that finds LinkedIn posts by topic, extracts the commenters, and enriches them into the CRM can process 500+ qualified leads in a workflow that takes under an hour to build. The catch is that LinkedIn aggressively blocks direct scrapers, and most LinkedIn APIs break every few weeks.
There is a cleaner path that works in 2026 and does not put your LinkedIn account at risk. The trick is to treat Google as your LinkedIn crawler.
Why Google Is the Right Crawler for LinkedIn
LinkedIn cooperates with Google for SEO. Every public post, profile, and company page gets indexed in Google within hours of being published. That means you can use Google SERP as a LinkedIn index: search by topic, collect URLs, and extract what you need per-URL. You never scrape LinkedIn directly, so you never get your account banned and you never fight Cloudflare challenges.
The Pipeline
1. Discover LinkedIn Posts via Google
import requests, os
API_KEY = os.environ['SCAVIO_API_KEY']
def linkedin_posts(topic):
r = requests.post('https://api.scavio.dev/api/v1/search',
headers={'x-api-key': API_KEY},
json={'query': f'site:linkedin.com/posts "{topic}"', 'num_results': 30})
return [p['link'] for p in r.json().get('organic_results', [])
if '/posts/' in p['link']]2. Extract the Post Page
For each post URL, use Scavio's extract endpoint with JS rendering enabled. LinkedIn's post pages include an Open Graph summary in the initial HTML plus the commenter list in the rendered DOM.
def fetch_post(url):
r = requests.post('https://api.scavio.dev/api/v1/extract',
headers={'x-api-key': API_KEY},
json={'url': url, 'render_js': True})
return r.json()3. Parse Commenters and Reactions
Parse the returned HTML with BeautifulSoup or cheerio. Scavio's JS renderer waits for LinkedIn's client-side content to settle, which means commenter names and reaction counts are all in the DOM.
from bs4 import BeautifulSoup
def extract_commenters(html):
soup = BeautifulSoup(html, 'html.parser')
return [{
'name': el.select_one('.comment-author').get_text(strip=True),
'headline': el.select_one('.comment-headline').get_text(strip=True) if el.select_one('.comment-headline') else None,
} for el in soup.select('.comment-item')]4. Enrich Into the CRM
For each commenter, you have a name and role. Next, find their email via Hunter, Apollo, or a similar service. Drop the enriched lead into HubSpot or Salesforce.
def enrich_commenter(name, company_guess):
# Hunter.io, Apollo, or Clay call goes here
return {'email': 'commenter@example.com'}5. Route to Sequencer
Push the enriched commenter into Smartlead, Instantly, or HubSpot Sequences with a context variable ("you engaged with [original poster] on [date]") to drive personalization.
Volume and Rate Limits
Scavio lets you call this pipeline at up to 100 queries per minute on the $30/mo plan. That is enough to process 500+ LinkedIn posts per hour. At typical commenter counts (10-50 per post), you are looking at 5,000-25,000 leads per hour of run time.
Why This Beats Phantombuster and Direct Scrapers
- No LinkedIn account risk: you never log in to LinkedIn.
- No breakage: Google does not change its indexing of LinkedIn often. Scrapers break weekly.
- Cheaper: $30/mo with Scavio vs $59-$200/mo with dedicated LinkedIn tools.
- Multi-platform: the same pipeline works for Twitter replies, Reddit comments, YouTube comments. Different site operators, same flow.
Get a free Scavio key and build the pipeline in an afternoon.