LinkedIn Post Scraper - Download a Profile's Posts and Reposts avatar

LinkedIn Post Scraper - Download a Profile's Posts and Reposts

Pricing

from $0.75 / 1,000 posts

Go to Apify Store
LinkedIn Post Scraper - Download a Profile's Posts and Reposts

LinkedIn Post Scraper - Download a Profile's Posts and Reposts

Paste LinkedIn profile links or names and download each person's posts and reposts as rows: text, date, likes, comment count, pictures, video links and hashtags, with optional post details and comments. Read as LinkedIn shows them to signed-out visitors.

Pricing

from $0.75 / 1,000 posts

Rating

0.0

(0)

Developer

Dami's Studio

Dami's Studio

Maintained by Community

Actor stats

0

Bookmarked

11

Total users

4

Monthly active users

14 hours ago

Last modified

Security

Limited permissions

Share

LinkedIn post scraper: paste profile links or names and download each person's posts and reposts as rows, with the text, date, likes, comment count, pictures, video links and hashtags, plus the post's comments if you want them.

You give it LinkedIn profile links, or just the name at the end of each link. You get that person's newest posts first, one row per post, as LinkedIn shows them to someone who is not signed in.

It reads public posts only. A profile LinkedIn does not serve to the run comes back as a free row saying so, and you pay only for posts that come back.

InputLinkedIn profile links (linkedin.com/in/...) or profile names such as williamhgates
OutputOne row per post: text, date, likes, comment count, pictures, video link, hashtags, links, author; post details and comments on request
Ceiling500 profiles per run, 100 posts per profile
Account neededNone from you
Price$0.75 per 1,000 posts, the same rate on every plan. The free plan's $5 a month covers about 6,600
Using an AI agent?
Actordami_studio/linkedin-profile-posts-scraper
Set one fieldprofileUrls, labelled "Profile links or names" in the Console
Cap the billmaxTotalChargeUsd on the run, for example 0.10: it never charges past that
MCP, one linkhttps://mcp.apify.com/?tools=fetch-actor-details,dami_studio/linkedin-profile-posts-scraper
How oftenDaily or weekly, to follow what a list of people post

🔍 What LinkedIn Profile Posts Scraper does

It opens each person's public profile, reads the posts and reposts listed there, then looks up more of that person's public posts until it has the number you asked for. Every row is one post with its text, the date it was published, its likes and comment count, its pictures and links.

Reposts come with the original author's name and link, so you can tell a person's own words from what they shared. Turn reposts off to keep only their own posts.

Two switches add more:

  • Add post details opens each post's own page for its title, every picture, a video link and length, the linked article, and the author's follower count.
  • Add comments adds the comments each post's public page shows, up to 10 per post, each with the commenter's name, text, date and likes. Paid per comment.

📋 What data you get from each LinkedIn post

What you getField
The postpostUrl, activityId, kind (post or repost), text, title
WhenpublishedAt, postedAgo
Reactionslikes, commentsCount
Media and linksimageUrls, videoUrl, videoDuration, mediaType, articleTitle, articleSubtitle, links, hashtags
Who wrote itauthorName, authorUrl, authorIsProfile, authorFollowers, authorImageUrl
Comments (paid add-on)comments (author, authorUrl, text, publishedAt, likes)
Where it came fromprofileUrl, inputUrl, detailsRead, scrapedAt

▶️ How to scrape LinkedIn posts

  1. Open LinkedIn Profile Posts Scraper and click Try for free.
  2. Paste profile links or names into Profile links or names, one per line.
  3. Set Most posts per profile, and a date window under Posted within if you only want recent posts.
  4. Turn on Add post details or Add comments if you need them, then click Start.
  5. Download the rows as JSON, CSV or Excel, or read them from the API.

Leave the list empty and you get one free sample row showing the shape of the output, with nothing read.

💰 How much does it cost to scrape LinkedIn posts?

$0.75 per 1,000 posts, which is $0.00075 each, the same rate on every plan, with or without post details. On the free plan, the $5 Apify gives you each month covers about 6,600 posts.

Comments cost $0.56 per 1,000 comments, charged for each comment returned.

Free rows are never charged: a profile that was not served, a profile with no post in your date window, an entry that is not a profile, the sample row, and the row that says the run stopped at your time or cost limit.

📥 What you give it

{
"profileUrls": ["https://www.linkedin.com/in/williamhgates"],
"maxPostsPerProfile": 10,
"postedLimit": "month",
"includeReposts": true,
"includePostDetails": false,
"includeComments": false
}
FieldDefaultWhat it is
profileUrlsnone, the form starts with one exampleUp to 500 profile links or names. A company page is refused with a free row.
maxPostsPerProfile101 to 100, newest first.
postedLimitanyany, 24h, week, month, 3months, 6months or year.
postedAfternoneA day as YYYY-MM-DD. When set, it replaces postedLimit. Any other format is refused before anything runs.
includeRepoststrueOff keeps only the person's own posts.
includePostDetailsfalseOpens each post's page for the details above. Slower, same price.
includeCommentsfalseAdds up to 10 comments per post. Paid per comment.

📤 What you get back

A real row from a run on 7 November 2026 with comments on. The text and the comment list are cut short, and the commenter's name is shortened here:

{
"ok": true,
"recordType": "post",
"profileUrl": "https://www.linkedin.com/in/williamhgates",
"kind": "post",
"postUrl": "https://www.linkedin.com/posts/williamhgates_bad-news-isnt-the-only-news-bill-gates-activity-7524574266554605568-I338",
"activityId": "7524574266554605568",
"authorName": "Bill Gates",
"authorUrl": "https://www.linkedin.com/in/williamhgates",
"authorIsProfile": true,
"text": "The challenges we face today are tough. But I try to remember that we've cut child deaths by more than half since the turn of the century…",
"title": "The challenges we face today are tough.",
"publishedAt": "2026-11-06T20:51:44.975Z",
"postedAgo": "20h",
"likes": 880,
"commentsCount": 134,
"mediaType": "image",
"articleTitle": "Bad news isn't the only news | Bill Gates",
"articleSubtitle": "gatesnotes.com",
"links": ["https://lnkd.in/evkxp6Je"],
"authorFollowers": 40797849,
"detailsRead": true,
"comments": [
{
"author": "C. P.",
"text": "Cancer vaccines sound promising (pending side effects)…",
"publishedAt": "2026-11-06T21:06:04.619Z",
"likes": 2
}
],
"scrapedAt": "2026-11-07T17:12:24.886Z"
}
FieldRead it like this
kindpost is the person's own post; repost is someone else's post they shared, and authorName is the original author
publishedAtWhen the post was published. On a repost it is the original post's date
postedAgoLinkedIn's own "20h", "3w", "1y", when the profile page shows one
likes, commentsCountAs counted when the run read them
title, mediaType, videoUrl, authorFollowersOnly with post details or comments on, otherwise not in the row
Picture and video linksLinkedIn's own links. They stop working after a while, so save the file if you need it

🧾 Reading the output

Every real row has ok: true and recordType: "post". Rows with ok: false are free notes, one per profile that gave no posts, with errorCode and error saying why:

errorCodeWhat happened
NOT_SERVEDThe profile was not served this run. Re-run it later. A misspelled name ends here too
NO_RESULTSThe profile shows no post, or none in your date window
BAD_INPUTThe entry is not a person's profile link or name, or the date is not YYYY-MM-DD
TIME_LIMITThe run reached its time limit; notRead lists the profiles it did not get to
COST_LIMITThe run reached the maximum cost you set; notRead lists the rest

An empty run returns one sample row with _sample: true. To keep only real posts, filter on ok being true. The Comments view lists one comment per line and the Notes view lists the free rows.

💡 What people use it for

  • Sales and partnership teams watching what a list of prospects or partners post, to start a conversation on something real.
  • Recruiters reading what candidates write about their work before a call.
  • Brand and PR teams following executives' posts and how much engagement each one gets.
  • Researchers collecting the public posts of a group of people over a date range.

A simple chain: take the profile links of your prospects from a CRM export, run them here weekly with Posted within set to week, then sort by likes to see what landed.

🚧 What it does not do

  • No company pages. For a company's posts, use LinkedIn Company Posts Scraper.
  • No list of who liked a post.
  • No e-mail addresses or phone numbers.
  • Nothing from inside a LinkedIn account: no messages, no private posts, nothing only signed-in members see.
  • It is not an official LinkedIn tool. Dami's Studio is independent and is not affiliated with or endorsed by LinkedIn, or by any other company named on this page.

🧭 Which LinkedIn scraper do you need?

If you wantUse
A person's posts and repostsThis one
The posts a company page publishesLinkedIn Company Posts Scraper
A company's size, industry and headquartersLinkedIn Companies Scraper
Job listingsLinkedIn Jobs Scraper

❓ Questions people ask

Do I need a LinkedIn account to scrape posts?

No. You don't need a LinkedIn account, a cookie or a login. The actor reads the public profile and post pages LinkedIn shows to anyone who opens the link.

Why did I get fewer posts than I asked for?

The run returns the posts it can find publicly for that person, newest first, up to your number. Someone who posts rarely, or a date window that is short, gives fewer rows. You pay only for the rows you get.

Why do the like and comment counts differ from what I see on LinkedIn?

They are counted at the moment the run reads the post, and they keep moving. A signed-in view can also show a little more than a visitor sees. Open the post in a private browser window to compare.

Can I call it from code or an AI assistant?

Yes. The API tab has ready-made calls, and AI assistants can use it through Apify's MCP server at https://mcp.apify.com/?tools=fetch-actor-details,dami_studio/linkedin-profile-posts-scraper. In Python:

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("dami_studio/linkedin-profile-posts-scraper").call(
run_input={"profileUrls": ["williamhgates"], "maxPostsPerProfile": 10},
max_total_charge_usd=0.05,
)
for row in client.dataset(run["defaultDatasetId"]).iterate_items():
if row.get("ok") is False:
continue
print(row["publishedAt"], row["likes"], row["text"][:80])

The actor reads public posts the way a signed-out visitor sees them, with no account and nothing private. Posts and comments carry personal data, so GDPR and similar laws apply to what you keep and how you use it: keep only what you need, and mind the rules on contacting people. LinkedIn's own terms still apply to what you do with the data. Apify has a good write-up on the legality of web scraping. We are not lawyers, and this is not legal advice.

🆘 If something breaks

Open an issue on the actor's Issues tab. Include the run ID and the profile link that went wrong, and we will look at it.