LinkedIn Post Analytics Scraper avatar

LinkedIn Post Analytics Scraper

Pricing

from $5.00 / 1,000 linkedin post analytics rows

Go to Apify Store
LinkedIn Post Analytics Scraper

LinkedIn Post Analytics Scraper

Scrape public LinkedIn post analytics from post URLs: reactions, comments, engagement rate vs author followers, media type, author, optional transcript. Use for content reporting. For engager identities use linkedin-post-engagers-scraper. One row per post. $0.005/row.

Pricing

from $5.00 / 1,000 linkedin post analytics rows

Rating

0.0

(0)

Developer

Khadin Akbar

Khadin Akbar

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

Turn public LinkedIn post URLs into one analytics row per post for content teams, agencies, and competitor-research agents. Each row includes reactionCount, commentCount, engagementRatePct versus the author's public follower count, mediaType, author context, and an optional video transcript. No LinkedIn login or cookies.

This Actor scores posts you already have URLs for using public reaction and comment totals plus engagement rate versus author followers. For the people commenting on a post, continue with LinkedIn Post Engagers Scraper after you have the post URL.

Best fit for this Actor

  • Benchmark a competitor's last five posts by reactions, comments, and engagement rate vs follower count.
  • Build a weekly client report of owned or industry posts without logging into LinkedIn.
  • Compare video vs document vs text formats on the same author's public posts.
  • Feed an AI agent a short list of post URLs and get structured JSON for a dashboard or CRM note.

For commenter identities, continue with LinkedIn Post Engagers Scraper. For author firmographics after you have a company URL, use LinkedIn Company Search Scraper.

Practical scenario

A social lead pastes a Microsoft video post URL and an Anthropic document post URL. The run returns two OK rows: the video post has 379 reactions, 25 comments, media type video, and a transcript preview; the document post has 10,889 reactions, 607 comments, and media type document. Engagement rate is (reactions + comments) / author followers, so a 28-million-follower company page and a 4-million-follower research page are comparable. A deleted URL comes back as VALID_EMPTY with no post-analytics charge.

Quick start input

{
"postUrls": [
"https://www.linkedin.com/feed/update/urn:li:activity:7468770468041502720/"
],
"maxItems": 20,
"includeTranscript": false,
"providerOrder": "scrapecreators-first"
}

postUrls accepts activity URLs, /posts/ URLs, and pulse article URLs. Duplicate URLs are deduplicated. Profile and company page URLs are skipped.

Input reference

FieldTypeWhat it controls
postUrlsarrayRequired post URLs. Example: https://www.linkedin.com/feed/update/urn:li:activity:7468770468041502720/. Max 100 unique values.
maxItemsintegerCap on unique posts processed. Default 20, max 100.
includeTranscriptbooleanInclude the full public video transcript. Default false keeps a 280-character transcriptPreview.
providerOrderenumscrapecreators-first (default) or sociavault-first. Fallback fires automatically.
maxConcurrencyintegerPosts processed in parallel. Default 2, max 5.

What data you receive

One dataset item is one LinkedIn post.

{
"outcome": "OK",
"postUrl": "https://www.linkedin.com/feed/update/urn:li:activity:7468770468041502720/",
"resolvedPostUrl": "https://www.linkedin.com/posts/microsoft_activity-7468770468041502720-mGV1",
"postId": "7468770468041502720",
"authorName": "Microsoft",
"authorUrl": "https://www.linkedin.com/company/microsoft",
"authorType": "company",
"authorFollowerCount": 28914824,
"reactionCount": 379,
"commentCount": 25,
"totalEngagements": 404,
"engagementRatePct": 0.0014,
"commentsPerReaction": 0.066,
"mediaType": "video",
"hasTranscript": true,
"publishedAt": "2026-06-05T21:07:22.617Z",
"provider": "scrapecreators",
"scrapedAt": "2026-08-21T12:00:00.000Z"
}
FieldMeaning
reactionCountPublic reaction total. LinkedIn often labels this as likes even when it includes all reaction types.
engagementRatePct((reactions + comments) / author followers) * 100. Null when follower count is missing.
mediaTypevideo, document, carousel, image, media, or text.
outcomeOK billed; VALID_EMPTY when the post is private, deleted, or not public (no post-analytics charge).

OUTPUT and RUN_SUMMARY in the default key-value store hold outcome, itemsPushed, and chargedEventCounts.

You can download the dataset as JSON, CSV, Excel, or HTML from the Dataset tab.

Use through the API

curl -X POST "https://api.apify.com/v2/acts/khadinakbar~linkedin-post-analytics-scraper/runs" \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"postUrls":["https://www.linkedin.com/feed/update/urn:li:activity:7468770468041502720/"]}'

Results land in the run's default dataset. Paginate with offset/limit.

Use with AI agents through Apify MCP

Score these LinkedIn post URLs. Return authorName, reactionCount, commentCount, engagementRatePct, mediaType, publishedAt, outcome, and provider.

Connect via https://mcp.apify.com. Read OUTPUT.outcome and itemsPushed to interpret empty datasets. The actor is exposed as apify--linkedin-post-analytics-scraper.

Connect the workflow

Pricing

Pay per event plus platform usage. Confirm current event prices on the live Pricing tab; that tab is the source of truth if this page ever lags.

  • apify-actor-start: $0.00005 per run
  • post-analytics: $0.005 per OK row

A one-post check is about $0.005 in result events plus a few seconds of Apify platform usage. VALID_EMPTY rows have no post-analytics charge. Provider credits are paid by the Actor owner.

RunBilled rowsEvent cost (approx.)
One post1~$0.005
10-post weekly report10~$0.05
20-post default batch20~$0.10
100-post max batch100~$0.50

How it works

  1. Normalize and deduplicate post URLs.
  2. Fetch public post JSON from ScrapeCreators, then SociaVault.
  3. Flatten reaction and comment counts, compute engagement rate vs author followers, and classify media type.
  4. Charge post-analytics only after a usable OK row, then write the row.

Private, deleted, or non-public posts finish as VALID_EMPTY with zero fabricated metrics.

Best results

  • Pass post, activity, or pulse URLs. Keep profile and company URLs for the matching scrapers.
  • Compare engagementRatePct across authors of similar follower size; a 28M-follower page and a 50k-follower person are not the same base.
  • Use mediaType to split video vs document vs text before ranking posts.
  • Leave includeTranscript off unless you need the full spoken text. The preview is enough to see that a transcript exists.
  • A typo or deleted post finishes SUCCEEDED with a VALID_EMPTY row and no post-analytics charge.

Best results for recovery and data quality

  • Public metrics. Reactions, comments, author followers, media, and transcripts that appear without login. Owner-only impression dashboards stay with LinkedIn's native analytics.
  • Single reaction total. Public provider payloads expose one reaction count covering all visible reaction types.
  • Share counts when present. The field is written when a provider returns it.
  • People rows. Continue with LinkedIn Post Engagers Scraper when you need commenter identities.
  • Per-URL resilience. Provider hiccups retry, then fall back. Mixed success is PARTIAL. A fully unavailable URL set is UPSTREAM_FAILED.

Builder's note

I built this after I found that both public providers already return reaction totals, comment totals, author followers, media URLs, and sometimes a transcript — enough to score a post without a browser. In my testing, engagement rate versus follower count was the useful derived metric: it lets you compare a viral document on a mid-size page with a quiet video on a huge company page. Every row still carries provider and scrapedAt so you can see source and freshness.

FAQ

Which metrics are in each row? Public reaction and comment totals plus an engagement rate versus the author's public follower count. Owner-only impression dashboards remain in LinkedIn's native analytics.

Is LinkedIn login or cookies required? No. The default path is cookieless providers. You never supply cookies, credentials, or a personal LinkedIn account.

What happens if a post is deleted or restricted? The row is VALID_EMPTY with a reason, no post-analytics charge. Runs with at least one OK post still finish with useful data.

Can an AI agent use this? Yes. One postUrls tool call returns schema-valid rows, provenance, and a named OUTPUT.outcome.

This Actor retrieves publicly available data. You are responsible for complying with LinkedIn's Terms of Service, applicable data-protection laws (GDPR/CCPA), and Apify's Exclusion Policy when using the results. This Actor is independent of LinkedIn.

Issues and feature requests: use the Actor Issues tab on Apify.