LinkedIn Posts Scraper avatar

LinkedIn Posts Scraper

Pricing

from $0.50 / 1,000 post scrapeds

Go to Apify Store
LinkedIn Posts Scraper

LinkedIn Posts Scraper

Extract structured data from public LinkedIn post URLs. Collect post text, author, publish date, reaction and comment counts, visible comments, reaction types, and media (images, video, carousels, documents) — ideal for social listening, content research, competitor monitoring, and lead enrichment.

Pricing

from $0.50 / 1,000 post scrapeds

Rating

0.0

(0)

Developer

Coder

Coder

Maintained by Community

Actor stats

0

Bookmarked

5

Total users

4

Monthly active users

6 days ago

Last modified

Share

Collect structured data from public LinkedIn post pages using direct post URLs. Add one or more links, start a run, and receive clean JSON records in your Apify dataset — no LinkedIn login required.

Use it for social listening, content research, competitor monitoring, influencer analysis, lead enrichment, and marketing intelligence — without copying posts manually.


What you get

Each saved row is one LinkedIn post, organized into clear sections:

SectionWhat it contains
LinksThe URL you provided (inputUrl) and the canonical post link (postUrl)
ContentPost text, headline, and publication timestamp when available
AuthorAuthor name, profile or company link, type (person or organization), and image when shown
EngagementReaction count, comment count, and reaction types when shown
commentsVisible comments with author name and text when LinkedIn exposes them on the public page
postTypeContent type — for example text, image, video, carousel, or document
mediaImages, video sources, or other media when present

Results are saved to the dataset as each post is processed, so you can preview progress before the run finishes.


Quick start on Apify

  1. Open the Actor in the Apify Console.
  2. Under LinkedIn post URLs, add one or more public post links (one per line).
  3. Click Start and open the Dataset tab as posts are saved.

Supported input formats:

  • Activity post: https://www.linkedin.com/posts/apify_pyconsg-activity-7475096162006646784-txwr/
  • UGC post: https://www.linkedin.com/posts/jancurn_its-always-great-to-be-back-in-san-francisco-ugcPost-7477224335636680704-LH9L/
  • Company post: https://www.linkedin.com/posts/apify_two-brothers-scraped-10000-french-bakeries-activity-7477345241553936384-aWdh/

Tracking parameters in the URL (for example utm_source) are ignored. The Actor uses the canonical post address.

Example input:

{
"postUrls": [
"https://www.linkedin.com/posts/apify_pyconsg-activity-7475096162006646784-txwr/",
"https://www.linkedin.com/posts/jancurn_its-always-great-to-be-back-in-san-francisco-ugcPost-7477224335636680704-LH9L/",
"https://www.linkedin.com/posts/charlie-hills_claude-has-375-native-mcp-connectors-how-activity-7473675973541044225-8oQk"
]
}

Input parameters

LinkedIn post URLs

FieldpostUrls
TypeList of text entries (one URL per line)
RequiredYes — at least one entry
FormatsStandard LinkedIn post page URLs (linkedin.com/posts/...)

Invalid entries that cannot be recognized as a LinkedIn post URL are skipped with a warning.

Duplicate URLs in the same run are still processed as separate inputs if listed more than once.


What you will see during a run

The run log is written for end users — messages describe collection progress only.

Typical messages:

  • Starting collection for N post(s).
  • Progress: 5 post(s) saved.
  • Could not retrieve: https://www.linkedin.com/posts/... (when a single post fails)
  • Run complete. Saved N post(s).
  • Run complete. Saved X of Y post(s). Z could not be retrieved. (when some posts fail)

If one post cannot be retrieved, other posts in the same run can still succeed.

On the Apify free plan, you may also see a notice when free-tier limits apply (see Free plan limits).


Output overview

Dataset structure

  • Results are saved to a single Apify dataset
  • Each row is one post object
  • Only successfully scraped posts appear in the dataset — posts that could not be retrieved are not included

Field presence varies by post: not every post shows inline comments, reaction types, or full media on the public view. Missing sections are omitted from the output — not necessarily a scraper error.


Output fields

FieldDescription
inputUrlThe post URL as provided in your input
postUrlCanonical LinkedIn post link
textPost body text when available
headlinePost headline or title line when shown
publishedAtISO publish timestamp when available

Author

FieldDescription
author.nameAuthor display name
author.profileUrlLinkedIn profile or company page URL
author.typeperson or organization
author.imageUrlAuthor or company image URL when shown

Engagement

FieldDescription
numLikesTotal reaction count when shown
numCommentsTotal comment count when shown
reactionTypesReaction types displayed on the post (for example LIKE, PRAISE, EMPATHY)

comments (array)

FieldDescription
authorNameCommenter name when shown
authorUrlCommenter profile URL when available
textComment text
publishedAtComment timestamp when available

Media

FieldDescription
postTypeContent type — text, image, video, carousel, document, or article
media.imagesList of image URLs (and optional alt text when shown)
media.videoVideo sources and poster image when the post contains video

Example output

The excerpts below come from a real run of public LinkedIn post URLs. Full output is available in the run dataset.

Example input

{
"postUrls": [
"https://www.linkedin.com/posts/apify_pyconsg-activity-7475096162006646784-txwr/",
"https://www.linkedin.com/posts/jancurn_its-always-great-to-be-back-in-san-francisco-ugcPost-7477224335636680704-LH9L/",
"https://www.linkedin.com/posts/apify_the-apify-team-is-heading-to-wearedevelopers-activity-7475503085436534784-8Fhp/"
]
}

Excerpt — company carousel post with comments

{
"inputUrl": "https://www.linkedin.com/posts/apify_pyconsg-activity-7475096162006646784-txwr/",
"postUrl": "https://www.linkedin.com/posts/apify_pyconsg-activity-7475096162006646784-txwr/",
"text": "At PyCon Singapore's PyLadies track, Kateřina Hroníková ran a hands-on workshop with a real output: a Women in Tech Inspiration Feed Actor...",
"headline": "At PyCon Singapore's PyLadies track, Kateřina Hroníková ran a hands-on workshop with a real output: a Women in Tech Inspiration Feed Actor.",
"publishedAt": "2026-06-23T08:03:25.574Z",
"author": {
"name": "Apify",
"profileUrl": "https://cz.linkedin.com/company/apify",
"type": "organization",
"imageUrl": "https://media.licdn.com/dms/image/v2/D4D0BAQF7OnC-r1njIA/company-logo_100_100/..."
},
"postType": "carousel",
"media": {
"images": [
{
"url": "https://media.licdn.com/dms/image/v2/D4E10AQEomy8zWsZpUw/image-shrink_800/..."
},
{
"url": "https://media.licdn.com/dms/image/v2/D4E10AQH62KvFkG_w9A/image-shrink_800/..."
},
{
"url": "https://media.licdn.com/dms/image/v2/D4E10AQGtyi-2FsHutA/image-shrink_800/..."
}
]
},
"numLikes": 48,
"numComments": 2,
"reactionTypes": ["LIKE", "EMPATHY", "PRAISE"],
"comments": [
{
"authorName": "Saurav Jain",
"text": "❤️❤️",
"publishedAt": "2026-06-23T13:14:52.984Z"
},
{
"authorName": "Sandhu Singh",
"text": "Hii",
"publishedAt": "2026-06-23T09:08:57.768Z"
}
]
}

Excerpt — personal post with carousel images

{
"inputUrl": "https://www.linkedin.com/posts/jancurn_its-always-great-to-be-back-in-san-francisco-ugcPost-7477224335636680704-LH9L/",
"postUrl": "https://www.linkedin.com/posts/jancurn_its-always-great-to-be-back-in-san-francisco-activity-7477224336890912768-tZVV/",
"text": "It’s always great to be back in San Francisco! With a strong crew from Apify, we’re heading to AI Engineer World's Fair next week...",
"headline": "It’s always great to be back in San Francisco!",
"publishedAt": "2026-06-29T05:00:02.001Z",
"author": {
"name": "Jan Čurn",
"profileUrl": "https://www.linkedin.com/in/jancurn",
"type": "person",
"imageUrl": "https://media.licdn.com/dms/image/v2/D4E03AQGVYzvGHp9zhw/profile-displayphoto-shrink_400_400/..."
},
"postType": "carousel",
"media": {
"images": [
{
"url": "https://media.licdn.com/dms/image/v2/D4D22AQFnPIWsXxWMbQ/feedshare-shrink_800/..."
},
{
"url": "https://media.licdn.com/dms/image/v2/D4D22AQH_EAhX-Hdk0Q/feedshare-shrink_800/..."
}
]
},
"numLikes": 219,
"numComments": 8,
"reactionTypes": ["LIKE", "EMPATHY", "PRAISE"],
"comments": [
{
"authorName": "Saurav Jain",
"text": "This sounds like a strong lineup. The “MCP doesn’t suck, your agent does” framing is especially interesting...",
"publishedAt": "2026-06-29T12:45:44.581Z"
},
{
"authorName": "Petr Smid",
"text": "Wow. Enjoy SF and with 1,000 people registered, be careful with the rooftop 😉",
"publishedAt": "2026-06-29T09:08:05.825Z"
}
]
}

Excerpt — image post with engagement counts

{
"inputUrl": "https://www.linkedin.com/posts/apify_the-apify-team-is-heading-to-wearedevelopers-activity-7475503085436534784-8Fhp/",
"postUrl": "https://www.linkedin.com/posts/apify_the-apify-team-is-heading-to-wearedevelopers-activity-7475503085436534784-8Fhp/",
"text": "The Apify team is heading to WeAreDevelopers World Congress in Berlin, July 9-10...",
"headline": "The Apify team is heading to WeAreDevelopers World Congress in Berlin, July 9-10.",
"publishedAt": "2026-06-24T11:00:23.683Z",
"author": {
"name": "Apify",
"profileUrl": "https://cz.linkedin.com/company/apify",
"type": "organization"
},
"postType": "image",
"media": {
"images": [
{
"url": "https://media.licdn.com/dms/image/v2/D4E10AQELPd6D6SBFBg/image-shrink_1280/..."
}
]
},
"numLikes": 27,
"numComments": 2,
"reactionTypes": ["LIKE", "PRAISE", "APPRECIATION"]
}

Excerpt — high-engagement post with many visible comments

{
"inputUrl": "https://www.linkedin.com/posts/charlie-hills_claude-has-375-native-mcp-connectors-how-activity-7473675973541044225-8oQk/",
"postUrl": "https://www.linkedin.com/posts/charlie-hills_claude-has-375-native-mcp-connectors-how-activity-7473675973541044225-8oQk/",
"text": "Claude has 375+ native MCP connectors. How to connect one in under 2 minutes...",
"headline": "Claude has 375+ native MCP connectors.",
"publishedAt": "2026-06-19T10:00:06.259Z",
"author": {
"name": "Charlie Hills 🦩",
"profileUrl": "https://uk.linkedin.com/in/charlie-hills",
"type": "person"
},
"postType": "carousel",
"numLikes": 1004,
"numComments": 393,
"reactionTypes": ["LIKE", "EMPATHY", "INTEREST"],
"comments": [
{
"authorName": "Sajad Hussain",
"text": "100%. Feels like most people are just collecting connectors like Pokemon...",
"publishedAt": "2026-06-19T12:08:18.065Z"
},
{
"authorName": "Brook Hinton",
"text": "\"The connectors aren't the magic, chaining them is\" is the line that matters.",
"publishedAt": "2026-06-19T10:07:14.648Z"
}
]
}

Posts that could not be retrieved do not appear in the dataset. Check the run log for a short message per failed URL.


Pricing

This Actor uses pay-per-result pricing. You are charged only for posts successfully saved to the dataset.

What you pay forWhen it is charged
Each saved postOnce per post row written to the dataset

Examples (see the Pricing tab on the Store listing for current rates):

RunWhat you pay for
50 post URLs, 48 succeed48 results
100 post URLs, all succeed100 results
20 post URLs, 5 fail15 results

Failed or skipped URLs are not saved and are not billed as results.


Free plan limits

On the Apify free plan, the Actor may automatically apply:

LimitValue
Post URLs processed per run5 (only the first entries in your list)

Additional URLs in the same run are not processed. Paid Apify plans can use the full input list without this cap. If limits apply, the run log will include a short notice.


Public pages and data coverage

No LinkedIn login required
The Actor reads publicly visible post pages. It does not sign in to LinkedIn and does not use your account or cookies.

Guest view vs signed-in view
Results reflect what LinkedIn shows to visitors who are not logged in. Compared with what you see when signed in, output may include:

  • Fewer inline comments or partial comment threads
  • Reaction counts without a full list of who reacted
  • Missing media on some post types
  • Shorter or simplified post text on certain pages

Coverage varies by post, author type, and LinkedIn's own visibility settings.

Post URL formats
Standard linkedin.com/posts/... links are supported, including activity, UGC, and share-style slugs.

High-traffic or restricted posts
Some posts may not be retrieved in a given run. Retrying later or processing URLs in a smaller batch can help in some cases.

Compliance
You are responsible for using collected data in line with applicable laws and LinkedIn's terms of service.


Tips for best results

  1. Use the post link from the browser — Open the post on LinkedIn, copy the address bar URL, and paste it into postUrls.
  2. Start with a small batch — Test with 5–10 posts before large exports.
  3. Expect partial commentsnumComments is the total count; the comments array contains only comments visible on the public page (often a subset).
  4. Deduplicate on postUrl — Use the canonical post link as a stable key across runs.
  5. Schedule recurring runs — Use Apify schedules to monitor the same posts or refresh a list over time.
  6. Export flexibly — Download the dataset as JSON, CSV, Excel, or connect via API to your warehouse or automation tools.

Frequently asked questions

Can I scrape a profile or company feed?
This Actor is built for individual post URLs. For company post feeds, use a LinkedIn company scraper with post collection enabled.

Why is a post missing from my dataset?
The post may be unavailable, temporarily busy, restricted, or the URL may be invalid. Check the run log for Could not retrieve: ... messages. Other posts in the same run can still succeed.

Why does numComments not match the comments array length?
numComments is the total count shown on the post. The comments array includes only comments LinkedIn exposes on the public page — often fewer than the full thread.

Why is the author a person on a company post?
Some posts are published by executives or employees on behalf of an organization. The author.type field indicates person or organization as shown on the page.

Will failed posts be charged?
No. Only posts successfully saved to the dataset are billed as results. See the Pricing tab for current rates.

Can I run hundreds of post URLs at once?
Yes on paid plans. Posts are processed in parallel; results appear in the dataset as each one completes.


Support

For Actor-specific issues, use the Issues tab on the Apify Store listing or contact the publisher through Apify.

For platform questions (runs, billing, API, schedules), see Apify documentation and Apify support.