๐Ÿ’ฌ LinkedIn Conversation Scraper avatar

๐Ÿ’ฌ LinkedIn Conversation Scraper

Under maintenance

Pricing

from $3.99 / 1,000 results

Go to Apify Store
๐Ÿ’ฌ LinkedIn Conversation Scraper

๐Ÿ’ฌ LinkedIn Conversation Scraper

Under maintenance

Pricing

from $3.99 / 1,000 results

Rating

0.0

(0)

Developer

ScrapeEngine

ScrapeEngine

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

2 days ago

Last modified

Share

Pull every conversation from your LinkedIn inbox into structured JSON โ€” messages, dates, participants, headlines, distance, pronouns, and more. No fragile API hacks. Just your own session cookie and a real Chromium tab under the hood.


โœจ Why Choose Us?

  • ๐Ÿ›ก๏ธ Reads LinkedIn's own messaging API โ€” issues the same GraphQL calls the LinkedIn web app makes, through a real authenticated browser session. Immune to CSS-selector churn; queryIds are auto-refreshed live when LinkedIn rotates them.
  • โšก Live streaming โ€” every conversation is pushed to the dataset the moment it's parsed (crash mid-run? you still keep what was collected)
  • ๐ŸŒ Smart proxy escalation โ€” starts direct, then auto-falls back to residential when LinkedIn blocks the exit IP (datacenter IPs are blocked by LinkedIn, so they're skipped)
  • ๐Ÿงฉ Built-in profile enrichment โ€” headline, distance (1st/2nd/3rd), pronouns and picture come straight from the API response, no extra page visits, no slowdown
  • ๐Ÿ“… Date filters โ€” today_limit or date_limit to grab only what's recent
  • ๐ŸŽฏ Stylish, modern input UI with emoji-rich field labels

๐Ÿ”‘ Key Features

FeatureWhat it does
๐Ÿ“ฅ Inbox sweepPrimary, All, Other, Archive, Spam
๐Ÿ”Ž FiltersInMail, Starred, Unread only
๐Ÿ’ฌ Per-thread depthConfigurable max messages per conversation
โœจ Profile enrichmentHeadline + distance + pronouns + picture, straight from the API
๐ŸŒ Tiered proxy fallbackDirect โ†’ Residential (auto, on block)
๐Ÿ“… Date filtersToday-only or older-than-cutoff
๐Ÿ’พ Live savingActor.push_data per conversation โ€” no data loss on crash

๐Ÿ“ฅ Input

FieldTypeRequiredDescription
๐Ÿ” li_atstringYesYour li_at cookie from www.linkedin.com (treat as a password)
๐Ÿ“ฅ list_typestringNoPRIMARY_INBOX (default), INBOX, SECONDARY_INBOX, ARCHIVE, SPAM
๐Ÿ”Ž filterstringNo"" (none), INMAIL, STARRED, UNREAD
๐Ÿ’ฌ max_convsintegerNoMax conversations to scrape (0 = unlimited)
๐Ÿ“ max_messages_per_convintegerNoMax messages per conversation (0 = unlimited, most-recent kept)
๐Ÿ“… today_limitbooleanNoIf true, only today's conversations
๐Ÿ—“๏ธ date_limitstringNoYYYY-MM-DD โ€” skip conversations older than this date
โšก concurrencyintegerNoParallel thread-message fetches (default 5)
๐Ÿ” max_retriesintegerNoRetries per API request on 429/5xx (default 3)
๐ŸŒ proxyConfigurationobjectNoDefaults to direct; auto-escalates to residential if LinkedIn blocks

Example input

{
"li_at": "AQEDAU...your_cookie...",
"list_type": "PRIMARY_INBOX",
"filter": "",
"max_convs": 10,
"max_messages_per_conv": 25,
"today_limit": false,
"proxyConfiguration": { "useApifyProxy": false }
}

๐Ÿ“ค Output

Each dataset record is one conversation:

{
"participants": [
{
"url": "https://www.linkedin.com/in/ACoAADM...",
"distance": "DISTANCE_1",
"pronoun": "she/her",
"picture": "https://media.licdn.com/.../profile.jpg",
"firstname": "Raisul",
"lastname": "Islam",
"headline": "Founder @ Authentic Digital Marketing",
"entityUrn": "ACoAADM..."
}
],
"status": "ACTIVE",
"unread_count": 0,
"last_read_at": null,
"last_activity_at": "2026-05-03 15:15:00",
"is_group_chat": false,
"creator": "ACoAAEjB...",
"created_at": "2026-05-03 15:15:00",
"messages": [
{ "content": "test message", "date": "2026-05-03 15:15:00", "who": "me" }
],
"total_messages": 1,
"last_message_date": "2026-05-03 15:15:00",
"last_message_content": "test message",
"last_message_who": "me",
"days_from_today": 11,
"_conversation_id": "2-ZmExYTkx..."
}

Field reference

FieldDescription
participantsArray of participant objects (name, URL, headline, distance, pronoun, picture, entityUrn)
statusConversation status (ACTIVE)
unread_countNumber of unread messages
last_activity_atTimestamp of the most recent message (YYYY-MM-DD HH:MM:SS)
is_group_chatTrue if multi-person thread
creatorURN of whoever sent the first message we collected
created_atTimestamp of the first collected message
messagesArray of { content, date, who } (oldest โ†’ newest)
total_messagesNumber of messages collected
last_message_*Convenience fields for the most recent message
days_from_todayDays since the last activity
_conversation_idLinkedIn's thread URN

๐Ÿš€ How to Use (Apify Console)

  1. ๐Ÿ”“ Log in to Apify Console โ†’ Actors.
  2. ๐Ÿ” Find LinkedIn Conversation Scraper and open it.
  3. ๐Ÿช Grab your li_at cookie:
    • Open linkedin.com in Chrome โ†’ press F12 โ†’ Application โ†’ Cookies โ†’ https://www.linkedin.com โ†’ copy the value of li_at.
  4. ๐Ÿ“ Paste it into the ๐Ÿ” LinkedIn Session Cookie (li_at) field.
  5. โš™๏ธ Configure inbox type, filter, limits, and proxy if needed.
  6. โ–ถ๏ธ Click Start.
  7. ๐Ÿ“บ Watch the live log โ€” each conversation is logged as it's saved.
  8. ๐Ÿ“‚ Open the Dataset tab when the run finishes.
  9. ๐Ÿ“ค Export to JSON / CSV / XLSX / Excel.

๐Ÿ’ก Tip: Start with max_convs = 5 to validate everything is working before launching a full sweep.


๐Ÿค– Use via API / MCP

Run the actor via REST

curl -X POST "https://api.apify.com/v2/acts/<ACTOR_ID>/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"li_at": "AQEDAU...",
"list_type": "PRIMARY_INBOX",
"max_convs": 10,
"max_messages_per_conv": 25,
"proxyConfiguration": { "useApifyProxy": false }
}'

Wait for results synchronously

curl -X POST "https://api.apify.com/v2/acts/<ACTOR_ID>/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"li_at":"AQEDAU...","max_convs":3}'

๐ŸŒ Proxy Strategy

The scraper escalates only when LinkedIn pushes back:

StepTierWhat happens
1๏ธโƒฃ๐ŸŸข DirectTry without any proxy first
2๏ธโƒฃ๐Ÿ”ด ResidentialIf LinkedIn blocks the exit IP โ†’ residential proxy with up to 4 fresh-IP retries
๐Ÿ”งPinnedSet proxyConfiguration yourself to force a specific exit instead of auto-escalation

Datacenter proxies are intentionally skipped โ€” LinkedIn blocks them outright.

Every escalation step is logged so you can see what's happening:

๐ŸŒ Connecting via DIRECT (no proxy) โ€” attempt 1/1โ€ฆ
๐Ÿ›‘ [DIRECT (no proxy)] Could not authenticate / blocked on this exit IP โ€” escalating.
๐ŸŒ Connecting via RESIDENTIAL โ€” attempt 1/4โ€ฆ
โœ… Session authenticated (feed loaded).

๐Ÿ’Ž Best Use Cases

  • ๐Ÿง‘โ€๐Ÿ’ผ CRM hygiene โ€” sync LinkedIn DMs into HubSpot / Salesforce
  • ๐Ÿ’ผ Recruitment ops โ€” track candidate replies across hundreds of outreach threads
  • ๐Ÿ“ž Sales enablement โ€” surface stale conversations and follow-ups
  • ๐Ÿ—‚๏ธ Personal archive โ€” back up your own messaging history before LinkedIn deletes it
  • ๐Ÿ”ฌ Research โ€” analyze your own DM patterns for sentiment / topic / response time

๐Ÿ’ฐ Pricing

This actor runs on pay-per-usage โ€” you pay only the underlying Apify platform usage (compute units, proxies if used, dataset writes). No additional per-event charges from us.

Run-time guideline: because data comes from LinkedIn's messaging API (not page rendering) and threads are fetched in parallel, expect roughly 0.5โ€“1 second per conversation at the default concurrency.


โ“ Frequently Asked Questions

Open linkedin.com, press F12, go to Application โ†’ Cookies โ†’ https://www.linkedin.com, and copy the Value of the li_at cookie. It looks like AQEDA.... Treat it like a password.

No. LinkedIn's messaging endpoints all require an authenticated session. We use your cookie so the scraper sees the same inbox you do.

Why does it sometimes need a proxy?

If you run the actor often (or from a flagged IP), LinkedIn may redirect to a login wall. The actor detects this automatically and escalates to a residential proxy. Most users will never need a proxy.

Will LinkedIn ban my account?

Use sensible limits. Don't run dozens of large sweeps a day. Lower concurrency if you see warnings. Scraping your own inbox at human-realistic rates is the lowest-risk pattern.

Can I scrape group chats?

Yes. is_group_chat is reported straight from LinkedIn's API. For each thread the output participant is the first member who isn't you (the other side of the conversation); the rest of the thread's messages are still captured in full.

Can I scrape someone else's inbox?

No. The li_at cookie ties to whoever generated it. You can only scrape your own inbox.

How is this different from the LinkedIn API?

The official API doesn't expose messaging to third parties. This actor uses a real browser to render the page exactly as you'd see it, bypassing API restrictions while staying within your own account's permissions.


  • ๐Ÿ“š You may only scrape data your account is authorized to see (your own inbox).
  • ๐Ÿ” Never share your li_at cookie publicly โ€” it grants full access to your LinkedIn account.
  • ๐Ÿ“œ You are responsible for compliance with LinkedIn's User Agreement, GDPR, CCPA, and any other applicable law in your jurisdiction.
  • ๐Ÿค Don't use this to spam, harass, or unsolicited-message anyone โ€” automated outreach violates LinkedIn's rules.
  • ๐Ÿšฆ Respect rate limits โ€” protect your account by keeping concurrency modest and max_convs reasonable.

๐Ÿ›Ÿ Support and Feedback

  • ๐Ÿ› Found a bug? File an issue through the Actor's Issues tab.
  • ๐Ÿ’ก Have a feature request? We listen.
  • ๐Ÿ’ฌ Need help? Use Apify Console's Discussion tab.

Built with โค๏ธ on Apify โ€ข Documentation โ€ข Apify Console