# LinkedIn Articles Scraper (`aboo.script/linkedin-pulse-scraper`) Actor

\[💰$2 / 1K] ⚡ Fast LinkedIn articles scraper. No login, no API key. Scrape LinkedIn Pulse articles and newsletter editions by article, profile or newsletter URL: title, full text, author, followers, reactions, comments, publish date, images and links.

- **URL**: https://apify.com/aboo.script/linkedin-pulse-scraper.md
- **Developed by:** [Aboo Script](https://apify.com/aboo.script) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.40 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## LinkedIn Articles Scraper

![LinkedIn Articles Scraper](https://i.ibb.co/27XCPz28/linkedin-ads-banner.png)

**LinkedIn Articles Scraper** extracts long-form articles from [LinkedIn Pulse](https://www.linkedin.com/) into clean, structured data you can download as JSON, CSV, Excel, or HTML. Paste a LinkedIn article, profile, or newsletter URL and get the title, full text, author, reactions, comments, publish date, newsletter, images, and links for every article. No account or login required.

### Introduction

[LinkedIn](https://www.linkedin.com/) is the largest professional network in the world. Its article platform, LinkedIn Pulse, is where founders, executives, recruiters, and industry experts publish long-form posts and newsletters, which makes it a rich source of expert opinion and thought leadership.

This actor collects the same public information you see in your browser and turns it into a ready-to-use dataset. You can run it once, schedule it to run daily, or connect it to your own tools.

### What data can you extract from LinkedIn articles?

- 📰 Title, opening excerpt, and the full article text as clean plain text
- 🧾 Section headings, word count, and reading time
- 📅 Publish date and last edit date
- 👍 Number of reactions and comments, plus the public comments shown on the page
- 👤 Author name, headline, profile URL, photo, follower count, and whether the author is a person or a company
- 📬 Newsletter name, URL, follower count, and logo (for newsletter editions)
- 🖼️ Cover image, inline images, and videos
- 🔗 Every link inside the article, with its anchor text

### Use Cases

- 📈 **Content research**: see which topics, lengths, and formats earn the most reactions in your industry.
- 🕵️ **Competitor monitoring**: follow what competitors, executives, and influencers publish and how their audience responds.
- 🤝 **Lead generation**: find active authors and engaged commenters around a topic.
- 🗂️ **Database building**: keep an archive of articles and newsletter editions from the voices you follow.
- 🤖 **AI and automation**: feed full article text into summaries, sentiment analysis, dashboards, or AI workflows.

### How to scrape LinkedIn articles step by step

1. Paste one or more LinkedIn article, profile, or newsletter URLs into **Start URLs**.
2. Set **Maximum number of results** to how many articles you want per profile or newsletter.
3. Click **Start** and wait for the run to finish.
4. Download your data in JSON, CSV, Excel, or HTML from the **Output** tab.

### Input

- **Start URLs**: LinkedIn URLs to scrape. Supported pages:
  - Article pages, such as `https://www.linkedin.com/pulse/6-things-you-should-know-world-polio-day-bill-gates-ycree`
  - Member profiles, such as `https://www.linkedin.com/in/williamhgates` (scrapes the latest articles shown on the profile)
  - Newsletters, such as `https://www.linkedin.com/newsletters/gates-notes-6651495472181637121` (scrapes the latest editions)
- **Maximum number of results**: how many articles to collect for each profile or newsletter URL. An article URL always returns that one article.
- **Proxy configuration**: a proxy is on by default because LinkedIn limits how many pages one address can open. The default datacenter proxy works for most runs; switch to residential if many pages fail.

### Input Examples

Scrape the latest articles of a LinkedIn member:

```json
{
  "startUrls": [{ "url": "https://www.linkedin.com/in/williamhgates" }],
  "maxResults": 3,
  "proxyConfiguration": { "useApifyProxy": true }
}
```

Scrape a profile and a newsletter together:

```json
{
  "startUrls": [
    { "url": "https://www.linkedin.com/in/williamhgates" },
    { "url": "https://www.linkedin.com/newsletters/gates-notes-6651495472181637121" }
  ],
  "maxResults": 3,
  "proxyConfiguration": { "useApifyProxy": true }
}
```

### Output

Each article is saved as one item in the dataset. Here is an example of a single item:

```json
{
  "url": "https://www.linkedin.com/pulse/affordable-climate-win-look-sky-bill-gates-eoj7e",
  "articleSlug": "affordable-climate-win-look-sky-bill-gates-eoj7e",
  "title": "For an affordable climate win, look to the sky",
  "excerpt": "When I was growing up in Seattle, planes were everywhere. Boeing was the biggest employer in the area, and it felt like almost every adult I knew had some connection to the company.",
  "content": "When I was growing up in Seattle, planes were everywhere. Boeing was the biggest employer in the area, and it felt like almost every adult I knew had some connection to the company. Neighbors, family ...",
  "wordCount": 1307,
  "readingTimeMinutes": 6,
  "headings": [],
  "publishedAt": "2026-10-12T20:10:59.000Z",
  "modifiedAt": "2026-10-12T20:11:27.000Z",
  "reactions": 4078,
  "comments": 653,
  "authorName": "Bill Gates",
  "authorType": "Person",
  "authorHeadline": "Chair, Gates Foundation and Founder, Breakthrough Energy",
  "authorUrl": "https://www.linkedin.com/in/williamhgates",
  "authorImageUrl": "https://media.licdn.com/dms/image/v2/D5603AQF-RYZP55jmXA/profile-displayphoto-shrink_400_400/B56ZRi8g.aGsAg-/0/1736826818802?e=2147483647&v=beta&t=r6LJYwKPrJzfFDXVG8qAOoklQnqvEN855sHJ1NxhEAo",
  "authorFollowers": 40765251,
  "newsletterName": "Gates Notes",
  "newsletterUrl": "https://www.linkedin.com/newsletters/gates-notes-6651495472181637121",
  "newsletterFollowers": 6714848,
  "newsletterLogoUrl": "https://media.licdn.com/dms/image/v2/C4E12AQFdUexlL4xUkg/series-logo_image-shrink_100_100/series-logo_image-shrink_100_100/0/1587707440312?e=2147483647&v=beta&t=SyelsiZyQSotZYPAc90nOwTPwJzNHACLZSpMC6ZSrks",
  "coverImageUrl": "https://dms.licdn.com/playlist/vid/v2/D4E12AQFXSlhYCq-GVA/thumbnail-with-play-button-overlay-low/B4EaExtVeFJICM-/0/1791835331972?e=2147483647&v=beta&t=ocRw5ItPrSpDNDTGTcs8TaBb7WNcZ_P-9gI8ZGrLifM",
  "imageUrls": [
    "https://media.licdn.com/dms/image/v2/D4E12AQGizyj4u8WPYA/article-inline_image-shrink_400_744/B4EaExttF3JAAQ-/0/1791835428933?e=2147483647&v=beta&t=Npc4xKZJqS-eCyr57TlpfUsNDiupaDDvou5_aKSZLVA"
  ],
  "videoUrls": [
    "https://dms.licdn.com/playlist/vid/v2/D4E12AQH0e8VeTDmD-Q/mp4-720p-30fp-crf28/B4EaExtovAHwBM-/0/1791835433351?e=2147483647&v=beta&t=6YGI-5zGbk5rW6tkG9MJgFOIrokdbzVOcSIn6wI5Wrg"
  ],
  "links": [
    { "text": "Contrails.org", "url": "http://Contrails.org" },
    { "text": "playing around with the contrails map", "url": "https://map.contrails.org/" }
  ],
  "topComments": [
    {
      "authorName": "Bernita Bai",
      "authorUrl": "https://www.linkedin.com/in/bernita-bai-690805406",
      "text": "The coordination between airlines and air traffic control would be interesting to explore...",
      "reactions": 1,
      "postedAgo": "1d"
    }
  ]
}
```

You can download the dataset in JSON, CSV, Excel, XML, or HTML, or access it through the Apify API.

### Notes

- Without logging in, LinkedIn shows about the 10 latest articles on a profile and about the 8 latest editions on a newsletter page. To scrape older articles, add their article URLs directly.
- Some members hide their public profile from visitors who are not logged in. Those profiles cannot be scraped and are reported as failed, but their article URLs still work.
- Deleted or unknown articles are skipped with a warning.
- `topComments` holds only the few comments LinkedIn shows publicly; `comments` is always the full comment count.
- Fields such as `authorHeadline`, newsletter details, `imageUrls`, and `videoUrls` are empty when the article does not have them.
- An article that appears on both a profile and a newsletter in the same run is scraped only once.
- Other LinkedIn pages, such as company pages, posts, or search pages, are not supported and are skipped.

### Why use the LinkedIn Articles Scraper?

- ✅ **No login needed**: works with public data only, so there is no LinkedIn account to risk.
- 📬 **Newsletters included**: paste a newsletter URL and get its latest editions with full text.
- 🧹 **Clean data**: plain-text content, real numbers for reactions and followers, and one standard date format.
- 💸 **Pay for what you need**: set a result limit per profile or newsletter and keep every run small and cheap.
- 🔄 **Ready for automation**: schedule runs, export to Google Sheets, or connect to Make, Zapier, and n8n.

### FAQ

#### How many articles can I scrape?

As many article URLs as you like. For profiles and newsletters, the actor collects up to your **Maximum number of results**, limited by how many articles LinkedIn shows publicly (see **Notes**).

#### Do I need a LinkedIn account?

No. The actor only collects publicly available articles. You do not need to log in or provide any account details.

#### Can I scrape data on a schedule?

Yes. Use Apify Schedules to run the actor every hour, day, or week, and get fresh articles and engagement numbers automatically.

#### Why are some fields empty?

Not every article has every piece of information, for example a newsletter, inline images, or an author headline. When a field is not available on LinkedIn, it is returned as `null` or an empty list.

#### Can I request a new feature or filter?

Yes. Right now the actor supports article, profile, and newsletter URLs. If you need other inputs, such as company pages or keyword discovery, get in touch and they can be added.

#### Can I get a custom or private version?

Yes. The actor can be customized for your workflow, delivered as a private version, or a new scraper can be built for a different website. Use the contact details below.

### Need to scrape other LinkedIn data?

- [LinkedIn Ad Library Scraper](https://apify.com/aboo.script/linkedin-ads-scraper): ads from the LinkedIn Ad Library with advertiser, ad copy, media, run dates, impressions, and targeting.

***

**Need help or want a custom solution?**

- 📧 Email: aboo.script@gmail.com
- 🧩 More scrapers: [Apify profile](https://apify.com/aboo.script)

### Image Credit

Image credit: [LinkedIn](https://www.linkedin.com/)

# Actor input Schema

## `startUrls` (type: `array`):

LinkedIn article, profile or newsletter URLs, e.g. https://www.linkedin.com/pulse/6-things-you-should-know-world-polio-day-bill-gates-ycree, https://www.linkedin.com/in/williamhgates or https://www.linkedin.com/newsletters/gates-notes-6651495472181637121. Profile and newsletter URLs return the latest articles LinkedIn shows on that page.

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

Maximum number of articles to scrape per profile or newsletter URL. An article URL always returns that one article.

## `proxyConfiguration` (type: `object`):

Proxy settings. LinkedIn limits how many pages one address can open, so a proxy is on by default. Datacenter proxy works for most runs; switch to residential if many pages fail.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.linkedin.com/in/williamhgates"
    },
    {
      "url": "https://www.linkedin.com/newsletters/gates-notes-6651495472181637121"
    }
  ],
  "maxResults": 3,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `overview` (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 = {
    "startUrls": [
        {
            "url": "https://www.linkedin.com/in/williamhgates"
        },
        {
            "url": "https://www.linkedin.com/newsletters/gates-notes-6651495472181637121"
        }
    ],
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("aboo.script/linkedin-pulse-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 = {
    "startUrls": [
        { "url": "https://www.linkedin.com/in/williamhgates" },
        { "url": "https://www.linkedin.com/newsletters/gates-notes-6651495472181637121" },
    ],
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("aboo.script/linkedin-pulse-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 '{
  "startUrls": [
    {
      "url": "https://www.linkedin.com/in/williamhgates"
    },
    {
      "url": "https://www.linkedin.com/newsletters/gates-notes-6651495472181637121"
    }
  ],
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call aboo.script/linkedin-pulse-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,aboo.script/linkedin-pulse-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/yPZL37zySvBgDJMK8/builds/PCM086rcffTyNnbaq/openapi.json
