LinkedIn Profile Posts Scraper
Pricing
from $1.35 / 1,000 posts
LinkedIn Profile Posts Scraper
Posts from any LinkedIn person's public profile: text, exact publication time, reactions, comment counts, media and repost source. No login, no cookie. About a dozen recent posts per person, date and reaction filters so a repeat run only pays for what is new. Comment text optional.
Pricing
from $1.35 / 1,000 posts
Rating
0.0
(0)
Developer
Stable
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Paste LinkedIn profile addresses — satyanadella, linkedin.com/in/reidhoffman
— and get each person's recent posts as CSV, Excel or JSON: text, engagement,
media, repost source and the exact minute each one was published. No LinkedIn
account, no cookie, nothing to install.
{ "profiles": ["satyanadella", "reidhoffman"], "maxPostsPerSource": 12 }
Unofficial. This Actor is not affiliated with, endorsed by or sponsored by LinkedIn or Microsoft. It reads only publicly available pages, does not log in and does not bypass any access control. All product names and trademarks belong to their respective owners.
What one row looks like
From a real run, unedited:
{"postId": "7505114604155322368","postUrl": "https://www.linkedin.com/feed/update/urn:li:activity:7505114604155322368/","postedAt": "2026-09-14T04:05:59Z","sourceType": "profile","sourceKey": "satyanadella","text": "Great example from Jeff Hollan showing how Foundry makes long-running agents enterprise-ready, starting with business outcomes and building security, safety guardrails, auditability, and FinOps into the system from the start, across the entire multi-agent, multi-model workflow.","textLength": 278,"reactions": 868,"comments": 121,"topReactions": "LIKE, PRAISE, EMPATHY","authorName": "Satya Nadella","authorUrl": "https://www.linkedin.com/in/satyanadella","authorType": "person","isRepost": false,"mediaType": "image","mediaUrl": "https://media.licdn.com/dms/image/v2/D5605AQG49bxsEGAXHw/videocover-high/…"}
The publication time is exact on every row
postedAt is a real timestamp — 2026-09-14T04:05:59Z — on every post.
LinkedIn's public profile prints 1w and 2mo, never a date, so a column
built by reading the page cannot be sorted or grouped. This one is recovered
from the post itself and checked, wherever LinkedIn does print a time, against
theirs; on those posts they agree to the second.
That is what lets you ask "how often does this person post", "what did they publish the week of the launch", or "which weekday gets them the most reactions" — from a spreadsheet, without opening a single post.
Fields
29 columns across a run; 12 on every row, the rest present when the post has them.
| Field | What it is |
|---|---|
postId · postUrl | The post's id, and a link that opens it |
postedAt | Exact publication time, ISO 8601, UTC |
postedAtSource | LinkedIn's own printed time, where it prints one — for checking the column above |
text · textLength | The post body, and its length |
reactions · comments | LinkedIn's own totals |
topReactions | Which reactions, most used first: LIKE, PRAISE, EMPATHY, INTEREST, ENTERTAINMENT, APPRECIATION |
authorName · authorHeadline · authorUrl · authorType | Who wrote it, and whether that is a person or a company |
isRepost | Whether this is somebody else's content the person reshared |
repostedByName | The person who reshared it, when they are not the author |
repostId · repostedAt | The reshare's own id and time, which differ from the original's |
quotedAuthorName · quotedAuthorUrl · quotedText | The post being quoted, when this one quotes another |
mediaType | video, image, link or empty |
mediaUrl · mediaUrls · thumbnailUrl | Direct links to what is attached |
linkUrl · linkTitle | The shared link and its headline |
commentsFetched · commentList | Comment text, author, time and likes — when you turn comments on |
sourceType · sourceKey | Which of your inputs this row came from |
scrapedAt | When this row was read |
A repost names both people
If a person reshares a colleague's post, authorName is the colleague who
wrote it and repostedByName is the person whose profile you asked about. If a
post quotes another post, authorName wrote the commentary and
quotedAuthorName wrote what is being commented on. "Who wrote this" and "who
chose to share it" are different questions and they stay different columns.
Filters, and why they are the cheap part
Every filter is decided before a row is stored, so a post a filter drops costs you nothing — no charge, and no second request for its comments.
| Filter | Use |
|---|---|
postedAfter · postedBefore | Both bounds include the day you name |
minReactions · minComments | Against LinkedIn's own totals |
skipReposts | Only what they wrote themselves |
onlyWithText | Drops a bare reshare with no words of its own |
postedAfter is the one that pays for itself. Set it to your last run's date
and a weekly check over fifty people costs the posts that are new, not the
whole window every time.
Recipes
- Watch the people who matter to you. Fifty profiles,
postedAfter= last Monday, on a weekly schedule: one table of what your prospects, customers or competitors' executives said this week. - Study a thought leader. One profile,
skipRepostson, sort byreactions: which topics and whichmediaTypeearn the most. - Find who engages with someone. Turn
includeCommentson for the posts that clearedminReactions— commenter names and profile links come back. - Build a content calendar benchmark. Twenty profiles in your niche, group
postedAtby weekday and hour. - Re-read one post. Paste its link into
postUrlsto refresh its counts or pull its comments on their own.
What it costs
Pay per event, and there are exactly two:
| Event | What it is | GOLD, per 1,000 |
|---|---|---|
| Post | One stored post, all its columns | $1.35 |
| Post with comments | The extra request that fetches comment text | $1.35 |
Comments are charged once per post, not once per comment. Turning comments off — the default — means that event never fires.
| Plan | Per 1,000 posts |
|---|---|
| Free | $2.00 |
| Bronze | $2.00 |
| Silver | $1.70 |
| Gold · Platinum · Diamond | $1.35 |
A run over three people is 3 requests and about 10 seconds for 36 posts. Apify's $5 of monthly free credit is roughly 2,500 posts on the free plan, or about 1,250 with comments on.
Limits
Said plainly, because they are properties of what LinkedIn shows the public and no scraper can talk them away.
- About a dozen recent posts per person. A public profile shows a fixed
window and offers no way to ask for more. For the full history you would
need a signed-in session, which this Actor does not use and does not ask for.
Run it on a schedule with
postedAfterand the history accumulates. - Comments are the ones a signed-out visitor sees — usually the first
handful, not all of them. The full count is in
commentson every row regardless, andcommentsFetchedsays how many actually came back. - No reactor list. Counts and the top reaction types, not the names of the people who reacted.
- Long-form articles are not posts. A person's
/pulse/articles are a different content type with no exact timestamp and are left out. - A profile that hides its activity from visitors comes back empty, is named in the run summary and is never charged for.
- Free-plan users get everything the paid plans do, at the Free rate above, until their platform credit runs out; the run then stops cleanly and keeps what it collected.
Output
CSV, Excel, JSON, XML or the API. Four ready-made views: Posts (what was
said), Engagement (how it did), Authors (who said it) and Media.
Every run also writes a RUN_SUMMARY with what was stored, what was filtered
out and why, and how much traffic it used.
FAQ
Do I need a LinkedIn account or cookie?
No. This reads the pages LinkedIn serves to a visitor who is not signed in. There is no field to paste a session into, and nothing about your account is involved.
How much does it cost to scrape 1,000 people's latest posts?
About 12 posts each is 12,000 rows: $16.20 on Gold, $24.00 on the Free plan. With comment text on, double it.
Can I get everything a person has ever posted?
No, and no listing that reads the public profile can: it shows about a dozen
recent posts. This one says so, and a weekly run with postedAfter builds the
history from here on.
Does it work for company pages too?
Yes — paste a company address into the same field and up to 70 posts come back with the same columns. There is a separate listing built around company pages if that is your main use.
What happens on a profile that does not exist?
It is reported in the run summary by name and not charged for.