Linkedin Viral Posts Finder
Pricing
from $7.00 / 1,000 results
Linkedin Viral Posts Finder
Search LinkedIn posts by keyword and extract structured post data with engagement metrics. No cookies or LinkedIn account required.
Pricing
from $7.00 / 1,000 results
Rating
0.0
(0)
Developer
Scarlet API
Actor stats
0
Bookmarked
14
Total users
12
Monthly active users
10 days ago
Last modified
Categories
Share
LinkedIn Viral Posts Finder (No Cookies)
Search LinkedIn posts by keyword and extract structured post data with engagement metrics. No cookies or LinkedIn account required.
Key Benefits
- No cookies or account required -- just enter your search keywords and go
- Direct API access -- bypasses PerimeterX bot detection entirely (no headless browser, no stealth patches)
- Fast -- pure HTTP requests return results in seconds, not minutes
- Engagement filtering -- surface only viral posts above your engagement threshold
- No caching -- fresh data on every run
- Flexible sorting -- by total engagement, reactions, comments, or recency
Use Cases
- Content research -- find viral posts on any topic to study what works on LinkedIn
- Competitive intelligence -- track what's trending in your industry or around competitor keywords
- Social selling / outreach -- discover high-engagement posts by prospects or in target niches
- Recruiting signals -- search for hiring-related posts by employees of target companies
- Trend monitoring -- batch multiple keyword queries to track topics over time
- Engagement benchmarking -- compare engagement metrics across keywords, industries, or time periods
Quick Start
Apify Console
- Go to the actor page
- Enter your Search Queries (e.g.
AI engineer) - Adjust
maxPosts,minEngagement,sortByas needed - Click Start
- View results in the Dataset tab when finished
CLI
apify call shreyshahh~linkedin-viral-posts-finder -i '{"searchQueries": ["AI engineer"],"maxPosts": 10,"minEngagement": 50}'
Input Parameters
| Field | Type | Default | Description |
|---|---|---|---|
searchQueries | string[] | — | Search queries. Each runs as a separate search. Supports Boolean operators. Limited to 85 characters per query by LinkedIn. |
maxPosts | integer | 20 | Max posts that meet the engagement criteria per query |
minEngagement | integer | 0 | Only return posts with >= this many total engagements (reactions + comments + reposts) |
sortBy | string | "engagement" | engagement, recent, reactions, or comments |
datePosted | string | "any" | Recency filter: any, past-1h, past-24h, past-week, past-month, past-3months, past-6months, past-year |
postedLimitDate | string | — | Exclude posts older than this date. Pick from calendar or relative period (7 days, 2 weeks) |
startPage | integer | 1 | Page to start scraping from. Useful for resuming interrupted runs. |
proxyConfiguration | object | Residential | Apify proxy config |
Data You'll Receive
Each post in the dataset includes:
- Post content -- full text of the LinkedIn post (up to 5,000 characters)
- Author information -- name, headline, profile URL, profile picture
- Engagement metrics -- reaction count, comment count, repost count, total engagement
- Post timing -- ISO date, human-readable relative time ("3d", "1w"), and raw timestamp
- Post metadata -- post URL, post ID
You can export results in JSON, CSV, Excel, and other formats directly from the Dataset tab or via the API (append ?format=csv or ?format=xlsx to the dataset items URL).
Sample output
For example, searching for hiring posts from tech companies:
{"searchQueries": ["Hiring software engineer","Hiring full stack developer"],"maxPosts": 10,"minEngagement": 20,"datePosted": "past-week"}
Returns posts like:
{"postId": "7430296534459670529","postUrl": "https://www.linkedin.com/feed/update/urn:li:activity:7430296534459670529","authorName": "Ilias Miraoui","authorProfileUrl": "https://www.linkedin.com/in/ilias-miraoui","authorHeadline": "Bringing Real-time Price Transparency to the Wine Industry","authorProfilePicture": "https://media.licdn.com/dms/image/v2/...","postContent": "We're hiring an AI engineer at Wine Labs in NYC. If you're passionate about building intelligent systems that transform traditional industries, this is your chance...","postedDate": "2026-02-20T16:00:00Z","postedAgo": "3d","postedAtTimestamp": 1740000000000,"reactionCount": 40,"commentCount": 5,"repostCount": 2,"totalEngagement": 47,"scrapedAt": "2026-02-23T12:45:00.000000"}
How to Search
Find viral posts on a topic
Set minEngagement to filter out low-quality posts. The scraper paginates through up to 1000 results per query until it finds enough posts meeting your threshold.
{"searchQueries": ["claude code"],"maxPosts": 10,"minEngagement": 100,"sortBy": "engagement"}
Search multiple topics in one run
Each query in the array runs as a separate search. Each gets its own maxPosts allocation.
{"searchQueries": ["AI agent", "machine learning startup", "LLM deployment"],"maxPosts": 5,"minEngagement": 50}
Use Boolean operators
LinkedIn search supports Boolean operators for precise queries. Each query is limited to 85 characters by LinkedIn.
{"searchQueries": ["\"AI agent\" OR \"LLM\" OR \"RAG\""],"maxPosts": 20,"sortBy": "engagement"}
Filter by recency
Use datePosted for quick filtering. Options like past-24h, past-week, and past-month are filtered server-side by LinkedIn (faster, fewer API calls). For finer control, use postedLimitDate with the datepicker.
{"searchQueries": ["Series A funding"],"maxPosts": 20,"datePosted": "past-week","sortBy": "recent"}
Programmatic Access (API)
You can run this actor programmatically from any app, script, or CI pipeline.
JavaScript
import { ApifyClient } from "apify-client";const client = new ApifyClient({ token: "YOUR_APIFY_TOKEN" });const input = {searchQueries: ["AI engineer"],maxPosts: 10,minEngagement: 50,};const run = await client.actor("shreyshahh~linkedin-viral-posts-finder").call(input);const { items } = await client.dataset(run.defaultDatasetId).listItems();for (const post of items) {console.log(`[${post.totalEngagement} eng] ${post.postContent?.slice(0, 80)}...`);}
Python
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run_input = {"searchQueries": ["AI engineer"],"maxPosts": 10,"minEngagement": 50,}run = client.actor("shreyshahh~linkedin-viral-posts-finder").call(run_input=run_input)for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(f"[{item['totalEngagement']} eng] {item['postContent'][:80]}...")
CLI
echo '{"searchQueries": ["AI engineer"],"maxPosts": 10,"minEngagement": 50}' | apify call shreyshahh~linkedin-viral-posts-finder --silent --output-dataset
cURL (REST API)
Start a run (async):
curl -X POST "https://api.apify.com/v2/acts/shreyshahh~linkedin-viral-posts-finder/runs?token=YOUR_APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"searchQueries": ["AI engineer"], "maxPosts": 10, "minEngagement": 50}'
Synchronous (one call, wait for results):
curl -X POST "https://api.apify.com/v2/acts/shreyshahh~linkedin-viral-posts-finder/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"searchQueries": ["AI engineer"], "maxPosts": 5, "minEngagement": 50}'
Returns a JSON array of posts. Add ?format=csv for CSV, ?format=xlsx for Excel.
MCP Server Setup
Use this actor directly from AI agents and LLM frameworks via the Apify MCP server:
{"mcpServers": {"apify": {"command": "npx","args": ["mcp-remote","https://mcp.apify.com/?tools=shreyshahh/linkedin-viral-posts-finder","--header","Authorization: Bearer YOUR_APIFY_TOKEN"]}}}
How It Works
The scraper uses LinkedIn's internal Voyager GraphQL API via raw HTTP requests. No browser is involved -- this completely bypasses LinkedIn's PerimeterX bot detection, which only triggers when it can fingerprint a browser engine.
Authentication is handled server-side using a managed cookie pool. Users never need to provide cookies or a LinkedIn account -- the actor owner maintains the credentials as environment variables.
For the complete technical deep-dive (API endpoints, header reference, URN mapping, troubleshooting), see the KNOWLEDGE_BASE.md.
Troubleshooting
| Problem | Cause | Fix |
|---|---|---|
| 0 posts found | Bad keywords or service issue | Try a broad keyword like "AI" with minEngagement: 0 |
| Posts have 0 engagement | They genuinely have 0 likes | Set minEngagement higher to filter them out |
| Run fails immediately | Internal credential issue | Contact the actor owner / check the Issues tab |
| Timeout on large queries | Too many posts requested | Reduce maxPosts or narrow your keywords |
Known Limitations
- Rate limiting -- LinkedIn enforces rate limits on API calls. Very large queries may hit these limits.
- GraphQL queryId -- The internal
queryIdcould change if LinkedIn updates their frontend. The actor owner monitors for this. - Author names -- Some reshared posts or company pages may show "Unknown" as the author.
- Pagination cap -- Up to 1000 results (100 pages of 10) per query. LinkedIn itself caps search results around this range.
Support and Feedback
We continuously improve this actor based on user feedback. If you encounter issues or have suggestions:
- Create an issue on the actor's Issues tab in Apify Console
- Check the KNOWLEDGE_BASE.md for technical details
License
Provided as-is. Users are responsible for compliance with LinkedIn's Terms of Service and applicable laws.