Linkedin Viral Posts Finder avatar

Linkedin Viral Posts Finder

Pricing

from $7.00 / 1,000 results

Go to Apify Store
Linkedin Viral Posts Finder

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

Scarlet API

Maintained by Community

Actor stats

0

Bookmarked

14

Total users

12

Monthly active users

10 days ago

Last modified

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

  1. Go to the actor page
  2. Enter your Search Queries (e.g. AI engineer)
  3. Adjust maxPosts, minEngagement, sortBy as needed
  4. Click Start
  5. 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

FieldTypeDefaultDescription
searchQueriesstring[]Search queries. Each runs as a separate search. Supports Boolean operators. Limited to 85 characters per query by LinkedIn.
maxPostsinteger20Max posts that meet the engagement criteria per query
minEngagementinteger0Only return posts with >= this many total engagements (reactions + comments + reposts)
sortBystring"engagement"engagement, recent, reactions, or comments
datePostedstring"any"Recency filter: any, past-1h, past-24h, past-week, past-month, past-3months, past-6months, past-year
postedLimitDatestringExclude posts older than this date. Pick from calendar or relative period (7 days, 2 weeks)
startPageinteger1Page to start scraping from. Useful for resuming interrupted runs.
proxyConfigurationobjectResidentialApify 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"
}

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 ApifyClient
client = 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

ProblemCauseFix
0 posts foundBad keywords or service issueTry a broad keyword like "AI" with minEngagement: 0
Posts have 0 engagementThey genuinely have 0 likesSet minEngagement higher to filter them out
Run fails immediatelyInternal credential issueContact the actor owner / check the Issues tab
Timeout on large queriesToo many posts requestedReduce maxPosts or narrow your keywords

Known Limitations

  1. Rate limiting -- LinkedIn enforces rate limits on API calls. Very large queries may hit these limits.
  2. GraphQL queryId -- The internal queryId could change if LinkedIn updates their frontend. The actor owner monitors for this.
  3. Author names -- Some reshared posts or company pages may show "Unknown" as the author.
  4. 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.