LinkedIn Newsletter Scraper
Pricing
from $0.13 / 1,000 item processeds
LinkedIn Newsletter Scraper
📰 Extract public LinkedIn newsletter metadata, edition URLs, full issue text, authors, dates, images, and engagement counts—without login.
Pricing
from $0.13 / 1,000 item processeds
Rating
0.0
(0)
Developer
Automation Lab
Maintained by CommunityActor stats
1
Bookmarked
62
Total users
28
Monthly active users
20 days ago
Last modified
Categories
Share
Extract public LinkedIn newsletters and issues into structured, analysis-ready data—without credentials. Start from concrete newsletter or public article URLs and receive metadata, edition links, full article text, images, dates, authors, and best-effort engagement counts.
What does LinkedIn Newsletter Scraper do?
LinkedIn Newsletter Scraper reads guest-accessible LinkedIn newsletter landing pages and public pulse issue pages. It can follow edition links automatically, so one newsletter URL becomes an ordered dataset containing the newsletter and editions exposed on its guest landing page. LinkedIn may expose only a recent window, not the full archive.
Use it to:
- 📰 discover editions from a public newsletter
- ✍️ extract full public article text with word counts
- 🔄 detect content changes with a deterministic SHA-256 fingerprint
- 👤 capture author names, profile URLs, and exposed follower counts
- 📅 collect publication and modification dates
- 🖼️ export cover and inline image URLs
- 💬 capture public reaction and comment totals when exposed
Who is it for?
- Content intelligence teams monitoring competitor publishing
- Agencies tracking thought-leadership programs
- Researchers building public newsletter archives
- Recruiters and sales teams studying expert topics and authors
- Data engineers feeding digests, search indexes, or RAG pipelines
- Analysts comparing cadence and engagement across newsletters
Why use this actor?
Manual copy-and-paste loses structure and does not scale. This actor produces consistent JSON, CSV, Excel, XML, or RSS-compatible exports through Apify datasets. It uses HTTP-first extraction, structured metadata, bounded retries, and optional Apify Proxy for reliable automation.
What data can I extract?
| Field | Description |
|---|---|
type | newsletter or issue |
title | Newsletter or issue title |
description | Public summary or article headline |
authorName | Creator or issue author |
authorUrl | Public LinkedIn profile URL |
cadence | Published daily, weekly, monthly, etc. when shown |
followerCount | Public author follower count when exposed |
publishedAt | Structured issue publication timestamp |
modifiedAt | Structured issue modification timestamp |
bodyText | Clean full issue text |
contentHash | SHA-256 fingerprint of normalized bodyText for issue records |
wordCount | Number of non-empty, whitespace-delimited tokens in issue bodyText |
imageUrls | Cover and article image URLs |
issueUrls | Editions discovered from a newsletter |
reactionCount | Public reaction total when exposed |
commentCount | Public comment total when exposed |
canonicalUrl | Canonical public LinkedIn URL |
scrapedAt | UTC extraction timestamp |
How to scrape a LinkedIn newsletter
- Open the actor input.
- Paste one or more concrete
linkedin.com/newsletters/...URLs. - Leave Extract linked issues enabled.
- Choose a practical record limit.
- Click Start.
- Export the resulting dataset in your preferred format.
How to extract one LinkedIn article
Paste a public linkedin.com/pulse/... URL and set includeIssues to false. The actor returns the issue title, author, dates, full body, image URLs, canonical URL, and available engagement totals.
Input
{"startUrls": [{ "url": "https://www.linkedin.com/newsletters/artificial-intelligence-7059424690619957248" }],"includeIssues": true,"maxItems": 10,"maxIssuesPerNewsletter": 9}
Only concrete public newsletter and issue URLs are supported. A generic LinkedIn directory, search query, private feed, or authenticated analytics URL is not an input source.
Output example
{"type": "issue","url": "https://www.linkedin.com/pulse/example-slug","canonicalUrl": "https://www.linkedin.com/pulse/example-slug","title": "Example newsletter issue","authorName": "Example Author","publishedAt": "2026-04-18T04:11:38.000+00:00","bodyText": "Full public article text...","contentHash": "1fe47a02cbd72493fe77cd7a31471442266cca7c13ecdb130c007f08dba7a1ac","wordCount": 4,"imageUrls": ["https://media.licdn.com/example.jpg"],"reactionCount": 51,"commentCount": 9,"scrapedAt": "2026-07-12T00:00:00.000Z"}
Fields that LinkedIn does not expose publicly are omitted rather than fabricated.
How much does it cost to scrape LinkedIn newsletters?
This actor uses pay-per-event pricing: $0.005 per run plus a charge for each saved dataset record. Per-record prices are FREE $0.00024896, BRONZE $0.00021649, SILVER $0.00016886, GOLD $0.00012989, PLATINUM $0.000086596, and DIAMOND $0.000060617. Set maxItems to cap both output and variable cost.
Tips for reliable runs
- Use canonical, public LinkedIn URLs.
- Start with a low
maxItemswhile designing a workflow. - Keep Apify Proxy enabled for scheduled monitoring.
- Split very large source lists across scheduled runs; the Actor stops starting new URLs near its 300-second timeout. Unattempted URLs are counted in the run summary.
- Treat reactions, comments, cadence, and follower counts as best-effort fields.
- Deduplicate editions by
canonicalUrl; detect edits to an existing issue withcontentHash.
Monitoring workflow
Save a task containing your newsletter URLs and run it on a schedule. Compare canonicalUrl values with a previous dataset to identify newly published editions, then compare contentHash for matching issue URLs to detect article edits. Send new or changed records to Slack, email, a database, or a vector store through an Apify integration or webhook.
Competitor intelligence workflow
Group newsletter URLs by company, creator, or topic. Extract recent editions, then analyze publishing cadence, themes, article length, calls to action, and public engagement. The structured dataset is easier to compare than unstructured browser pages.
RAG and digest workflow
Use bodyText as the document content and canonicalUrl as the stable source identifier. Store title, author, publishedAt, contentHash, and wordCount as metadata. Use the hash to skip unchanged documents and the count to estimate chunking work before ingestion, then generate summaries or searchable knowledge collections.
Integrations
Send output to:
- Google Sheets for editorial tracking
- Slack for new-edition alerts
- Make or Zapier for no-code workflows
- webhooks for ingestion services
- Amazon S3 or Google Drive for archives
- PostgreSQL, BigQuery, or a vector database for analysis
Apify datasets also expose API endpoints for JSON, CSV, Excel, XML, and RSS exports.
API usage
Run the actor programmatically with the Apify API or official clients. The examples below use the stable actor ID automation-lab/linkedin-newsletter-scraper.
JavaScript API example
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('automation-lab/linkedin-newsletter-scraper').call({startUrls: [{ url: 'https://www.linkedin.com/newsletters/artificial-intelligence-7059424690619957248' }],includeIssues: true,maxItems: 10});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Python API example
from apify_client import ApifyClientclient = ApifyClient('YOUR_APIFY_TOKEN')run = client.actor('automation-lab/linkedin-newsletter-scraper').call(run_input={'startUrls': [{'url': 'https://www.linkedin.com/newsletters/artificial-intelligence-7059424690619957248'}],'includeIssues': True,'maxItems': 10,})items = client.dataset(run['defaultDatasetId']).list_items().itemsprint(items)
cURL API example
curl -X POST \'https://api.apify.com/v2/acts/automation-lab~linkedin-newsletter-scraper/runs?token=YOUR_APIFY_TOKEN' \-H 'Content-Type: application/json' \-d '{"startUrls":[{"url":"https://www.linkedin.com/newsletters/artificial-intelligence-7059424690619957248"}],"maxItems":10}'
MCP and AI assistants
Connect through https://mcp.apify.com/?tools=automation-lab/linkedin-newsletter-scraper in Claude Code or another MCP client. Example prompts:
- “Extract this LinkedIn newsletter and summarize its latest editions.”
- “Build a table of issue dates, authors, and engagement.”
- “Collect article text from these public LinkedIn issue URLs for my RAG corpus.”
Claude Code setup
$claude mcp add --transport http apify 'https://mcp.apify.com/?tools=automation-lab/linkedin-newsletter-scraper'
Claude Desktop, Cursor, and VS Code setup
Add this JSON to the MCP server configuration in Claude Desktop, Cursor, or VS Code:
{"mcpServers": {"apify": {"type": "http","url": "https://mcp.apify.com/?tools=automation-lab/linkedin-newsletter-scraper"}}}
Authenticate with your Apify account when the client opens the connection, then try asking one of the example prompts above.
Scheduling
Create an Apify task, save validated input, and configure a daily or weekly schedule. A webhook can trigger downstream processing after each successful run. Keep source lists stable and compare canonical URLs to detect additions.
Error handling
Unsupported URLs are skipped with a warning. Transient HTTP/network failures get at most one Actor-level retry; permanent responses and page-validation errors do not. Login/challenge pages and newsletter pages without recognizable content or issue pages without useful body text never produce an item charge. The default key-value store contains EXTRACTION_SUMMARY with attempted, succeeded, failed, skipped, and up to 100 {url, reason} failures. A mixed batch keeps its successful records and reports failed URLs separately; a run with no valid record fails clearly. skipped counts remaining queued URLs when the time or item limit stops the run, not failed requests.
Troubleshooting
Why did a field disappear? LinkedIn does not expose every field on every public page. Optional engagement, follower, or cadence fields are omitted when unavailable.
Why did my URL fail? Confirm it is a public linkedin.com/newsletters/... or linkedin.com/pulse/... URL. Private feeds, profile posts, search pages, and login-only pages are outside this actor's scope.
Why are fewer issues returned than requested? A newsletter landing page may expose only a limited recent-edition window. maxItems is an upper bound, not a promise to invent records.
Data quality
The extractor prefers canonical links and Article JSON-LD, then supplements them with semantic page HTML. Text whitespace is normalized. For issue records with non-empty bodyText, contentHash is the lowercase SHA-256 of that exact normalized UTF-8 text and wordCount counts non-empty tokens separated by Unicode whitespace. Both fields are omitted when no body is available. Canonical and discovered edition URLs omit tracking query strings; a supplied URL is fetched with its original query intact. The guest-accessible page may show only a best-effort recent-edition window. Missing optional values remain absent.
Is scraping LinkedIn legal?
This actor extracts public pages without credentials and is not affiliated with or endorsed by LinkedIn. Scraping legality depends on jurisdiction, purpose, contract, and data handling. Use the actor responsibly, respect applicable laws and platform terms, avoid personal-data misuse, and consult legal counsel for regulated use cases.
Privacy and scope
The actor does not collect subscriber identities, private feeds, authenticated analytics, messages, or account credentials. It processes only the concrete public newsletter and issue URLs supplied by the user and public edition links discovered there.
Related scrapers
Explore other public-data tools from automation-lab, including LinkedIn profile, company, jobs, and post actors. Choose the focused actor whose documented public input and output match your workflow.
FAQ
Can it discover every LinkedIn newsletter? No. Supply concrete newsletter or issue URLs.
Does it need my LinkedIn login? No. The core workflow uses public guest-accessible pages.
Can it extract subscriber lists? No. Subscriber identities and private analytics are explicitly out of scope.
Can I export CSV or Excel? Yes. Use the dataset export controls or API.
Can I scrape multiple newsletters? Yes. Add multiple entries to startUrls and choose an appropriate limit.
Does it follow editions automatically? Yes, when includeIssues is enabled.
Are engagement counts guaranteed? No. They are included only when LinkedIn exposes them publicly.
Support
If a validated public URL stops working, open an issue from the actor page and include the URL, run ID, expected output, and observed error. Do not include credentials or private data.