Substack Publication Post Exporter
Export posts from any Substack newsletter: title, author, publish date, body, categories and cover image, filtered by category, date or keyword. No login or proxy needed.
Open in Apify Store$0.99 / 1K on Free
Short answer
Substack Publication Post Exporter is an Apify Store Actor for Substack data that returns 8 published output fields, including title, publication, author, publishedAt. It lists $0.99 per 1,000 results on the Free plan (pay per event), $0.49 on the Business plan. It takes 18 input settings, none required. It covers 6 of the 7 core Substack fields this site tracks. Last updated Oct 25, 2026.
From the public Store listing and published build schema, synced 2026-11-12.What it returns
8 fields from the published dataset schema. Export as JSON, CSV or Excel, or read the dataset through the Apify API.
titlerecordTypepublicationauthorpublishedAtaudiencecommentCounturl
Not in the schema among the core Substack fields: comment. The field matrix shows which other tools return them.
Input
| Setting | Type | Required | Default | What it does |
|---|---|---|---|---|
| mode | string | No | publicationPosts | What to scrape. substack.com-hosted inputs are reported as blocked_egress. |
| publications | array | No | ["platformer.news"] | (mode=publicationPosts) Custom-domain publication URLs or RSS-capable sites, e.g. `https://www.slowboring.com` or `https://platformer.news`. Bare subdomains and substack.com links are blocked from this actor's cloud network. |
| postUrls | array | No | [] | (mode=postUrls) Custom-domain post URLs, e.g. `https://www.noahpinion.blog/p/the-internet-breaks`. substack.com share links are reported as blocked_egress. |
| sortBy | string | No | newest | (mode=publicationPosts) Newest first or all-time most popular first. |
| publishedAfter | string | No | – | Keep posts published on or after this date (`YYYY-MM-DD`). |
| publishedBefore | string | No | – | Keep posts published on or before this date (`YYYY-MM-DD`). |
| containsKeyword | string | No | – | (mode=publicationPosts) Keep posts whose title, teaser or text contains this keyword. Uses Substack's publication search when possible. |
| tagsAnyOf | array | No | [] | Keep posts carrying at least one of these tags (case-insensitive). |
| audienceFilter | string | No | all | Keep all posts, only free posts, or only paid posts. |
| postType | string | No | all | Keep all post types or a single type. |
Show the other 8 settings
| Setting | Type | Required | Default | What it does |
|---|---|---|---|---|
| mediaFilter | string | No | any | Keep all posts, audio posts, video posts, or text-only posts. |
| bodyFormat | string | No | all | Body fields to include. `none` is fastest; `all` adds HTML, plain text and Markdown. |
| includePaidPreview | boolean | No | true | For paid posts, include the public preview body and flag it as a preview. Turn off for faster metadata-only runs. |
| includeComments | boolean | No | false | Include public comment threads for free posts. Paid-post comments are members-only. |
| maxCommentsPerPost | integer | No | 20 | Cap on comments per post, including replies. Set to 0 for no limit. |
| includePublicationInfo | boolean | No | true | Add publication details such as pricing plans, sections, language and payment status. |
| maxItems | integer | No | 50 | Hard cap on emitted records. |
| maxPostsPerPublication | integer | No | 0 | Optional per-publication cap. Set to 0 for no per-publication limit. |
Example input
Built from the input form's published example values and defaults.
{
"mode": "publicationPosts",
"publications": [
"platformer.news"
],
"postUrls": [],
"sortBy": "newest",
"tagsAnyOf": [],
"audienceFilter": "all",
"postType": "all",
"mediaFilter": "any",
"bodyFormat": "none",
"includePaidPreview": false,
"includeComments": false,
"maxCommentsPerPost": 20,
"includePublicationInfo": false,
"maxItems": 3,
"maxPostsPerPublication": 3
} Run it from code or an AI agent
The same run through the Apify API, with the example input. You need an Apify API token; the run is billed to your account at the Store price.
Python
from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run_input = {
"mode": "publicationPosts",
"publications": [
"platformer.news"
],
"postUrls": [],
"sortBy": "newest",
"tagsAnyOf": [],
"audienceFilter": "all",
"postType": "all",
"mediaFilter": "any",
"bodyFormat": "none",
"includePaidPreview": False,
"includeComments": False,
"maxCommentsPerPost": 20,
"includePublicationInfo": False,
"maxItems": 3,
"maxPostsPerPublication": 3
}
run = client.actor("vexaloom-labs/substack-publication-post-exporter").call(run_input=run_input)
if run is None:
raise RuntimeError("The Actor run was not found.")
for item in client.dataset(run.default_dataset_id).iterate_items():
print(item) pip install apify-client
JavaScript
import { ApifyClient } from "apify-client";
const client = new ApifyClient({ token: "<YOUR_APIFY_TOKEN>" });
const input = {
"mode": "publicationPosts",
"publications": [
"platformer.news"
],
"postUrls": [],
"sortBy": "newest",
"tagsAnyOf": [],
"audienceFilter": "all",
"postType": "all",
"mediaFilter": "any",
"bodyFormat": "none",
"includePaidPreview": false,
"includeComments": false,
"maxCommentsPerPost": 20,
"includePublicationInfo": false,
"maxItems": 3,
"maxPostsPerPublication": 3
};
const run = await client.actor("vexaloom-labs/substack-publication-post-exporter").call(input);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items); npm install apify-client
cURL
curl -X POST "https://api.apify.com/v2/actors/vexaloom-labs~substack-publication-post-exporter/run-sync-get-dataset-items" -H "Authorization: Bearer $APIFY_TOKEN" -H "Content-Type: application/json" -d '{"mode":"publicationPosts","publications":["platformer.news"],"postUrls":[],"sortBy":"newest","tagsAnyOf":[],"audienceFilter":"all","postType":"all","mediaFilter":"any","bodyFormat":"none","includePaidPreview":false,"includeComments":false,"maxCommentsPerPost":20,"includePublicationInfo":false,"maxItems":3,"maxPostsPerPublication":3}' Waits for the run and returns the dataset items (runs over 300 seconds return HTTP 408; start an async run instead).
MCP (AI agents)
{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=vexaloom-labs/substack-publication-post-exporter",
"headers": {
"Authorization": "Bearer <YOUR_APIFY_TOKEN>"
}
}
}
} Adds this Actor as a tool in an MCP client that takes a remote server URL (Cursor, VS Code, Claude Code) through Apify's hosted MCP server. OAuth sign-in also works without the header. Clients that only start local servers can wrap the URL with npx mcp-remote.
What a run costs
The result rate falls on higher Apify plans. Each figure is the published per-result rate times the number of results.
| Apify plan | Per 1,000 | 10,000 results | 100,000 results |
|---|---|---|---|
| Free plan | $0.99 | $9.90 | $99 |
| Starter plan | $0.82 | $8.20 | $82 |
| Scale plan | $0.66 | $6.60 | $66 |
| Business plan | $0.49 | $4.90 | $49 |
- Every run also has a start event, charged per GB of memory (minimum one): $0.10 on Free, $0.03 on Business. At its default memory of 4 GB a run starts at $0.40 on Free. Fewer, larger runs keep this small.
- The Free plan includes $5 of monthly usage (Apify pricing, checked 2026-11-11); at the Free rate that covers at most about 5,050 results, less start events and platform usage.
- Worked example: 10,000 results in one run on the Free plan cost $10.30 ($9.90 for results + $0.40 start), plus Apify platform usage (compute), billed separately by Apify.
- Pay per event. Platform usage (compute) is billed by Apify on top of the event prices. Compare other tools in the cost estimator.
Where it fits among Substack routes
It ranks 1 of 1 catalogue Actors for Substack on the published formula (fields, price, reliability, freshness). Its line is highlighted on the map.
- 1 Substack Publication Post Exporter 8 output fields, pay per event 6 of 7 core fields
$0.99 / 1K - + 4 other Store tools, combined Reference only 7 of 7 core fields
from $1.15 / 1K - API Substack Developer API Limited access fields not compared
Stops are fields. A ring means the field is in that route's published output schema; no ring means the line passes without it. Bold labels are the core fields for this website, the rest are fields that differ between routes. A white capsule means every data line stops there. The red line is the official API; its field coverage is not compared. A crossed red line means there is no open official API.
Official route: Substack Developer API
Limited access. Substack's Developer API Terms (last updated January 8, 2026) cover access to certain public information on creators' profiles or publications. It is not a general post archive API; each publication also serves a public RSS feed.
No public price is published.
Other Store tools for Substack
Reference only, from their public listings.
| Tool | Fields | Price / 1K |
|---|---|---|
| Substack Scraper | 39 | $1.15 |
| Substack Newsletter Scraper | 25 | $3.00 |
| Substack Leaderboard Scraper | 22 | $4.00 |
| Substack Scraper | – | $2.50 |
| Substack Scraper | 18 | $15 |
What people use it for
- export publication posts
- filter posts by date and topic
Similar Actors
Medium Article Discovery & Metadata Extractor
Find Medium articles by tag, author, publication, keyword search or direct URL, returning title, author, tags, preview text, reading time, publish…
Product Hunt Launch & Topic Data Exporter
Export Product Hunt launches with votes, comments, makers, hunter and topics from the daily leaderboard, a topic, a maker's history, or specific…
Facebook Group Feed & Engagement Extractor
Pull posts from any public Facebook group with full text, media, reaction breakdown, top comments and reshares, plus optional group member count,…
Facebook Post & Group Comment Thread Extractor
Get comments and nested reply threads from public Facebook posts, Watch videos, photos, and group posts, with per-reaction-type counts, author…
Facebook Timeline Posts & Reel Transcript Extractor
Pull recent posts and Reels from a public Facebook Page or Profile, or fetch one post by its link, with text, reaction breakdown, comments, media,…
LinkedIn Activity Feed Scraper with Engagement Filters
Pull posts, articles, and reposts from LinkedIn profile activity feeds, with reaction/comment/date filters and a per-reaction-type breakdown.…
Questions people ask
How much does Substack Publication Post Exporter cost?
The published result rate depends on your Apify plan: $0.99 per 1,000 on Free, $0.82 per 1,000 on Starter, $0.66 per 1,000 on Scale, $0.49 per 1,000 on Business. So 10,000 results cost about $9.90 on the Free plan and $4.90 on Business, plus a start fee of $0.10 per run per GB of memory on Free. Platform usage is billed separately.
What data does Substack Publication Post Exporter return?
Its published output schema lists 8 fields: title, recordType, publication, author, publishedAt, audience, commentCount, url. A listed field is not guaranteed to be filled in every row.
What input does Substack Publication Post Exporter need?
No input is strictly required; the defaults run as is. Common settings: mode, publications, postUrls, sortBy, publishedAfter, publishedBefore.
How do I run Substack Publication Post Exporter from Python or the API?
Use the Apify API client: in Python, ApifyClient(token).actor("vexaloom-labs/substack-publication-post-exporter").call(run_input=...), then read the run's default dataset (run.default_dataset_id); in JavaScript the same call is client.actor("vexaloom-labs/substack-publication-post-exporter").call(input). Without a client, POST the input JSON to https://api.apify.com/v2/actors/vexaloom-labs~substack-publication-post-exporter/run-sync-get-dataset-items with your API token. Ready-to-paste code with the example input is on this page.
Sources
- Substack Publication Post Exporter on Apify Store
- Published build with input and output schema (JSON)
- Substack Developer API documentation
Cite this page
Scraper Finder. "Substack Publication Post Exporter." https://scraperfinder.com/catalogue/substack-publication-post-exporter/ (data checked 2026-11-12).
Run Substack Publication Post Exporter
$0.99 per 1,000 results. Paste the example input above, set your Substack query, then export the dataset. Still choosing? Compare every Substack route.