Substack Posts Scraper
Pricing
from $5.00 / 1,000 post scrapeds
Substack Posts Scraper
Scrape Substack newsletter posts from any publication on a subdomain or custom domain. Returns full post text, engagement, tags and paywall status.
Substack Posts Scraper
Pricing
from $5.00 / 1,000 post scrapeds
Scrape Substack newsletter posts from any publication on a subdomain or custom domain. Returns full post text, engagement, tags and paywall status.
Title
title
Required
Substack post headline.
Post URL
url
Required
Canonical Substack post URL.
Slug
slug
Optional
URL slug of the post.
Subtitle
subtitle
Optional
Post subtitle or dek.
Description
description
Optional
SEO/meta description when present.
Publication URL
publicationUrl
Required
Base URL of the Substack publication this post belongs to.
Published at
publishedAt
Optional
Post publish time as an ISO 8601 timestamp.
Updated at
updatedAt
Optional
Post last-updated time when available.
Language
language
Optional
Post language code when available.
Word count
wordCount
Optional
Reported word count of the post.
Audience
audience
Optional
Substack audience tier. 'everyone' = free public post; 'only_paid' = paywalled.
Paywall status
paywallStatus
Required
Normalized paywall status: 'free' or 'paid'. Paid posts return metadata + teaser only.
Has body content
hasBody
Required
True when the record includes article body text (public posts). False for paywalled teaser-only records.
Body HTML
bodyHtml
Optional
Full article HTML for public posts. Omitted for paid posts or when includeBodyHtml is false.
Body text
bodyText
Optional
Plain-text article body for public posts. Omitted for paid posts or when includeBodyText is false.
Likes
likes
Optional
Heart (❤) reaction count when available.
Restacks
restacks
Optional
Number of restacks (Substack's reshare).
Comment count
commentCount
Optional
Total comment count when available.
Reactions breakdown
reactions
Optional
Full emoji-reaction breakdown when present (e.g. {"heart":727}).
Cover image URL
coverImageUrl
Optional
Lead/cover image URL when present.
Cover image is square
coverImageIsSquare
Optional
Whether the cover image is square.
Podcast URL
podcastUrl
Optional
Audio attachment URL for podcast posts.
Podcast duration (s)
podcastDurationSeconds
Optional
Podcast duration in seconds when present.
Canonical URL
canonicalUrl
Optional
Substack canonical URL.
Post ID
postId
Optional
Substack internal numeric post ID.
Post type
postType
Optional
Substack post type (e.g. 'newsletter', 'podcast').
Scraped at
scrapedAt
Required
Timestamp when this actor run captured the item.