LinkedIn Profile Posts Scraper & Content Monitor avatar

LinkedIn Profile Posts Scraper & Content Monitor

Pricing

$0.75 / 1,000 profile posts

Go to Apify Store
LinkedIn Profile Posts Scraper & Content Monitor

LinkedIn Profile Posts Scraper & Content Monitor

Scrape recent LinkedIn posts from exact profile URLs with no-cookie public discovery, optional authenticated depth, keyword/date/content filters, engagement metrics, media links, deduplication, and resilient proxy retries. Built for content research, creator tracking, sales signals, and monitoring.

Pricing

$0.75 / 1,000 profile posts

Rating

0.0

(0)

Developer

Cracks API

Cracks API

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

LinkedIn Profile Posts Scraper

Extract structured posts and recent activity from exact LinkedIn profile URLs for recruiting research, sales intelligence, creator analysis, content research, and CRM enrichment.

This Actor combines conservative public no-cookie collection, public search-index fallback, and optional account-authorized enrichment. It returns one dataset record per successful post with post text, URL, publication date, content type, engagement counts when exposed, media, external links, author evidence, and source mode.

Unofficial — not affiliated with LinkedIn. This independent Actor is not endorsed by, sponsored by, or connected with LinkedIn. LinkedIn is a trademark of LinkedIn Corporation.

Why use this LinkedIn profile posts scraper?

  • Start from exact https://www.linkedin.com/in/... profile URLs.
  • Deduplicate and normalize submitted profiles automatically.
  • Collect public post and article signals without cookies where they are directly available.
  • Fall back to directly visible public search-result evidence when LinkedIn's public activity page is unavailable.
  • Optionally use the caller's own authorized li_at and JSESSIONID values for deeper feed responses.
  • Filter by date range, keywords, and content type.
  • Return one clean, integration-friendly record per post.
  • Capture reactions, comments, reposts, media, and external links when the selected source exposes them.
  • Use stable proxy sessions, polite jitter, retries, backoff, and explicit rate-limit handling.
  • Respect a local maximum charge and leave errors, empty results, limits, and dry runs uncharged.

Best use cases

Recruiting and talent intelligence

Track the public professional activity of candidates, speakers, executives, and domain experts. Use recent posts to understand topics, interests, writing style, and visible expertise before outreach or interviews.

Sales research and account planning

Collect activity from known stakeholders and analyze visible themes, launches, hiring signals, partnerships, problems, and priorities. Export structured posts to Sheets, a CRM, n8n, Zapier, Make, or a warehouse.

Creator and thought-leadership analysis

Study publishing frequency, content mix, recurring topics, engagement signals, media usage, and external links across a curated list of creators.

Content monitoring

Run the Actor on a schedule for the same profile URLs, deduplicate by postUrl or postId, and alert a team when a matching keyword or content type appears.

Collection modes

The Actor checks the public recent-activity and profile pages for directly exposed structured data, JSON-LD, and post links. If those pages do not expose usable posts, it searches public search-result pages and reports only visible result titles, snippets, and LinkedIn post URLs as public_index evidence.

Authenticated session

Provide both secret liAt and jsessionId input values from an account you are authorized to use. The Actor requests profile and feed endpoints with that session, extracts post-like entities from normalized response structures, and never writes the secret values to the dataset or logs.

Authenticated endpoints and response shapes can change. auto mode falls back to public collection if the authorized route is unavailable. authenticated mode reports an uncharged error instead of silently changing source mode.

Input

FieldPurpose
profileUrlsRequired exact LinkedIn /in/ profile URLs.
maxProfilesProcess 1-1,000 unique valid profiles. Default: 100.
maxPostsPerProfileReturn 1-500 posts after filters. Default: 10.
modepublic, auto, or authenticated.
liAt, jsessionIdOptional secret values from the caller's own authorized session.
dateFrom, dateToOptional ISO date or timestamp boundaries. Undated posts are excluded when date filtering is active.
keywordsOptional case-insensitive OR filter across visible post text and links.
contentTypesOptional values: all, post, article, video, image, document, poll, newsletter, repost, unknown.
requestDelaySecsBase polite delay with automatic jitter. Default: 2 seconds.
maxRetries0-5 retries for transient failures, 429, 5xx, and 999 responses.
maxTotalChargeOptional local USD cap. No paid result is emitted after the next result would exceed it.
dryRunValidate and normalize input without network requests or paid events.
proxyConfigurationApify proxy settings. Residential proxies are recommended for reliable compliant runs.

Example input

{
"profileUrls": [
"https://www.linkedin.com/in/satyanadella/"
],
"maxPostsPerProfile": 20,
"mode": "public",
"keywords": ["AI", "cloud"],
"contentTypes": ["post", "article", "video"],
"requestDelaySecs": 2,
"maxRetries": 2,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
}
}

Output

Every successful record represents one post or article.

{
"postId": "urn:li:activity:1234567890",
"postUrl": "https://www.linkedin.com/feed/update/urn:li:activity:1234567890/",
"profileUrl": "https://www.linkedin.com/in/example/",
"publicIdentifier": "example",
"authorName": "Example Person",
"text": "Visible post text...",
"publishedAt": "2026-08-25T08:00:00.000Z",
"contentType": "post",
"reactionsCount": 120,
"commentsCount": 18,
"repostsCount": 4,
"media": [
{ "type": "image", "url": "https://..." }
],
"externalLinks": ["https://example.com/article"],
"sourceMode": "authenticated",
"sourceEvidence": {
"voyager": true,
"authorizedSession": true
},
"status": "success"
}

Counts and dates are null when the chosen source does not expose them. The Actor does not invent engagement, timestamps, text, or media.

Dataset views

  • Successful posts: primary post fields for exports and automations.
  • Engagement metrics: reactions, comments, reposts, date, and source.
  • Media and external links: normalized media objects, outbound links, and source evidence.
  • Errors, empty results, and limits: uncharged operational records, including dry runs.

Pricing event

A successful post is written atomically with exactly one event:

Event keyRecommended priceMeaning
profile-post$0.75 / 1,000 postsOne successfully extracted post or article.

Actor.pushData(record, "profile-post") keeps data persistence and charging together. Before charging, a post must include a valid URL, meaningful text, an author, a verified publication timestamp, and at least one rich signal from engagement counts, media, or external links. Thin indexed snippets are emitted as insufficient_data with no paid event. Error, no_results, limit_reached, and dry_run records are also uncharged. The Store price is configured in Apify Console; this repository only emits the stable event key.

Reliability and data quality

  • Exact /in/ URL validation prevents broad people-search behavior.
  • Duplicate profile inputs and duplicate post records are removed.
  • Proxy session IDs contain only safe letters, digits, and underscores.
  • A profile keeps one proxy session across public, search-index, and authorized requests.
  • Retries use Retry-After when available and otherwise use increasing backoff plus jitter.
  • Search-index results are labeled public_index and include the search engine and visible evidence.
  • A hard paid-quality gate rejects undated or evidence-thin snippets as uncharged insufficient_data records.
  • Date filters exclude undated posts instead of assuming a date.
  • Keyword and content filters run after normalization and before charging.
  • maxTotalCharge is checked before every paid event. Apify's platform charge limit remains authoritative.

Scheduling and deduplication

For monitoring, schedule the Actor daily or weekly and store seen postUrl or postId values in your workflow or destination. A new-post alert can then trigger only when the current run contains a previously unseen ID.

API and integrations

Run this Actor from Apify Console, REST API, JavaScript/Python clients, schedules, webhooks, n8n, Zapier, Make, Google Sheets, or a custom CRM pipeline. The default dataset API exposes JSON, CSV, XML, Excel, HTML, and RSS-compatible export options supported by Apify.

Limitations and responsible use

Public pages, public search indexes, authorized endpoints, and response shapes vary by account, region, profile privacy, and time. Some profiles expose no recent posts; public-index snippets can be incomplete; engagement counts can be absent or stale; and authenticated endpoints can change without notice.

The Actor does not bypass CAPTCHA, authentication walls, access controls, or platform restrictions. Use only data you are permitted to collect and process. Follow applicable law, privacy requirements, LinkedIn's terms, and your organization's policies. Do not use the output for spam, harassment, discrimination, invasive profiling, or other harmful activity.

Local validation

npm install
npm run check