LinkedIn Profile Posts Scraper
Pricing
from $3.00 / 1,000 linkedin post scrapeds
LinkedIn Profile Posts Scraper
Scrape a person's public LinkedIn post history by profile URL: up to 1,000 posts per profile with text, date, reactions by type, comments, shares, media, hashtags and author. Date, likes and only-new filters. No login or cookies.
Pricing
from $3.00 / 1,000 linkedin post scrapeds
Rating
0.0
(0)
Developer
Khadin Akbar
Maintained by CommunityActor stats
0
Bookmarked
69
Total users
18
Monthly active users
2 days ago
Last modified
Categories
Features
Share
LinkedIn Profile Posts Scraper — Full Post History by Profile URL
Get a person's public LinkedIn posts from their profile URL: up to 1,000 posts per profile, newest first, each with full text, date, reactions (total and by type), comments, shares, images, video, articles, hashtags and mentions. No LinkedIn login, no cookies. Works with the Apify API, schedules and MCP agents.
What you get and why it matters
| You send | You get | Why it helps |
|---|---|---|
One or more linkedin.com/in/... URLs or bare handles | One row per post: text, date, reactions, comments, shares, media, hashtags, mentions, post type, repost flag, author name and headline | Track what founders, prospects and creators publish and which posts get traction |
| Optional filters | Only posts from the last N days, with at least N reactions or comments, only new since your last run, authored posts only | Pay only for the posts you actually keep |
Posts are fetched 100 at a time and up to five profiles run at the same time, so a 100-profile list finishes in minutes. Duplicates, filtered posts, empty or private profiles and failed lookups are never billed.
Data fields
| Field | Meaning |
|---|---|
postUrl, postId, publishedAt | Link, ID and publish time |
text, hashtags, mentions | Full post text, hashtags and tagged people/companies |
reactionCount, likeCount, reactionTypes | Total reactions, likes, and counts per reaction type |
commentCount, shareCount, engagementCount | Comments, reposts and the sum of all engagement |
postType | text, image, video, article, document or repost |
mediaUrl, imageUrls, videoUrl, articleUrl, documentTitle | Attached media and links |
isRepost, repostOriginalUrl | Whether the row is a repost and what was reposted |
authorName, authorHeadline, profileUrl | The profile owner |
dataDepth | full (complete post with counts). preview marks a thin fallback row with no counts, used only if the full source is unavailable |
What it costs
Pay per event plus Apify platform usage. Events: Actor start ($0.00005), each post saved, and (from 2026-12-06) a small fee once for each profile that returns posts. Duplicates, filtered posts, empty or private profiles and failures are never charged.
| Until 2026-12-06 | From 2026-12-06 (Free plan; Bronze, Silver and Gold plans pay less per post) | |
|---|---|---|
| Per post saved | $0.003 | $0.0012 (Bronze $0.00108, Silver $0.00096, Gold and above $0.0009) |
| Once per profile that returns posts | none | $0.0125 |
| Example run | Until 2026-12-06 | From 2026-12-06 (Free plan) |
|---|---|---|
| One profile, latest 20 posts | about $0.06 | about $0.037 |
| One profile, 100 posts | about $0.30 | about $0.133 |
| 25 profiles, 40 posts each | up to about $3.00 | up to about $1.51 |
Set Maximum posts per profile and the run's total cost limit to cap spending. The live Pricing tab always shows the current prices. Run time is about 7 seconds per 100 posts per profile.
What's new
- 2026-12-06: lower per-post price with Bronze/Silver/Gold discounts and a small once-per-profile fee (see What it costs).
- 2026-11-11: full post history (up to 1,000 posts per profile) with reaction counts in every row; five profiles at a time; date, minimum reactions/comments and only-new filters; hashtags, mentions, post type, video and article fields; time-limit safe finish (partial results are kept and billed only for saved rows).
Input
| Field | Use |
|---|---|
profileUrls | Profile URLs or handles, one per line |
maxPostsPerProfile | 1–1,000, default 20 |
postedAfter, maxAgeDays | Date limits; paging stops when a whole page is older |
minReactions, minComments | Keep only posts above these counts |
authoredOnly, includeReposts | Choose authored posts only, or drop reposts |
onlyNewPosts | Return only posts newer than the last run with this option on, for scheduled monitoring |
outputMode | full or compact (smaller rows for agents) |
Example input:
{"profileUrls": ["https://www.linkedin.com/in/williamhgates/", "satyanadella"],"maxPostsPerProfile": 50,"maxAgeDays": 90,"minReactions": 100,"outputMode": "compact"}
Use with AI agents (MCP)
Exact Actor: khadinakbar/linkedin-profile-posts-scraper. Give an agent one or more profile URLs; it receives flat rows plus a run summary (OUTPUT) with outcome (COMPLETE, PARTIAL, VALID_EMPTY, UPSTREAM_FAILED, INVALID_INPUT), counts and stop reason.
Get the last 30 days of posts from this LinkedIn profile, keep only posts with 50+ reactions, and summarize the main topics and what drove engagement.
API example
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('khadinakbar/linkedin-profile-posts-scraper').call({profileUrls: ['https://www.linkedin.com/in/williamhgates/'],maxPostsPerProfile: 100,maxAgeDays: 30,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items.length, items[0]);
Honest limits
- Public posts only; private profiles, deleted posts and anything behind a login are not returned.
- Counts are those shown on LinkedIn when the post was read.
- It returns what LinkedIn shows publicly for the profile; a person with 12 public posts returns 12 rows.
- If the full source is unavailable, the Actor falls back to a thin preview (up to 5 posts, no counts,
dataDepth: preview) instead of failing. - Not a comment, member or follower scraper.
Pick the right Actor
| Job | Actor |
|---|---|
| One person's full post history with engagement | This Actor |
| Quick recent posts for a long list of people | LinkedIn Batch Profile Posts Scraper |
| Posts by keyword, company feed or exact post URL | LinkedIn Posts Scraper |
| A company page's posts | LinkedIn Company Posts Scraper |
| Profile details and contact data | LinkedIn Profile Details Scraper |
FAQ
Can I pass a bare handle instead of a URL?
Yes. williamhgates is expanded to the full /in/ URL.
How many posts can I get?
Up to 1,000 per profile, newest first. Use the date or reaction filters to fetch fewer.
Am I billed for posts that fail my filters?
No. Only posts saved to the dataset are billed. Duplicates, filtered posts, empty profiles and failed lookups are free.
What if a run stops early?
Before the time limit the Actor stops starting new work, keeps every saved row and reports PARTIAL with profilesNotProcessed. Rerun the missing profiles.
Can I monitor new posts on a schedule?
Yes. Turn on onlyNewPosts and schedule the run; each run returns and bills only posts newer than the last one.
Does it return comments or who reacted?
No, it returns comment and reaction counts. It is not a comment or reactor scraper.
Responsible use
Use this Actor only for publicly available information, in line with applicable law, platform terms and the rights of the people whose posts you collect. Do not use it for harassment, unlawful profiling or spam, and handle personal data in line with privacy rules such as GDPR. This Actor is not affiliated with or endorsed by LinkedIn.