LinkedIn Founder & Executive Content Monitor avatar

LinkedIn Founder & Executive Content Monitor

Pricing

from $2.40 / 1,000 post-results

Go to Apify Store
LinkedIn Founder & Executive Content Monitor

LinkedIn Founder & Executive Content Monitor

Monitor public LinkedIn posts from founders, executives, and senior leaders. Returns clean post-level rows with engagement metrics, media/link indicators, and lightweight business-signal tags - no LinkedIn login or cookies required.

Pricing

from $2.40 / 1,000 post-results

Rating

0.0

(0)

Developer

Delowar Munna

Delowar Munna

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a month ago

Last modified

Share

LinkedIn Founder & Executive Content Monitor

Monitor public LinkedIn posts from founders, CEOs, and senior executives, and turn them into clean, flat, CSV-ready rows — with engagement metrics, media/link indicators, and lightweight business-signal tags (hiring, funding, product, growth, partnership, event, thought leadership). Built for B2B sales teams, founder-led agencies, VC/PE research, and competitive-intelligence teams.

No LinkedIn login, no cookies, no session IDs. The actor uses LinkedIn's public guest-visible surfaces over HTTP, so it stays fast and cost-predictable. You pay one flat event per saved unique post that passes your filters.

✨ Why this scraper

  • Executive-content focused — not a generic LinkedIn post extractor. You bring the founders/executives you care about; the actor returns their visible recent posts with light signal tagging.
  • One input, one type — public profile URLs in, post-level rows out. No scraping of comments, reactions, follower lists, or private content.
  • 30 flat fields — profile context, author info, post text, engagement counts, media/link indicators, and signal tags. No nested objects, drops straight into Sheets/Excel/CRMs.
  • Pay-Per-Event — one flat post-result event per saved unique post. Duplicates and filtered rows are never charged.
  • No login / cookies / sessions — V1 stays on no-cookie public surfaces.
  • Transparent signal tagging — rule-based (no AI), explained below.

⚠️ V1 coverage & proxy reality

Without a logged-in session, this actor extracts whatever posts LinkedIn renders to anonymous visitors on the profile page plus per-post permalinks. Two things to know up front:

  1. Coverage varies by profile. Some public profiles (e.g., williamhgates) render 20–30 recent posts to guests; others render very few. The actor reports per-profile counts in RUN_SUMMARY (successful_inputs, profiles_with_no_posts, failed_inputs).
  2. LinkedIn aggressively blocks Apify shared Datacenter Proxy IPs. You will see HTTP 999 (LinkedIn's anti-bot block) on most requests if you run with the default useApifyProxy: true. The actor handles 999 gracefully (counts it under blocked_requests, retries with session rotation), but on Datacenter the success rate is low. For production-grade throughput, supply your own residential proxy via proxyConfiguration.proxyUrls. See the Proxy policy section below.

🚀 Quick start — sample input

{
"profileUrls": ["https://www.linkedin.com/in/williamhgates/", "https://www.linkedin.com/in/satyanadella/"],
"profileLabels": {
"https://www.linkedin.com/in/williamhgates/": "Notable founders",
"https://www.linkedin.com/in/satyanadella/": "Big-tech CEOs"
},
"maxPostsPerProfile": 30,
"maxResults": 100,
"postedAfter": "2026-01-01",
"includeKeywords": ["hiring", "launch", "funding", "partnership"],
"minReactions": 10,
"includeSignalTags": true,
"deduplicate": true,
"proxyConfiguration": { "useApifyProxy": true }
}

Provide at least one public LinkedIn profile URL (https://www.linkedin.com/in/{slug}/). Per-profile labels are optional and free-text. The URLs above are real, public profiles you can use for a smoke test.


📦 Output

The dataset has one view: Executive posts — a 30-column flat table.

LinkedIn Founder & Executive Content Monitor — all-fields table view

Output fields (30)

input_profile_url, input_profile_label, profile_url, profile_slug, author_name, author_headline, author_company, post_id, post_url, post_text, post_text_preview, posted_at, posted_date, post_type, has_link, link_url, link_domain, has_image, has_video, has_document, reaction_count, comment_count, repost_count, engagement_total, engagement_label, signal_tags, matched_keywords, source_type, scraped_at.

Sample record

Real row from a local smoke run against Bill Gates' public profile:

{
"input_profile_url": "https://www.linkedin.com/in/williamhgates/",
"input_profile_label": "Notable founders",
"profile_url": "https://www.linkedin.com/in/williamhgates/",
"profile_slug": "williamhgates",
"author_name": "Bill Gates",
"author_headline": "Co-chair, Gates Foundation",
"author_company": "Gates Foundation",
"post_id": "7464513181265125376",
"post_url": "https://www.linkedin.com/posts/williamhgates_making-a-podcast-helped-one-family-talk-about-activity-7464513181265125376-jf6a",
"post_text": "I felt so powerless and scared when my dad was diagnosed with Alzheimer's. It's hard to process, and even harder to talk about, when it's your loved one going through it. Colby's episode captures that reality beautifully.",
"post_text_preview": "I felt so powerless and scared when my dad was diagnosed with Alzheimer's. It's hard to process, and even harder to talk about, when it's your loved one going through it. Colby's episode captures that reality beautifully.",
"posted_at": "2026-05-25T03:10:26.000Z",
"posted_date": "2026-05-25",
"post_type": "image",
"has_link": false,
"link_url": "",
"link_domain": "",
"has_image": true,
"has_video": false,
"has_document": false,
"reaction_count": 2041,
"comment_count": 333,
"repost_count": 0,
"engagement_total": 2374,
"engagement_label": "very_high",
"signal_tags": "thought_leadership",
"matched_keywords": "",
"source_type": "profile_posts",
"scraped_at": "2026-05-28T00:32:08.588Z"
}

🎛️ Inputs

FieldTypeDefaultPurpose
profileUrlsarray of stringsrequiredPublic LinkedIn profile URLs (/in/{slug}/).
profileLabelsobject{}Optional per-profile label, keyed by profile URL (company, list, segment, executive role).
maxPostsPerProfileinteger25Per-profile cap (1–200).
maxResultsinteger500Global cap on saved unique posts (1–5000).
postedAfterISO datenullKeep only posts on or after this date.
postedBeforeISO datenullKeep only posts on or before this date.
includeKeywordsarray[]Keep only posts whose text contains at least one term.
excludeKeywordsarray[]Remove posts whose text contains any term. Exclusion wins.
postTypesarrayallLimit to detected types: text, link, image, video, document, poll, unknown.
minReactionsinteger0Minimum visible reactions.
includeSignalTagsbooleantrueDerive lightweight business-signal tags.
deduplicatebooleantrueRemove duplicates by post id / canonical URL / content hash.
proxyConfigurationobjectApify proxyApify proxy or custom proxy URLs.

🏷️ Signal tags (PRD §7)

When includeSignalTags is on, signal_tags is a pipe-separated list drawn from these rules — no AI, no LLM:

TagTriggers
hiring_signal"we're hiring", "hiring", "open role", "join our team", "recruiting"
funding_signal"raised", "funding", "seed", "series a/b/c", "investment"
product_signal"launch", "released", "shipping", "new product/feature", "beta"
growth_signal"milestone", "revenue", "growth", "users", "customers", "ARR/MRR"
partnership_signal"partner", "partnership", "collaboration", "integration"
event_signal"conference", "webinar", "speaking", "panel", "meet us"
thought_leadershipNo commercial trigger + post >800 chars OR engagement ≥ 100

📈 Engagement label

engagement_total = reaction_count + comment_count + repost_count.

  • 0–9low
  • 10–99moderate
  • 100–499high
  • 500+very_high

🚦 Proxy policy

  • Apify Datacenter Proxy is the default — fine for trying the actor, but LinkedIn returns HTTP 999 (anti-bot block) for most Datacenter IPs. Expect a low success rate.
  • Apify Residential Proxy is NOT supported — the run fails at startup with a clear message. The actor explicitly rejects apifyProxyGroups: ["RESIDENTIAL"].
  • Custom residential proxy via proxyConfiguration.proxyUrls is the production path. Requests routed through your own provider bypass Apify billing entirely and have a dramatically higher success rate against LinkedIn. Example:
    "proxyConfiguration": {
    "useApifyProxy": false,
    "proxyUrls": ["http://user:pass@your.residential.provider:port"]
    }
  • Block handling. HTTP 999, 403, 429, and 404 from LinkedIn flow through the request handler (not through Crawlee's parse-error path), so each block is counted under blocked_requests and the request is retried with a fresh session / proxy.

🧮 Pricing

  • Pricing model: Pay-Per-Event (post-result).
  • Charged once per saved unique post row that survived all filters and was successfully pushed to the dataset.
  • Never charged for: invalid profile inputs, failed profiles, blocked requests / retries, filtered-out posts, duplicates, or rows where Actor.charge() itself errored (those are tracked separately under charge_failures).
  • Per-event price is configured on the Apify Console (not in actor.json), so it can be tuned without a new build.

📋 Run summary

The actor stores a RUN_SUMMARY entry in the default key-value store:

{
"inputs_total": 3,
"successful_inputs": 2,
"failed_inputs": 1,
"profiles_with_no_posts": 0,
"raw_results_found": 78,
"results_saved": 42,
"duplicates_removed": 6,
"filtered_out": 30,
"charged_events": 42,
"charge_failures": 0,
"blocked_requests": 2,
"retry_count": 5,
"runtime_seconds": 184,
"scraped_at": "2026-05-25T05:10:00.000Z"
}

🛠️ Troubleshooting

"No output" / empty dataset:

  1. All requests returning status=999? That's LinkedIn's anti-bot block on Apify Datacenter IPs. Switch to a custom residential proxy via proxyConfiguration.proxyUrls (see Proxy policy above). This is the single most common cause.
  2. failed_inputs equal to inputs_total? Verify every URL is a real, public LinkedIn profile (https://www.linkedin.com/in/{slug}/) — open one in a private/incognito browser window without logging in; if you see only a login wall, the profile isn't public enough for V1.
  3. High profiles_with_no_posts? The profile loaded but the guest HTML didn't expose any post permalinks. Some profiles render fewer (or zero) posts to anonymous visitors. Not a bug — a coverage limitation of the no-cookie surface.
  4. High filtered_out? Your postedAfter / postedBefore, includeKeywords, minReactions, or postTypes filter is excluding everything. Try a run with all filters cleared to confirm extraction works, then re-add filters one at a time.
  5. Saved task input not updating after a new build? Apify keeps your previously-saved input on the actor/task — it does NOT auto-pick-up new prefill/default values from an updated input_schema.json. Manually edit the input form (or "Reset to default") if you want the new prefill values.

🚫 Out of scope (V1)

  • Login / cookies / session-based scraping
  • Private or connection-only posts
  • LinkedIn messaging, comments inbox, follower lists
  • Full profile / company enrichment
  • Email / phone / contact enrichment
  • Downloading media files
  • Scraping full comment/reaction lists by default
  • AI-generated insight summaries
  • Sentiment analysis
  • Historical archive extraction beyond visible public posts
  • CRM integrations
  • Multi-platform executive monitoring

These are on the roadmap — see PRD §18.