Linkedin Profile Posts Scraper avatar

Linkedin Profile Posts Scraper

Pricing

from $1.00 / 1,000 results

Go to Apify Store
Linkedin Profile Posts Scraper

Linkedin Profile Posts Scraper

Scrape structured LinkedIn posts from one or more public profile URLs.

Pricing

from $1.00 / 1,000 results

Rating

0.0

(0)

Developer

API ninja

API ninja

Maintained by Community

Actor stats

0

Bookmarked

11

Total users

11

Monthly active users

3 days ago

Last modified

Categories

Share

What does LinkedIn Profile Posts Scraper do?

LinkedIn Profile Posts Scraper collects posts from one or more LinkedIn profiles and turns the deeply nested response into a clean, analysis-ready dataset. Add a list of LinkedIn profile URLs, choose how many posts you need, and start the Actor—no cookies, browser automation, or LinkedIn login input is required.

Use the normalized table for everyday work, or open the complete rawData object when you need every field returned by the source. Running on the Apify platform also gives you API access, scheduling, run monitoring, cloud datasets, webhooks, and integrations with tools such as Google Sheets, Make, and Zapier. Apify proxy rotation is available for Actors that need direct web access; this Actor uses an API-backed workflow and therefore does not expose proxy settings.

The Actor can extract:

  • 👤 Author name, headline, LinkedIn URL, profile ID, and public identifier
  • ✍️ Complete post text, post URL, visibility, and repost status
  • 🕒 Publication timestamp, relative publication text, and edited status
  • 👍 Reactions, reaction breakdown, comments, shares, views, and impressions when available
  • 🖼️ Images and the highest-resolution media preview available
  • 🎬 Video URLs, thumbnails, duration, and caption files when available
  • 📄 Article and document titles, descriptions, links, covers, and page counts
  • #️⃣ Hashtags, outbound links, post URNs, and activity URNs
  • 🧰 The original unmodified post response under rawData

Why use LinkedIn Profile Posts Scraper?

Manually reviewing profile activity is slow, and raw LinkedIn post responses are difficult to use in spreadsheets or analytics tools. This Actor handles profile-ID resolution, pagination, retries, normalization, and dataset storage for you.

Common use cases include:

  • Content research: understand which topics and formats a creator publishes.
  • Engagement analysis: compare reactions, comments, and shares across posts or profiles.
  • Influencer discovery: evaluate relevant authors before outreach or partnerships.
  • Competitive intelligence: monitor the public content of founders, executives, and industry experts.
  • Lead enrichment: add recent public activity to an existing research workflow.
  • Content inspiration: identify recurring themes, hashtags, articles, videos, and high-performing formats.
  • Automation: schedule recurring runs and send new datasets to your database, spreadsheet, webhook, or data warehouse.

How to scrape LinkedIn profile posts

  1. Open the Actor in Apify Console and select Try for free or Start.
  2. In the Input tab, add one or more LinkedIn profile URLs. Use URLs in the form https://www.linkedin.com/in/username.
  3. Set Maximum posts per profile to the number of posts you want from each profile.
  4. To collect every post the source makes available, enable Parse all posts. This ignores the numeric limit and may make the run longer.
  5. Click Start and wait for the run to finish.
  6. Open the Dataset or Output tab. Use the clean LinkedIn profile posts view for the most useful columns, or inspect rawData in the All fields view.
  7. Download the results or connect the dataset to another service.

The Actor processes profiles independently. If one URL cannot be resolved, it logs the error and continues with the remaining profiles. Failed requests and responses with an unexpected structure are retried up to three times with a one-second delay.

Input

Configure these fields in the Actor's Input tab:

FieldTypeDefaultDescription
profileUrlsArray of stringsExample profile URLLinkedIn profile URLs to scrape. At least one URL is required. Empty and duplicate entries are removed.
maxPostsInteger100Maximum posts saved for each profile. Must be at least 1. Ignored when parseAll is enabled.
parseAllBooleanfalseContinues through all pages made available by the source.

LinkedIn profile scraper input example

{
"profileUrls": ["https://www.linkedin.com/in/jamesmcmaster", "https://www.linkedin.com/in/linasbeliunas"],
"maxPosts": 50,
"parseAll": false
}

The limit applies per profile, not to the whole run. With two profiles and maxPosts set to 50, the Actor can save up to 100 posts in total.

Output

Each dataset item represents one LinkedIn post. The default overview emphasizes the fields most useful for review and export, while rawData retains the complete source object for advanced use cases.

LinkedIn post dataset example

{
"requestedProfileUrl": "https://www.linkedin.com/in/linasbeliunas",
"requestedProfileId": "urn:li:fsd_profile:ACoAABbscnUBlKacJbEN5USrYdfhVdH-ffYINJk",
"authorName": "Linas Beliūnas",
"authorHeadline": "Daily Intelligence on Finance & AI",
"authorPublicIdentifier": "linasbeliunas",
"authorUrl": "https://www.linkedin.com/in/linasbeliunas",
"postText": "NVIDIA co-founder & CEO Jensen Huang's LinkedIn is a next-level flex...",
"postUrl": "https://www.linkedin.com/posts/linasbeliunas_example-activity-7503894264981114880",
"postType": "IMAGE",
"publishedAt": "2026-09-10T19:16:48.385Z",
"publishedText": "1 hour ago",
"isEdited": false,
"isRepost": false,
"visibility": "PUBLIC",
"reactions": 89,
"reactionBreakdown": {
"LIKE": 80,
"EMPATHY": 7,
"APPRECIATION": 1,
"INTEREST": 1
},
"comments": 15,
"shares": 2,
"mediaPreviewUrl": "https://media.licdn.com/example-image.jpg",
"imageUrls": ["https://media.licdn.com/example-image.jpg"],
"hashtags": [],
"contentLinks": [],
"activityUrn": "urn:li:activity:7503894264981114880",
"rawData": {
"actor": {},
"updateMetadata": {},
"content": {},
"commentary": {},
"socialDetail": {}
}
}

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel. You can also access it through the Apify API, stream it into another Actor, or send it to an integration.

LinkedIn profile posts data table

FieldDescription
authorNameDisplay name of the post author.
authorHeadlineAuthor's professional headline or occupation.
authorUrlLink to the author's LinkedIn profile.
authorPublicIdentifierPublic LinkedIn profile identifier.
postTextFull available text of the post.
postUrlDirect link to the LinkedIn post.
postTypeDetected type: TEXT, IMAGE, VIDEO, ARTICLE, DOCUMENT, or CAROUSEL.
publishedAtPublication time derived from the LinkedIn activity URN.
publishedTextHuman-readable relative time returned by the source.
reactionsTotal reaction count when available.
reactionBreakdownCounts grouped by LinkedIn reaction type.
commentsTotal comment count when available.
sharesTotal share count when available.
mediaPreviewUrlBest available image, video thumbnail, article image, or document cover.
mediaUrlDirect media, article, or document URL when available.
hashtagsUnique hashtags found in the post text.
contentLinksUnique HTTP links found in the post text.
rawDataComplete unmodified post object returned by the source API.

Some fields are content-specific. For example, video posts may include videoUrl, videoDurationSeconds, and captionUrls, while article posts may include articleTitle, articleDescription, and articleUrl.

How much does it cost to scrape LinkedIn profile posts?

The exact run price is shown in the Actor's Pricing tab and depends on the pricing model active when you run it. If your Apify plan includes platform credits or a free usage allowance, eligible runs draw from that balance according to the current plan terms.

This Actor uses lightweight HTTP requests rather than a browser, which keeps compute usage low. For each profile, it normally makes one profile lookup request plus approximately one posts request per page of results. Your final cost therefore depends mainly on:

  • The number of profile URLs
  • The number of posts available for each profile
  • Whether Parse all posts is enabled
  • The current Actor and Apify plan pricing

For predictable test runs, begin with one profile and a small maxPosts value. Review the run cost in Apify Console before scaling to larger lists. Avoid enabling parseAll unless you genuinely need the complete available history.

Tips and advanced options

Improve LinkedIn scraping reliability

  • Use canonical profile URLs such as https://www.linkedin.com/in/username.
  • Remove unrelated paths such as company pages, posts, jobs, and search-result URLs.
  • Test a new workflow with a small post limit before enabling parseAll.
  • Keep the normalized overview for spreadsheets and dashboards; use rawData only when you need advanced fields.
  • Media URLs and captions may be temporary signed links. Download required files soon after the run instead of treating those URLs as permanent storage.

Schedule profile monitoring

Use Apify schedules to run the Actor daily, weekly, or at another interval. A downstream task can compare activity URNs or post URLs to identify new posts and prevent duplicates in your own database.

Use the LinkedIn profile posts API

Every Actor can be started through the Apify API. You can pass the same JSON input programmatically, wait for the run to finish, and retrieve dataset items through the dataset API. See the Apify API documentation and the API tab on the Actor page for ready-to-use request examples.

FAQ, disclaimers, and support

Scraping laws and platform rules vary by country and use case. This Actor is intended for collecting publicly accessible professional content. You are responsible for ensuring that your use complies with LinkedIn's terms, applicable laws, privacy rules, and data-protection requirements. Do not collect or use personal data without a valid legal basis.

Does the Actor require my LinkedIn login or cookies?

No LinkedIn credentials or session cookies are part of the Actor input. The Actor resolves profile identifiers and retrieves posts through its configured data provider.

Why are some fields empty?

LinkedIn posts have different structures. A text post has no image URL, an image post has no video duration, and engagement fields may not always be returned. The normalized dataset leaves unavailable optional fields empty while preserving the complete response in rawData.

Why did a profile fail?

Confirm that the URL points to a LinkedIn member profile under /in/ and that the profile is publicly accessible. Renamed, removed, restricted, or malformed profiles may not resolve. The Actor retries temporary request and response-format failures, then continues with the next URL.

Does Parse all guarantee every post ever published?

No. It requests every page made available by the upstream source, but LinkedIn or the data provider may limit historical coverage. Deleted, private, restricted, or otherwise unavailable posts cannot be returned.

Can I combine this with company post scraping?

Yes. Use the creator's LinkedIn Company Posts Scraper for organization pages, then combine both Actor datasets using post URLs or activity URNs. This profile Actor is specifically designed for LinkedIn member URLs.

Where can I get help?

If you find a missing post type, unexpected response shape, or normalization issue, open the Issues tab on the Actor page and include a public example URL plus the relevant run ID. Do not post credentials or sensitive personal data. Custom scraping, enrichment, export, and integration solutions can also be built around this Actor—describe your required workflow in the Issues tab to discuss it.