💬 LinkedIn Conversation Scraper avatar

💬 LinkedIn Conversation Scraper

Pricing

from $4.99 / 1,000 results

Go to Apify Store
💬 LinkedIn Conversation Scraper

💬 LinkedIn Conversation Scraper

Pricing

from $4.99 / 1,000 results

Rating

0.0

(0)

Developer

API Empire

API Empire

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

a day 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?

  • 🛡️ API-free, fingerprint-proof — drives a real Chromium browser, immune to LinkedIn's JA3 / queryId / CSRF rotations
  • 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, falls back to datacenter, then residential (3 retries) only when LinkedIn pushes back
  • 🧩 Optional profile enrichment — pulls headline, distance (1st/2nd/3rd), and pronouns from each participant's profile page
  • 📅 Date filterstoday_limit or date_limit to grab only what's recent
  • 🔗 Bulk URL mode — feed it a list of thread or profile URLs to scrape specific conversations
  • 🎯 Stylish, modern input UI with emoji-rich field labels

🔑 Key Features

FeatureWhat it does
📥 Inbox sweepPrimary, All, Other, Archive, Spam
🔎 FiltersInMail, Starred, 1st-degree only, Unread only
💬 Per-thread depthConfigurable max messages per conversation
Profile enrichmentHeadline + distance + pronouns from each participant
🌐 Tiered proxy fallbackDirect → Datacenter → Residential (×3 retries)
📅 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)
🔗 urlsarrayNoOptional bulk list of thread URLs or profile URLs
📥 list_typestringNoPRIMARY_INBOX (default), INBOX, SECONDARY_INBOX, ARCHIVE, SPAM
🔎 filterstringNoINMAIL, STARRED, firstDegreeConnections:true, read:false
💬 max_convsintegerNoMax conversations to scrape (0 = unlimited)
📝 max_messages_per_convintegerNoMax messages per conversation (0 = unlimited)
📅 today_limitbooleanNoIf true, only today's conversations
🗓️ time_framestringNoALL_TIME (default), LAST_24_HOURS, LAST_3_DAYS, LAST_7_DAYS, LAST_14_DAYS, LAST_30_DAYS, LAST_90_DAYS, LAST_6_MONTHS, LAST_YEAR
enrich_profilesbooleanNoVisit each participant's profile page for headline / distance / pronouns
⏱️ request_delaynumberNoFloat seconds between requests (default 1.0)
🌐 proxyConfigurationobjectNoDefaults to no proxy; auto-escalates if LinkedIn blocks

Example input

{
"li_at": "AQEDAU...your_cookie...",
"list_type": "PRIMARY_INBOX",
"filter": "",
"max_convs": 10,
"max_messages_per_conv": 25,
"enrich_profiles": true,
"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 ConsoleActors.
  2. 🔍 Find LinkedIn Conversation Scraper and open it.
  3. 🍪 Grab your li_at cookie:
    • Open linkedin.com in Chrome → press F12ApplicationCookieshttps://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,
"enrich_profiles": true,
"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️⃣🟡 DatacenterIf LinkedIn blocks → switch to a datacenter proxy
3️⃣🔴 ResidentialIf datacenter still gets blocked → residential proxy with 3 retries
🔒StickyOnce we escalate, we stay on that tier for the rest of the run

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

🌐 Attempting connection without proxy (attempt 1/1)
🛑 [NONE] LinkedIn redirected to login/checkpoint — treated as a block
🌐 Attempting connection via DATACENTER proxy (proxy.apify.com) — attempt 1/1
[DATACENTER] Connected successfully to LinkedIn.
🟢 Locked onto DATACENTER proxy for the rest of the run.

💎 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: with enrich_profiles = true, expect ~5–10 seconds per conversation. With enrichment off, it's typically ~2–3 seconds per conversation.


❓ 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 datacenter proxy, then residential. Most users will never need a proxy.

Will LinkedIn ban my account?

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

Can I scrape group chats?

Currently the actor labels every thread as is_group_chat: false and only enriches the first participant. Multi-participant threads still work — you just get the first participant's profile detail.

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 request_delay ≥ 1.0 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 ApifyDocumentationApify Console