๐ฌ LinkedIn Conversation Scraper
Under maintenancePricing
from $3.99 / 1,000 results
๐ฌ LinkedIn Conversation Scraper
Under maintenancePricing
from $3.99 / 1,000 results
Rating
0.0
(0)
Developer
ScrapeMesh
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
2
Monthly active users
a day ago
Last modified
Categories
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_limitordate_limitto grab only what's recent - ๐ฏ Stylish, modern input UI with emoji-rich field labels
๐ Key Features
| Feature | What it does |
|---|---|
| ๐ฅ Inbox sweep | Primary, All, Other, Archive, Spam |
| ๐ Filters | InMail, Starred, Unread only |
| ๐ฌ Per-thread depth | Configurable max messages per conversation |
| โจ Profile enrichment | Headline + distance + pronouns + picture, straight from the API |
| ๐ Tiered proxy fallback | Direct โ Residential (auto, on block) |
| ๐ Date filters | Today-only or older-than-cutoff |
| ๐พ Live saving | Actor.push_data per conversation โ no data loss on crash |
๐ฅ Input
| Field | Type | Required | Description |
|---|---|---|---|
๐ li_at | string | Yes | Your li_at cookie from www.linkedin.com (treat as a password) |
๐ฅ list_type | string | No | PRIMARY_INBOX (default), INBOX, SECONDARY_INBOX, ARCHIVE, SPAM |
๐ filter | string | No | "" (none), INMAIL, STARRED, UNREAD |
๐ฌ max_convs | integer | No | Max conversations to scrape (0 = unlimited) |
๐ max_messages_per_conv | integer | No | Max messages per conversation (0 = unlimited, most-recent kept) |
๐
today_limit | boolean | No | If true, only today's conversations |
๐๏ธ date_limit | string | No | YYYY-MM-DD โ skip conversations older than this date |
โก concurrency | integer | No | Parallel thread-message fetches (default 5) |
๐ max_retries | integer | No | Retries per API request on 429/5xx (default 3) |
๐ proxyConfiguration | object | No | Defaults 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
| Field | Description |
|---|---|
participants | Array of participant objects (name, URL, headline, distance, pronoun, picture, entityUrn) |
status | Conversation status (ACTIVE) |
unread_count | Number of unread messages |
last_activity_at | Timestamp of the most recent message (YYYY-MM-DD HH:MM:SS) |
is_group_chat | True if multi-person thread |
creator | URN of whoever sent the first message we collected |
created_at | Timestamp of the first collected message |
messages | Array of { content, date, who } (oldest โ newest) |
total_messages | Number of messages collected |
last_message_* | Convenience fields for the most recent message |
days_from_today | Days since the last activity |
_conversation_id | LinkedIn's thread URN |
๐ How to Use (Apify Console)
- ๐ Log in to Apify Console โ Actors.
- ๐ Find LinkedIn Conversation Scraper and open it.
- ๐ช Grab your
li_atcookie:- Open linkedin.com in Chrome โ press F12 โ Application โ Cookies โ
https://www.linkedin.comโ copy the value ofli_at.
- Open linkedin.com in Chrome โ press F12 โ Application โ Cookies โ
- ๐ Paste it into the ๐ LinkedIn Session Cookie (li_at) field.
- โ๏ธ Configure inbox type, filter, limits, and proxy if needed.
- โถ๏ธ Click Start.
- ๐บ Watch the live log โ each conversation is logged as it's saved.
- ๐ Open the Dataset tab when the run finishes.
- ๐ค Export to JSON / CSV / XLSX / Excel.
๐ก Tip: Start with
max_convs = 5to 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:
| Step | Tier | What happens |
|---|---|---|
| 1๏ธโฃ | ๐ข Direct | Try without any proxy first |
| 2๏ธโฃ | ๐ด Residential | If LinkedIn blocks the exit IP โ residential proxy with up to 4 fresh-IP retries |
| ๐ง | Pinned | Set 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
Where do I find my li_at cookie?
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.
Will this work without a cookie?
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.
โ ๏ธ Cautions / Legal
- ๐ You may only scrape data your account is authorized to see (your own inbox).
- ๐ Never share your
li_atcookie 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
concurrencymodest andmax_convsreasonable.
๐ 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