LinkedIn Post Scraper - Post URLs & Company Page Posts
Pricing
from $7.00 / 1,000 results
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
Maintained by CommunityActor stats
0
Bookmarked
71
Total users
11
Monthly active users
3 hours ago
Last modified
Categories
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
mode | Input | What you get |
|---|---|---|
posts (default) | postUrls | The specific posts you asked for |
companyPosts | companyUrls | The 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:
| Field | Description |
|---|---|
url | Canonical post URL |
urn | urn:li:activity:{id} / urn:li:share:{id} / urn:li:ugcPost:{id} |
post_id | Numeric id (last segment of the urn) |
text | Full post body (not the truncated og:description) |
posted_relative | Relative timestamp as LinkedIn renders it (e.g. 1mo, 3d, 5h) |
edited | true if the post shows an "Edited" marker |
author_name | Author display name |
author_headline | Author tagline (job title / description) |
author_profile_url | Link to the author's profile or company page |
author_profile_image | Author avatar URL |
author_is_company | true if the author is a company page |
reactions_count | Total reactions (likes, celebrates, etc.) |
comments_count | Number of top-level comments |
reposts_count | Always null — LinkedIn does not expose this on the public embed |
media | Array of {type, url, thumbnail} for images and videos in the post |
Company-posts mode adds:
| Field | Description |
|---|---|
source | company_feed |
company_slug | The organization slug the post was collected from |
company_kind | company, showcase or school |
company_url | The organization page URL |
company_name | Organization display name |
is_repost | true when the page reshared someone else's post |
reposted_by | The organization that reshared it (empty for original posts) |
original_urn | URN 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_url | Permalink 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, sopostsPerCompanycaps 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_relativeis 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 frompost_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
Related Actors
- LinkedIn Comments & Reactions Scraper — Thirdwatch
- LinkedIn Company Employees Scraper & New Hire Monitor — Thirdwatch
- LinkedIn Profile Scraper — Thirdwatch
Last verified: 2026-09
More scrapers at thirdwatch.dev.