LinkedIn Newsletter Scraper avatar

LinkedIn Newsletter Scraper

Pricing

from $0.13 / 1,000 item processeds

Go to Apify Store
LinkedIn Newsletter Scraper

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

Automation Lab

Maintained by Community

Actor 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?

FieldDescription
typenewsletter or issue
titleNewsletter or issue title
descriptionPublic summary or article headline
authorNameCreator or issue author
authorUrlPublic LinkedIn profile URL
cadencePublished daily, weekly, monthly, etc. when shown
followerCountPublic author follower count when exposed
publishedAtStructured issue publication timestamp
modifiedAtStructured issue modification timestamp
bodyTextClean full issue text
contentHashSHA-256 fingerprint of normalized bodyText for issue records
wordCountNumber of non-empty, whitespace-delimited tokens in issue bodyText
imageUrlsCover and article image URLs
issueUrlsEditions discovered from a newsletter
reactionCountPublic reaction total when exposed
commentCountPublic comment total when exposed
canonicalUrlCanonical public LinkedIn URL
scrapedAtUTC extraction timestamp

How to scrape a LinkedIn newsletter

  1. Open the actor input.
  2. Paste one or more concrete linkedin.com/newsletters/... URLs.
  3. Leave Extract linked issues enabled.
  4. Choose a practical record limit.
  5. Click Start.
  6. 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 maxItems while 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 with contentHash.

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 ApifyClient
client = 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().items
print(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.

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.

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.