LinkedIn Post Scraper - Post URLs & Company Page Posts avatar

LinkedIn Post Scraper - Post URLs & Company Page Posts

Pricing

from $7.00 / 1,000 results

Go to Apify Store
LinkedIn Post Scraper - Post URLs & Company Page Posts

LinkedIn Post Scraper - Post URLs & Company Page Posts

Scrape LinkedIn posts without login — post text, author, timestamp, reactions, comments, media, and repost attribution. Works on post URLs and company pages.

Pricing

from $7.00 / 1,000 results

Rating

0.0

(0)

Developer

Thirdwatch

Thirdwatch

Maintained by Community

Actor stats

0

Bookmarked

71

Total users

11

Monthly active users

3 hours ago

Last modified

Share

LinkedIn Post Scraper

Thirdwatch portfolio: 8,800+ users across 140+ public Actors, 2M+ records delivered, >95% run success. Explore all Thirdwatch Actors.

What you get

Extract structured data from public LinkedIn posts — either by post URL, or by company page. Pure HTTP — no browser, no login, no cookies required.

Two modes

modeInputWhat you get
posts (default)postUrlsThe specific posts you asked for
companyPostscompanyUrlsThe latest updates published on a LinkedIn company / showcase / school page, including its reposts

Leave mode empty and the actor infers it from whichever input you filled in.

What it does

Both modes return the same record shape:

FieldDescription
urlCanonical post URL
urnurn:li:activity:{id} / urn:li:share:{id} / urn:li:ugcPost:{id}
post_idNumeric id (last segment of the urn)
textFull post body (not the truncated og:description)
posted_relativeRelative timestamp as LinkedIn renders it (e.g. 1mo, 3d, 5h)
editedtrue if the post shows an "Edited" marker
author_nameAuthor display name
author_headlineAuthor tagline (job title / description)
author_profile_urlLink to the author's profile or company page
author_profile_imageAuthor avatar URL
author_is_companytrue if the author is a company page
reactions_countTotal reactions (likes, celebrates, etc.)
comments_countNumber of top-level comments
reposts_countAlways null — LinkedIn does not expose this on the public embed
mediaArray of {type, url, thumbnail} for images and videos in the post

Company-posts mode adds:

FieldDescription
sourcecompany_feed
company_slugThe organization slug the post was collected from
company_kindcompany, showcase or school
company_urlThe organization page URL
company_nameOrganization display name
is_reposttrue when the page reshared someone else's post
reposted_byThe organization that reshared it (empty for original posts)
original_urnURN of the underlying content object (data-attributed-urn). On a repost this is the post that was reshared; on an original post it is that post's own content URN
original_urlPermalink built from original_urn

On a repost, author_name / author_profile_url are the original author — the resharing organization only ever appears in reposted_by, so a reshare is never mistaken for the company's own writing.

Accepted URL formats

The actor accepts any of:

https://www.linkedin.com/posts/{user}_{slug}-activity-{id}-{hash}
https://www.linkedin.com/feed/update/urn:li:activity:{id}/
https://www.linkedin.com/feed/update/urn:li:share:{id}/
https://www.linkedin.com/feed/update/urn:li:ugcPost:{id}/
urn:li:activity:{id}

Query strings (e.g. ?actorCompanyId=...) are stripped automatically.

Input

Post-URL mode:

{
"mode": "posts",
"postUrls": [
"https://www.linkedin.com/feed/update/urn:li:activity:7444032259956903936/",
"https://www.linkedin.com/feed/update/urn:li:share:7441772941413085184/"
],
"maxPosts": 10
}

Company-posts mode:

{
"mode": "companyPosts",
"companyUrls": [
"https://www.linkedin.com/company/microsoft/",
"stripe",
"https://www.linkedin.com/showcase/microsoft-health/"
],
"postsPerCompany": 25,
"maxPosts": 50,
"repostsOnly": false,
"includeReposts": true
}

companyUrls accepts full organization URLs on any country subdomain (/company/, /showcase/, /school/) or bare slugs.

Reposts

Set repostsOnly: true to return only what the page reshared, each row carrying reposted_by, original_urn and original_url. Set includeReposts: false for the opposite — only the page's own original posts.

Output (per post)

{
"url": "https://www.linkedin.com/feed/update/urn:li:activity:7444032259956903936/",
"urn": "urn:li:activity:7444032259956903936",
"post_id": "7444032259956903936",
"text": "LinkedIn is currently chock-a-block with AI hype...",
"posted_relative": "1mo",
"edited": true,
"author_name": "Saranya Balachandran",
"author_headline": "Content Marketer & Strategist...",
"author_profile_url": "https://in.linkedin.com/in/saranya-balachandran-69443720",
"author_profile_image": "https://media.licdn.com/...",
"author_is_company": false,
"reactions_count": 27,
"comments_count": 5,
"reposts_count": null,
"media": [
{"type": "image", "url": "https://media.licdn.com/...", "thumbnail": ""}
]
}

Limitations

  • No logged-out pagination on company pages. LinkedIn server-renders roughly 10–12 recent updates per organization page to logged-out visitors, and ignores ?start= / ?page=; /company/{slug}/posts/ redirects to the login wall. That window is the honest public ceiling, so postsPerCompany caps the result, it does not fetch deeper. Scale by supplying more company pages, or re-run on a schedule to accumulate history.
  • Reposts of a given post are not available. LinkedIn exposes no public reshare list for a post URN (/feed/update/{urn}/reshares/ is a 404 shell). This actor answers the reverse, public question: which posts an organization page reshared, and from whom.
  • Comment text is not returned. Pulling individual comments requires a logged-in session; this actor stays purely public.
  • Reposts count is null. LinkedIn does not expose it on the public embed page.
  • posted_relative is a relative string, not an ISO timestamp. The public embed exposes only the rendered "1mo" / "3d" form. If you need an absolute timestamp, derive it client-side from post_id (LinkedIn ids encode the creation millisecond in the upper bits) or from your scrape time minus the relative interval.

Failure honesty

An empty dataset is never used to hide a block. If LinkedIn answered and the post is deleted or private, the run succeeds with no row for it. If the actor never reached LinkedIn for a single input — every attempt blocked or auth-walled — the run fails with a status message saying so.

Use cases

  • Marketers monitoring social presence and engagement
  • Researchers building social-media datasets
  • Teams tracking public figures and trends

Last verified: 2026-09

More scrapers at thirdwatch.dev.