Substack Posts Scraper avatar

Substack Posts Scraper

Pricing

from $0.03 / 1,000 post extracteds

Go to Apify Store
Substack Posts Scraper

Substack Posts Scraper

Collect public Substack newsletter posts, archives, and metadata for content research and media monitoring.

Pricing

from $0.03 / 1,000 post extracteds

Rating

0.0

(0)

Developer

Hanna Nosova

Hanna Nosova

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

18 days ago

Last modified

Share

Export public Substack newsletter posts, archive entries, post metadata, previews, reactions, comments counts, and optional body fields.

Use this Actor to collect public Substack posts for newsletter research, media monitoring, creator tracking, content analysis, competitive research, and recurring archive snapshots. Results can be downloaded as CSV, JSON, Excel, XML, RSS, or used through the Apify Dataset API.

At a glance

  • Publication archive export: Enter Substack publication URLs, custom domains, or publication domains.
  • Post metadata rows: Collect post URLs, titles, subtitles, dates, authors, previews, reactions, comments, and body fields when available.
  • Keyword and date filters: Use search terms and date ranges to narrow archive exports.
  • Fallback support: Use feed fallback when a publication archive is limited.
  • API export: Send Substack rows to spreadsheets, media monitoring workflows, dashboards, databases, or AI agents.

Ready-to-run examples

Use these saved Store examples as starting points. Open any example to prefill the Actor input, then adjust URLs, keywords, limits, or filters for your own run.

What can it do?

Substack Posts Scraper extracts public posts from Substack publications and saves one dataset row per post.

  • Scrape publications: Add Substack URLs, publication domains, or custom domains.
  • Search archives: Use searchTerm to focus on posts around a topic.
  • Filter by date: Limit results with dateFrom and dateTo.
  • Include body fields: Save body HTML when your workflow needs article content.
  • Export repeatable datasets: Use Apify downloads, API calls, schedules, webhooks, and integrations.

Common workflows

  • Newsletter research: Build lists of posts from publications, writers, and categories.
  • Media monitoring: Track mentions of topics, companies, products, or people across newsletters.
  • Competitive research: Monitor how competitors, analysts, or creators discuss a market.
  • Content analysis: Export titles, previews, dates, reactions, and optional body text for review.
  • Creator tracking: Watch a publication archive for new posts and public engagement signals.
  • AI summaries: Feed public post content and metadata into summarization or classification workflows.

What data can you extract?

The Actor returns one dataset row per public Substack post.

FieldDescription
publicationUrlSource publication URL or domain
publicationNamePublication name when available
postUrlPublic Substack post URL
titlePost title
subtitlePost subtitle when available
descriptionPreview or description text
authorNamePublic author name when available
publishedAtPublic post date
isPaidWhether the post is marked paid when visible
reactionsCountPublic reaction count when available
commentsCountPublic comment count when available
bodyTextBody text when available
bodyHtmlOptional body HTML when enabled
sourceArchive, search, or feed fallback source
scrapedAtTimestamp when the row was saved

Pricing

This Actor uses Apify pay-per-event pricing. The prices below come from the current Actor pricing configuration. Apify public plans map to Store discount tiers, so the table shows both the user-facing plan context and the pricing tier name. The final price shown in Apify depends on the user account plan and any custom agreement.

EventWhat is chargedPrice
startOne-time fee charged when a run starts. Covers fixed startup cost (init, proxy warmup, first HTTP setup).$0.005
postCharged per post extracted.$0.000028

Apify may also charge platform usage for compute, storage, proxies, or data transfer outside this Actor pricing. Check the Actor run and the Apify Pricing tab for the exact cost shown to your account.

Input configuration

SettingJSON keyUse it forExample
Publication URLs or domainspublicationUrlsSubstack publication URLs, custom domains, or domains.["https://example.substack.com"]
Maximum posts per publicationmaxPostsPerPublicationCap saved rows per publication and spend.25
Search termsearchTermFilter archive/search results by keyword.AI
Published afterdateFromKeep posts on or after this date.2026-01-01
Published beforedateToKeep posts on or before this date.2026-07-01
Include body HTMLincludeBodyHtmlSave post body HTML when available.false
Use feed fallbackincludeRssFallbackUse feed fallback when archive scraping is limited.true
Publication concurrencyconcurrencyNumber of publications processed in parallel.2

Example input

{
"publicationUrls": ["https://example.substack.com"],
"maxPostsPerPublication": 25,
"searchTerm": "AI",
"includeBodyHtml": false,
"includeRssFallback": true
}

Example output

{
"publicationUrl": "https://example.substack.com",
"publicationName": "Example Newsletter",
"postUrl": "https://example.substack.com/p/example-post",
"title": "Example post",
"subtitle": "A public Substack post",
"description": "Preview text...",
"authorName": "Example Author",
"publishedAt": "2026-07-03T10:00:00.000Z",
"isPaid": false,
"reactionsCount": 123,
"commentsCount": 8,
"bodyText": "Post body text...",
"source": "archive",
"scrapedAt": "2026-07-03T12:00:00.000Z"
}

How to run it

  1. Open the Actor on Apify.
  2. Add one or more Substack publication URLs or domains.
  3. Set maxPostsPerPublication.
  4. Add optional search or date filters.
  5. Choose whether to include body HTML and feed fallback.
  6. Start the run and export the dataset.

Search tips

  • Use publication URLs first: Full Substack URLs are usually the clearest input.
  • Use search terms for topics: Add searchTerm when monitoring a topic or company.
  • Use date windows: Date filters keep scheduled archive checks small and comparable.
  • Enable body HTML selectively: Body HTML is useful for content analysis but increases row size.
  • Try feed fallback: RSS/feed fallback can help when archive pages are limited.

Limits and caveats

  • The Actor extracts publicly visible Substack posts only.
  • It does not access private subscriber-only content, paid post bodies hidden from public view, email lists, or logged-in data.
  • Some publications use custom domains or archive layouts that may expose fewer fields.
  • Body fields are empty when the public page or feed does not expose them.

API usage

curl -X POST 'https://api.apify.com/v2/acts/fetch_cat~substack-posts-scraper/runs?token=YOUR_APIFY_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"publicationUrls":["https://example.substack.com"],"maxPostsPerPublication":25}'

MCP and AI agents

This Actor can be used through the official Apify MCP server at https://mcp.apify.com.

For a focused single-Actor tool setup, use:

https://mcp.apify.com?tools=fetch_cat/substack-posts-scraper

Use the same JSON keys shown in the input configuration table, such as publicationUrls, maxPostsPerPublication, searchTerm, dateFrom, dateTo, and includeBodyHtml.

FAQ

Can it scrape paid Substack posts?

It can save public metadata for posts that are visible, but it does not bypass paywalls or access private subscriber-only content.

Why is body text missing?

Some publications expose only metadata or previews publicly. Enable body options only when the public page provides the body.

Can I monitor new posts?

Yes. Use Apify schedules with the same publication list and date filters.

Can I export to CSV or Excel?

Yes. Apify datasets can be downloaded as CSV, JSON, Excel, XML, RSS, HTML, or accessed through the API.

Changelog

0.1

  • Initial public release with publication URL, archive, search, date, body, feed fallback, concurrency, and API export controls.

Support

If a run fails, returns no data, or a field looks wrong, open an issue from the Actor page.

Please include the Apify run ID or run URL, input JSON, one example public URL, query, or input item, what you expected, and what the dataset returned. Small reproducible inputs make parsing or site-layout issues much faster to fix.

Privacy and data handling

This Actor runs with Apify limited permissions and only processes data needed for the documented run. It uses content lookup inputs and public posts, profiles, videos, comments, or channel metadata needed for the requested output to produce the output dataset and sends requests to public Substack Posts pages/endpoints; results are stored in Apify run storage for your account. FetchCat does not use your inputs or outputs for advertising, does not use them for model training, and does not retain them outside the Apify run except for transient support debugging when you explicitly share run details. You are responsible for using the Actor lawfully, respecting the target site's terms, and avoiding unnecessary personal or sensitive data in inputs.