LinkedIn Profile Engagement Timeline Scraper avatar

LinkedIn Profile Engagement Timeline Scraper

Pricing

from $0.49 / 1,000 results

Go to Apify Store
LinkedIn Profile Engagement Timeline Scraper

LinkedIn Profile Engagement Timeline Scraper

Pull a LinkedIn profile's posts, reposts, comments, and reactions in one run, with the original post's author, text, and link attached to each activity. Needs your own LinkedIn session cookie.

Pricing

from $0.49 / 1,000 results

Rating

0.0

(0)

Developer

Dataspryva

Dataspryva

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

2 days ago

Last modified

Share

Collect a LinkedIn profile's recent public activity in one run: the posts and reposts they published, the comments they left on other people's posts, and the reactions they gave. Each record carries the target post's author, text, URL, and engagement totals, so a like or comment arrives with the context it needs.

No cookie, login, or LinkedIn account is required. The actor reads the public version of the profile page that LinkedIn serves to logged-out visitors and search engines.

What this actor does

  • Collects the three public activity tabs: Posts, Comments, and Reactions.
  • Returns one record per activity, with the target post's text, author, URL, reaction total, and comment total.
  • Opens each target post, when available, for exact dates, media, and the comment that the profile wrote.
  • Supports one or many profile URLs or usernames in a single run.
  • Filters by activity type and an optional date window.
  • Emits a diagnostic row for a profile that is private, unavailable, or returns an auth wall, instead of failing the whole run.
  • Empty fields are omitted, never returned as null or an empty string.

Output per activity

  • recordType — activity, error, or noResults
  • activityType — post, repost, comment, or reaction
  • profileName, profileUsername, inputProfileUrl — the profile that performed the activity
  • activityTimeAgo — LinkedIn's relative activity age (2w, 3mo) for posts and comments. Reposts omit it because only the original post's age is public.
  • originalPostTimeAgo — LinkedIn's relative age of the target post for posts, reposts, and reactions. Omitted for comments, whose card only shows the comment age.
  • reactedAt — exact ISO activity time when public: an original post's publish time or a matched comment time. Omitted for reactions, reposts, and comments whose time is not visible.
  • originalPostUrl, originalPostPermalink, originalPostId — canonical feed URL, the public post link, and the post ID
  • originalPostedAt — exact target-post publish time, or a timestamp decoded from the post ID when the post page is unavailable
  • originalAuthorName, originalAuthorProfileUrl, originalAuthorAvatar — the target post's author
  • originalAuthorHeadline — kept for compatibility; public pages do not expose it, so it is normally omitted
  • content — the target post's text, full when the post page is available and a preview otherwise
  • reactionsCount, commentsCount — engagement totals for the target post
  • targetPostUrl, targetAuthor — target-post context for comments, reactions, and reposts
  • commentText — the comment the profile wrote
  • commentIsReply — true when the profile replied to another comment
  • commentReactionsCount — reactions on the matched comment
  • reactionType — like when the public card explicitly says "liked this"; omitted for the generic "reacted on this" label because the exact reaction type is not public
  • mediaItems — images, video, or article attachments when the public post exposes them
  • dataSource — postPage or activityCard, showing whether page-level details were available
  • scrapedAt — when the record was collected

Input

FieldTypeDefaultDescription
profileUrlsarray—Public LinkedIn profile URLs or usernames. Required; up to 500 per run.
activityTypesarrayposts, comments, reactionsposts, comments, reactions. Posts includes reposts; comments includes replies. The legacy value shares is accepted and returned as posts/reposts.
includePostDetailsbooleantrueOpen each target post for full text, exact dates, counts, media, and comment times.
minDatestring—Keep posts and comments on or after this date. Reactions have no public event date and are kept.
maxDatestring—Keep posts and comments on or before this date. Reactions are kept.
maxActivitiesPerProfileinteger50Maximum records per profile across selected types (1–500).
maxItemsinteger500Maximum activity records for the whole run (1–10,000). Error rows do not count.

Older saved tasks that send cookie, language, or proxyConfiguration still run; those keys are ignored with a note. Legacy activityType no longer filters the run because the schema supplies the default activityTypes; set activityTypes explicitly. The old shares value is rejected by the current schema; use posts.

Example: everything public for one profile

{
"profileUrls": ["https://www.linkedin.com/in/satyanadella/"],
"activityTypes": ["posts", "comments", "reactions"],
"includePostDetails": true,
"maxActivitiesPerProfile": 50
}

Example: comments in a date window

{
"profileUrls": ["https://www.linkedin.com/in/satyanadella/"],
"activityTypes": ["comments"],
"minDate": "2026-01-01",
"maxDate": "2026-10-23",
"maxActivitiesPerProfile": 20
}

Example: reactions for a batch of profiles

{
"profileUrls": [
"https://www.linkedin.com/in/satyanadella/",
"https://www.linkedin.com/in/williamhgates/",
"adam-grant"
],
"activityTypes": ["reactions"],
"includePostDetails": false,
"maxItems": 100
}

Use cases

  • Sales and ABM research — see which topics a prospect comments on or reacts to before outreach.
  • Influencer and executive audits — compare what a leader publishes with what they engage with.
  • Competitive research — track the public posts and reactions of a competitor's team.
  • Content strategy — study the posts that draw comments and reactions from a target audience.
  • CRM enrichment — add recent public engagement signals to a contact record.

Limitations

  • Recent public activity only. A public profile page renders one pageful per tab: typically 0–9 posts, 0–3 top-level comments, and 0–9 reactions. The "See all activities" link requires a LinkedIn sign-in, so older history is not available without a login.
  • Reaction times and exact reaction types are not public. A reaction card says "liked this" or the generic "reacted on this". The actor records reactionType: "like" only for the explicit "liked this" label; for "reacted on this" it omits the field rather than guessing celebrate, love, or another type. reactedAt is omitted for all reactions.
  • Reaction cards have two labels. Both "liked this" and "reacted on this" are returned as activityType: "reaction", including when the card appears in the Posts panel.
  • Comment times are conditional. The profile page shows only a relative age. An exact comment time is filled when the comment is visible among the target post's public comments; otherwise reactedAt is omitted and activityTimeAgo remains.
  • Comment replies have no public parent-post link. They are returned with commentIsReply: true and without a target post URL.
  • Some profiles are private. LinkedIn may return an auth wall or HTTP 999 for a profile whose public visibility is restricted, or temporarily block a request. The actor retries, then emits a blocked_or_private error row for that profile. After repeated 999 responses it may retry through Apify's automatic datacenter proxy; no proxy input is requested from you.
  • Target posts can disappear. If a post was deleted or made private after the activity card was rendered, the record keeps the card data and sets dataSource: "activityCard".
  • Repost/share counts, views, reaction breakdowns, and the names of reactors are not public. Reposts themselves are returned as repost; the missing numbers are not fabricated.
  • A public profile link may return 999 to a plain HTTP client while still opening normally in a browser. That is LinkedIn's access behaviour, not a broken record.

FAQ

Do I need a LinkedIn cookie or account? No. The actor never asks you for a cookie, login, or proxy. It reads only the public profile and post pages; after repeated 999 blocks it may use Apify's automatic datacenter proxy.

Why do I get fewer rows than I asked for? LinkedIn renders a fixed recent-activity section per profile. There is no public "load more" or pagination, so the maximum is one pageful per tab even when maxActivitiesPerProfile is higher.

Why is reactedAt missing on a reaction? LinkedIn does not expose when a reaction was given. The target post's own date is in originalPostedAt and originalPostTimeAgo; they are not reaction times. reactionType is filled only when the card explicitly says "liked this".

Why is reactedAt sometimes missing on a comment? The exact comment time comes from the target post's public comment list. If the comment is not among the visible comments, only the relative activityTimeAgo is available.

Can I collect older posts or a complete history? No. The public page exposes only the recent activity section. Schedule the actor and deduplicate on originalPostId plus profileUsername to build history forward.

Can I see who reacted to a post? No. Reactor identities are visible only to signed-in LinkedIn members, so they are not part of this actor.

Why did one profile return an error row? That profile may hide its activity from logged-out visitors, may not exist, or LinkedIn may have returned a temporary 999. The row's status and error fields explain which case applied; other profiles in the same run continue.

Why do some comments have no target post? Those are replies to another comment. The public card shows the reply text and age but not the parent post link.

Is this affiliated with LinkedIn? No. This is an independent third-party actor that reads public pages. It is not operated by or affiliated with LinkedIn.