# LinkedIn Newsletter Scraper: Keyword to Newsletters (`themineworks/linkedin-newsletter-scraper`) Actor

Discover public LinkedIn newsletters matching a keyword: title, URL and subscriber count where available. Optional monitor mode bills only for new newsletters. No login, no API key.

- **URL**: https://apify.com/themineworks/linkedin-newsletter-scraper.md
- **Developed by:** [The Mine Works](https://apify.com/themineworks) (community)
- **Categories:** Social media, Lead generation
- **Stats:** 1 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$3.00 / 1,000 newsletter founds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## LinkedIn Newsletter Scraper: Keyword to Newsletters

🏆 Part of The Mine Works' 149-actor portfolio · 40,000+ runs · 200,000+ results delivered across our full distribution stack · 99.9%+ success rate

💰 $3.00 / 1,000 results.

⚡ Keyword in, every public LinkedIn newsletter matching it out: title, link and search snippet. No login, no API key.

💸 A search that returns nothing is never charged.

Give it a keyword or topic and get back matching public LinkedIn newsletters: title, URL and a snippet from how it's indexed. No login, no API key.

### Why this doesn't promise subscriber counts or full issue text

A subscriber-count tier was built and tested against a real newsletter page before this actor shipped, and removed after that test: the fetched page, 94KB of real HTML, contained the word "subscriber" zero times in any form. LinkedIn renders that number with client-side JavaScript rather than serving it in the page a plain HTTP request receives, so a tier promising it could only ever return null while implying it sometimes worked. The same is true of full issue text. Rather than ship a field that quietly never populates, this actor is scoped to what it can actually deliver every time: the title, URL and snippet a public search surfaces for a newsletter, which comes from the search result itself and doesn't depend on LinkedIn's own page rendering at all.

### Input

- **query** (required): a keyword, topic or brand name, e.g. `"artificial intelligence"`.
- **maxResults**: caps how many newsletters come back. Default 10, maximum 50.
- **monitorMode**: turns this into a standing watch (see below).

### Example output

```json
{
  "url": "https://www.linkedin.com/newsletters/artificial-intelligence-6598352935271358464/",
  "title": "Artificial Intelligence",
  "snippet": "The most important artificial intelligence and machine learning news and articles.",
  "checked_at": "2026-08-30T00:00:00.000Z"
}
```

### Turning a keyword into a standing watch

A brand or research team tracking a topic on LinkedIn doesn't want the same newsletter list re-delivered and re-billed every time it checks in. Set **Monitor mode** to true, save the run as an Apify Task, then add it to an Apify Schedule with the same query each time. Every run after the first returns only newsletters not delivered in a previous run.

Weekly or monthly is the right cadence here. New LinkedIn newsletters on a
given topic don't appear fast enough to justify anything more frequent, and
because monitor mode only returns what it hasn't seen before, a scheduled
rerun that finds nothing new costs nothing.

### Who this is for

Content and partnerships teams looking for newsletters to sponsor or guest-write for within a topic. Competitive research into who is publishing on LinkedIn around a subject. Anyone building a directory or monitoring feed of LinkedIn newsletter activity in a niche.

### Frequently asked questions

**Does this return subscriber counts or engagement numbers?** No. That data is rendered client-side on LinkedIn's own newsletter pages and is not present in a plain fetch of them, so this actor does not claim to deliver it rather than return a field that would always be empty.

**Does this need a LinkedIn login?** No. It performs a public search and reads what is publicly indexed; it never logs into LinkedIn.

**Why did a search return fewer newsletters than maxResults?** A narrow or unusual topic may simply not have that many active newsletters indexed. The run log states how many were found.

**Can I get the full text of each newsletter issue?** No, for the same reason subscriber counts aren't included: that content is not present in a plain fetch of LinkedIn's own pages, and this actor only ships fields it can reliably deliver.

**Does a search with zero matches cost anything?** No. A search that returns nothing never fires the newsletter-found event.

**Can I use this to build a directory of newsletters in my niche?** Yes. Repeated keyword queries build up a structured list you own and control.

### Use from Claude, ChatGPT & any MCP agent

Hosted MCP endpoint, no install, OAuth on first connect:

```
https://mcp.apify.com/?tools=themineworks/linkedin-newsletter-scraper
```

Claude Desktop / Cursor config (token auth):

```json
{
  "mcpServers": {
    "linkedin-newsletter-scraper": {
      "url": "https://mcp.apify.com/?tools=themineworks/linkedin-newsletter-scraper",
      "headers": { "Authorization": "Bearer YOUR_APIFY_TOKEN" }
    }
  }
}
```

Ask your agent: *"Find LinkedIn newsletters about \[topic] with an active following, so I can pitch a guest post."*

### Pricing

| Event | Price | You pay when |
| --- | --- | --- |
| Newsletter found | $0.003 | A newsletter is delivered to your dataset |

Flat pricing, not tiered by Apify plan, and no separate Actor Start charge.
Pay per newsletter delivered. A search that returns nothing is never charged.

### Related actors

Two that pair naturally with this one when the newsletter is a pitch target
rather than the end goal: `themineworks/domain-to-linkedin-resolver` takes a
company domain and finds its LinkedIn presence, and
`themineworks/linkedin-email-finder` finds a contact email from a LinkedIn
profile.

Keywords: LinkedIn newsletter scraper, LinkedIn newsletter discovery, LinkedIn content sourcing tool, LinkedIn newsletter directory, LinkedIn topic monitoring, LinkedIn newsletter API alternative

# Actor input Schema

## `query` (type: `string`):

A keyword, topic or brand name to find matching public LinkedIn newsletters for, e.g. "artificial intelligence" or "venture capital".

## `maxResults` (type: `integer`):

Maximum newsletters to return. Default 10, maximum 50.

## `monitorMode` (type: `boolean`):

Run on a schedule and get ONLY newsletters not delivered in a previous run, so a standing keyword watch bills for new newsletters instead of the whole result set every time. Keep the query the same across runs.

## Actor input object example

```json
{
  "query": "artificial intelligence",
  "maxResults": 5,
  "monitorMode": false
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "query": "artificial intelligence",
    "maxResults": 5
};

// Run the Actor and wait for it to finish
const run = await client.actor("themineworks/linkedin-newsletter-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "query": "artificial intelligence",
    "maxResults": 5,
}

# Run the Actor and wait for it to finish
run = client.actor("themineworks/linkedin-newsletter-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "query": "artificial intelligence",
  "maxResults": 5
}' |
apify call themineworks/linkedin-newsletter-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,themineworks/linkedin-newsletter-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/eeWHzcFrOpDn4joQK/builds/z0rBOmEicRowh7VVn/openapi.json
