# Substack Posts Scraper - Low-cost💲🔥📰📚 (`delectable_incubator/substack-posts-scraper-low-cost`) Actor

📰🔍 Extract Substack posts by profile or keyword with ease. Collect post titles, authors, publish dates, tags, reactions, word counts, excerpts, post URLs & newsletter metadata. Ideal for content research, newsletter monitoring, creator analysis, media intelligence & publishing trend analysis 📊🚀

- **URL**: https://apify.com/delectable\_incubator/substack-posts-scraper-low-cost.md
- **Developed by:** [Prime Scrape](https://apify.com/delectable_incubator) (community)
- **Categories:** Automation, Social media, Jobs
- **Stats:** 1 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.00005 / actor start

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

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

<p align="center">
  <img src="https://i.ibb.co/jkNS73wX/readme.png" alt="PrimeScrape Substack Posts Scraper" width="100%">
</p>

---

## 📰📚 Substack Posts Scraper 🔍 | Bulk Article Search & Newsletter Content Extractor | Apify Actor

### 🚀 Extract Substack Posts & Articles in Seconds (No Code)

The **Substack Posts Scraper** (Apify Actor) is a powerful, scalable and SEO-optimized scraping tool designed to extract public articles from Substack newsletters in bulk.

Collect structured article data including titles, authors, publication dates, reactions, comments, tags, cover images, article URLs and content snippets for media monitoring, newsletter intelligence, SEO research, AI datasets, competitive analysis and content aggregation.

---

## 🔥 Why This Substack Posts Scraper?

✔ Best Substack Posts Scraper on Apify

✔ Bulk keyword search support (SEO BOOST 🚀)

✔ Fast & scalable article extraction

✔ 100% structured JSON / CSV / Excel output

✔ Perfect for newsletter research

✔ Ideal for journalists, marketers & researchers

✔ No coding required

---

## 🎯 What This Scraper Does (Substack Article Extraction)

This Apify Actor searches public Substack articles using one or multiple keywords and extracts structured metadata.

#### 📌 Core Features

✅ Search Substack posts by keyword

✅ Bulk keyword scraping (SEO BOOST 🚀)

✅ Scrape thousands of public articles

✅ Extract titles, authors & publication dates

✅ Extract article URLs

✅ Extract article descriptions

✅ Extract cover images

✅ Extract audience visibility

✅ Extract reactions & comments

✅ Extract tags

✅ Extract article word count

✅ Extract article snippets

✅ High-speed extraction engine

---

## ⚡ Input Configuration (Simple & Powerful)

### 🔥 BULK KEYWORD MODE (SEO BOOST 🚀)

````

{
"keywords": \[
"artificial intelligence",
"machine learning",
"crypto",
"startups",
"venture capital",
"marketing",
"python",
"productivity"
],
"max\_items": 200
}

```

---

## 📊 Extracted Article Data (Structured Output)

| Field | Description |
|------|-------------|
| id | Unique article ID |
| title | Article title |
| subtitle | Article subtitle |
| description | Article description |
| author | Author name |
| author_handle | Author Substack handle |
| post_date | Publication date |
| canonical_url | Direct article URL |
| cover_image | Cover image |
| audience | Audience visibility |
| reactions | Reaction statistics |
| reaction_count | Total reactions |
| comment_count | Total comments |
| truncated_body_text | Article preview |
| tags | Article tags |
| wordcount | Article word count |

---

## 💡 Use Cases (High Demand SEO Keywords)

This Substack scraper is perfect for:

📰 Newsletter monitoring

📚 Content aggregation

📈 SEO content research

🧠 AI training datasets

📊 Media intelligence

🎯 Content marketing

🔍 Competitive newsletter analysis

📡 Trend discovery

⚡ Bulk article extraction

🏢 Market research

---

## 🚀 Key Features (Apify SEO Optimized)

⚡ Bulk keyword scraping support

📚 Public Substack article coverage

🔎 Smart keyword search

🧠 Clean structured output

📊 High-speed extraction engine

🔁 Auto retry & stability system

💾 Export-ready datasets

⚙️ Scalable cloud execution (Apify Actor)

---

## 📤 Output Formats Supported

✔ JSON (structured API ready)

✔ CSV (Excel analysis)

✔ Excel XLSX (business reports)

✔ XML (data pipelines)

✔ HTML (dashboards)

---

## 📦 Example Output

```

{
"id": 174013599,
"title": "Timeline Cleanse",
"subtitle": "Positive distraction with minimal commentary.",
"description": "Positive distraction with minimal commentary.",
"author": "Daniel Guss",
"author\_handle": "danielguss",
"post\_date": "2025-09-19T13:31:07.224Z",
"canonical\_url": "https://danielguss.substack.com/p/timeline-cleanse-by-daniel-guss",
"cover\_image": "https://substack-post-media.s3.amazonaws.com/public/images/sample.webp",
"audience": "everyone",
"reaction\_count": 5,
"comment\_count": 0,
"tags": \[
"newsletter",
"media",
"substack"
],
"wordcount": 332
}

````

---

## 🔥 Why This is the BEST Substack Posts Scraper on Apify?

✔ Optimized for Apify search ranking

✔ High-performance scraping engine

✔ Bulk keyword support (rare feature)

✔ Structured export-ready datasets

✔ Enterprise-ready scalability

✔ Perfect for SEO traffic & marketplace visibility

---

## 💸 Pricing

This scraper runs on a **pay-per-result** pricing model.

You only pay for successfully extracted records.

💳 **Price:** $2.98 / 1,000 results

---

## ❓ FAQ (SEO BOOST SECTION)

#### Can I scrape multiple keywords at once?

Yes — bulk keyword mode is fully supported.

#### Can I scrape thousands of Substack articles?

Yes — simply increase the maximum number of results.

#### Is this scraper fast?

Yes — optimized for high-speed extraction.

#### Can I export the data?

Yes — JSON, CSV, Excel, XML and HTML are supported.

#### Is coding required?

No — this is a 100% no-code Apify Actor.

---

## ⚠️ Disclaimer

This tool is an independent data extraction solution and is not affiliated with, endorsed by, or sponsored by Substack.

---

## 🔗 Related Actors (PrimeScrape Ecosystem)

We are building the complete PrimeScrape Intelligence Suite.

👉 Coming Soon 🚀

---

## 🌍 PrimeScrape Ecosystem

Built for large-scale data extraction, AI datasets, automation, lead generation and market intelligence.

📰 Newsletter Intelligence

👤 Creator Discovery

🏢 Company Intelligence

📈 Market Analytics

🤖 AI Training Datasets

⚙️ Automation Pipelines

---

## 📬 Support

⭐⭐⭐⭐⭐ Leave a review if you enjoy using this scraper.

📩 Contact us for custom scraping solutions, enterprise projects or feature requests.

# Actor input Schema

## `keywords` (type: `array`):

List of keywords. Each keyword will be scraped separately, with its own post limit (see maxItemsPerKeyword).
## `maxItemsPerKeyword` (type: `integer`):

Maximum number of posts to extract for EACH keyword in the 'keywords' list (not a global total).
## `proxy` (type: `object`):

Select the proxy configuration to use for the actor.

## Actor input object example

```json
{
  "keywords": [
    "john",
    "business"
  ],
  "maxItemsPerKeyword": 60,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}
````

# 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 = {
    "keywords": [
        "john",
        "business"
    ],
    "maxItemsPerKeyword": 60,
    "proxy": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "US"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("delectable_incubator/substack-posts-scraper-low-cost").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 = {
    "keywords": [
        "john",
        "business",
    ],
    "maxItemsPerKeyword": 60,
    "proxy": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "US",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("delectable_incubator/substack-posts-scraper-low-cost").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "keywords": [
    "john",
    "business"
  ],
  "maxItemsPerKeyword": 60,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}' |
apify call delectable_incubator/substack-posts-scraper-low-cost --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=delectable_incubator/substack-posts-scraper-low-cost",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Substack Posts Scraper - Low-cost💲🔥📰📚",
        "description": "📰🔍 Extract Substack posts by profile or keyword with ease. Collect post titles, authors, publish dates, tags, reactions, word counts, excerpts, post URLs & newsletter metadata. Ideal for content research, newsletter monitoring, creator analysis, media intelligence & publishing trend analysis 📊🚀",
        "version": "0.0",
        "x-build-id": "Etg6lNR1lV4rjAh9N"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/delectable_incubator~substack-posts-scraper-low-cost/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-delectable_incubator-substack-posts-scraper-low-cost",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/delectable_incubator~substack-posts-scraper-low-cost/runs": {
            "post": {
                "operationId": "runs-sync-delectable_incubator-substack-posts-scraper-low-cost",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/delectable_incubator~substack-posts-scraper-low-cost/run-sync": {
            "post": {
                "operationId": "run-sync-delectable_incubator-substack-posts-scraper-low-cost",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "keywords"
                ],
                "properties": {
                    "keywords": {
                        "title": "Keywords to Search on Substack #️⃣",
                        "type": "array",
                        "description": "List of keywords. Each keyword will be scraped separately, with its own post limit (see maxItemsPerKeyword).",
                        "default": [
                            "john",
                            "business"
                        ],
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxItemsPerKeyword": {
                        "title": "Maximum Number of Posts to Scrape per Keyword 📊",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum number of posts to extract for EACH keyword in the 'keywords' list (not a global total).",
                        "default": 60
                    },
                    "proxy": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Select the proxy configuration to use for the actor.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ],
                            "apifyProxyCountry": "US"
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
