Substack API

Search Substack publications, posts, comments and notes to retrieve author details, engagement counts and subscriber data.

Publication URLs require extractable handles; custom domains may not always be recognized correctly.

Platform availability

24h health
Normal
Normal

Last 30 days

Available capabilities

Each Substack action, what it does, its price and its health over the last 24 hours. Open an action for its parameters, response fields and code samples.

CapabilityWhat it doesPer 1,00024-hour health
SearchsearchDiscover Substack newsletters that match a keyword, with each publication's name, handle, custom domain, language, author and top posts.$1.39 per 1,000 requestsNormal
PublicationpublicationLook up a Substack publication from its homepage link and get its name, handle, custom domain, language, author, top posts and subscriber count when disclosed.$1.39 per 1,000 requestsNormal
Publication postspublication_postsList posts from a Substack publication, each with title, subtitle, author, likes, comments, word count, reading time and paid status.$1.39 per 1,000 requestsNormal
Post detailspostRead a single Substack post from its /p/ link, including title, subtitle, body text, author, publication, engagement counts and whether it is paid content.$1.39 per 1,000 requestsNormal
CommentscommentsPull the comments under a Substack post, with author, likes, reply count, and flags for replies, pinned comments and remarks by the post's own author.$1.39 per 1,000 requestsNormal
ProfilesprofileResolve a Substack writer's handle to their profile: display name, bio, avatar, linked Twitter username and the publications tied to the account.$1.39 per 1,000 requestsNormal
NotesnotesCollect a Substack writer's Notes, the short posts kept apart from newsletters, with text, kind, likes and publish time for each.$1.39 per 1,000 requestsNormal

Open a capability for its parameters, response fields, code samples and trial.

What does each Substack action accept?

Each answer below pairs one callable action with its real inputs. Parameter meanings and allowed values are action-specific; a familiar name does not carry the same meaning across every platform.

Official sources are linked only to clarify the platform term beside them. They do not imply platform authorization or endorsement, and they do not add official-site features to the EveryInfra API contract.

ActionRequiredOptionalDeliveryLimitPer 1,000Response fields
search

Search

Discover Substack newsletters that match a keyword, with each publication's name, handle, custom domain, language, author and top posts. It matches publications rather than the text of posts, and a null subscriber count means hidden, not zero.

keyword—Sync deliveryCatalog values: defaultLimit=10, maxLimit=30. A limit can control pages or per-parent expansion for some actions, so it is not always a final row count.$1.39 per 1,000 requestsid · handle · name · url · custom_domain · bio · language · subscriber_count · payments_enabled · avatar_url · cover_url · platform · author_name · author_username · top_posts
publication

Publication

Look up a Substack publication from its homepage link and get its name, handle, custom domain, language, author, top posts and subscriber count when disclosed. The link needs a recognizable Substack handle, since custom domains may not parse, and nothing comes from the author's dashboard.

url—Sync delivery—$1.39 per 1,000 requestsid · handle · name · url · custom_domain · bio · language · subscriber_count · payments_enabled · avatar_url · cover_url · platform · author_name · author_username · top_posts
publication_posts

Publication posts

List posts from a Substack publication, each with title, subtitle, author, likes, comments, word count, reading time and paid status. Narrow by format with content_type or by date with since and until; paywalled text stays locked, and one batch may not cover the whole archive.

urlcontent_type, since, untilSync deliveryCatalog values: defaultLimit=10, maxLimit=30. A limit can control pages or per-parent expansion for some actions, so it is not always a final row count.$1.39 per 1,000 requestsid · url · title · subtitle · text · author_name · author_username · publication_name · publication_handle · publication_url · like_count · comment_count · repost_count · word_count · reading_time_minutes · post_type · audience · is_paid · podcast_url · image_url · posted_at · updated_at · tags · platform
post

Post details

Read a single Substack post from its /p/ link, including title, subtitle, body text, author, publication, engagement counts and whether it is paid content. Paywalled text is not unlocked, and comments come from the separate comments action.

url—Sync delivery—$1.39 per 1,000 requestsid · url · title · subtitle · text · author_name · author_username · publication_name · publication_handle · publication_url · like_count · comment_count · repost_count · word_count · reading_time_minutes · post_type · audience · is_paid · podcast_url · image_url · posted_at · updated_at · tags · platform
comments

Comments

Pull the comments under a Substack post, with author, likes, reply count, and flags for replies, pinned comments and remarks by the post's own author. Pass the post's /p/ link; the batch may not hold the whole conversation.

url—Sync deliveryCatalog values: defaultLimit=20, maxLimit=100. A limit can control pages or per-parent expansion for some actions, so it is not always a final row count.$1.39 per 1,000 requestsid · text · author_name · author_username · like_count · reply_count · reply_to_id · is_reply · is_pinned · is_author · posted_at · platform
profile

Profiles

Resolve a Substack writer's handle to their profile: display name, bio, avatar, linked Twitter username and the publications tied to the account. Accepts a plain handle, an @handle or a substack.com/@ link; it describes the person, not a publication, and shows no subscription data.

username—Sync delivery—$1.39 per 1,000 requestsuser_id · username · display_name · bio · avatar_url · twitter_username · platform · publications
notes

Notes

Collect a Substack writer's Notes, the short posts kept apart from newsletters, with text, kind, likes and publish time for each. It lists one writer's Notes only, not a sitewide search, and may not reach the full history.

username—Sync deliveryCatalog values: defaultLimit=25, maxLimit=200. A limit can control pages or per-parent expansion for some actions, so it is not always a final row count.$1.39 per 1,000 requestsid · kind · text · author_username · author_name · like_count · posted_at · platform · restacked_post · attachment_urls

What do the Substack search parameters mean?

Discover Substack newsletters that match a keyword, with each publication's name, handle, custom domain, language, author and top posts. It matches publications rather than the text of posts, and a null subscriber count means hidden, not zero.

Full API reference: parameters, code samples, response example and health →
keywordRequired
Specifies the discovery query string for locating Substack newsletters and publications. It does not perform full-text searches across post bodies.
Substack: Separation of Profiles, Publication Sites, and Dashboard Data — Substack documents public Profiles, publication websites, and the publisher dashboard separately. Search on this page discovers publication profiles only; official dashboard reader management and revenue statistics do not mean this interface can retrieve those analytics. · Checked

What do the Substack publication parameters mean?

Look up a Substack publication from its homepage link and get its name, handle, custom domain, language, author, top posts and subscriber count when disclosed. The link needs a recognizable Substack handle, since custom domains may not parse, and nothing comes from the author's dashboard.

Full API reference: parameters, code samples, response example and health →
urlRequired
Specifies the target Substack resource link. Use publication homepages for publication and publication_posts, or direct /p/ post links for post and comments. The publication action requires a URL containing a recognizable Substack handle (custom domains may not parse), whereas publication_posts accepts custom domain links directly.
Substack: Author Pages and Publication Sites Are Distinct Address Objects — A Substack author handle maps to substack.com/@handle, whereas publication websites can use subdomain.substack.com. This reference verifies object and address distinctions; custom domain resolution capabilities remain strictly bound by the parameter rules of the corresponding action on this page. · Checked

What do the Substack publication_posts parameters mean?

List posts from a Substack publication, each with title, subtitle, author, likes, comments, word count, reading time and paid status. Narrow by format with content_type or by date with since and until; paywalled text stays locked, and one batch may not cover the whole archive.

Full API reference: parameters, code samples, response example and health →
urlRequired
Specifies the target Substack resource link. Use publication homepages for publication and publication_posts, or direct /p/ post links for post and comments. The publication action requires a URL containing a recognizable Substack handle (custom domains may not parse), whereas publication_posts accepts custom domain links directly.
content_typeOptional
Filters publication posts by content format using all_types, newsletter_posts_only, podcast_episodes_only, or threads_only. Field presence must be verified against specific post links, and setting this value does not unlock paywalled content.
Allowed values:all_typesnewsletter_posts_onlypodcast_episodes_onlythreads_only
Substack: Article, Audio, and Video Formats vs. Content Permissions — Substack categorizes text, audio, and video posts as distinct content formats and maintains a strict separation between public materials and private articles. The `content_type` parameter on this page uses its own allowed values, which do not add video types or guarantee that filtering and retrieval are verified across every execution path. · Checked
sinceOptional
Specifies the start date string for filtering posts or activity feeds within a date range. Its presence in shared profile or publication parameters does not enable account creation date filtering.
untilOptional
Specifies the end date string for filtering posts or activity feeds alongside since. This parameter does not represent subscription expiration dates or trigger complete historical archive exports.

What do the Substack post parameters mean?

Read a single Substack post from its /p/ link, including title, subtitle, body text, author, publication, engagement counts and whether it is paid content. Paywalled text is not unlocked, and comments come from the separate comments action.

Full API reference: parameters, code samples, response example and health →
urlRequired
Specifies the target Substack resource link. Use publication homepages for publication and publication_posts, or direct /p/ post links for post and comments. The publication action requires a URL containing a recognizable Substack handle (custom domains may not parse), whereas publication_posts accepts custom domain links directly.
Substack: Free Previews Are Not Full Paywalled Articles — Substack allows creators to configure free previews and paywall placements for paid articles. Consequently, non-empty text does not prove that full content was retrieved, and setting is_paid or filtering for paid content does not grant reading access. · Checked

What do the Substack comments parameters mean?

Pull the comments under a Substack post, with author, likes, reply count, and flags for replies, pinned comments and remarks by the post's own author. Pass the post's /p/ link; the batch may not hold the whole conversation.

Full API reference: parameters, code samples, response example and health →
urlRequired
Specifies the target Substack resource link. Use publication homepages for publication and publication_posts, or direct /p/ post links for post and comments. The publication action requires a URL containing a recognizable Substack handle (custom domains may not parse), whereas publication_posts accepts custom domain links directly.
Substack: Hidden Comments vs. Deleted Comments — Substack's Reply Rules allow authors to hide article comments or Notes replies rather than permanently deleting them. The absence of a comment in public results does not establish that it was deleted, and this interface lacks the ability to access moderation dashboards, restore hidden content, or modify rules. · Checked

What do the Substack profile parameters mean?

Resolve a Substack writer's handle to their profile: display name, bio, avatar, linked Twitter username and the publications tied to the account. Accepts a plain handle, an @handle or a substack.com/@ link; it describes the person, not a publication, and shows no subscription data.

Full API reference: parameters, code samples, response example and health →
usernameRequired
Specifies the target creator handle for profile or notes, accepted as a plain handle (with optional @ prefix) or a full substack.com/@user link. The notes action fetches short creator updates rather than long-form publication posts.
Substack: Author Handles, Display Names, and Public Profiles — A unique Substack handle forms the author profile URL, while display names and bios can be edited independently. This page distinguishes username from display_name accordingly, and does not claim the ability to read hidden subscriptions or liking activity. · Checked

What do the Substack notes parameters mean?

Collect a Substack writer's Notes, the short posts kept apart from newsletters, with text, kind, likes and publish time for each. It lists one writer's Notes only, not a sitewide search, and may not reach the full history.

Full API reference: parameters, code samples, response example and health →
usernameRequired
Specifies the target creator handle for profile or notes, accepted as a plain handle (with optional @ prefix) or a full substack.com/@user link. The notes action fetches short creator updates rather than long-form publication posts.
Substack: Definition of Notes and Restack — Substack defines Notes as short-form content activity and Restack as sharing content within Notes, distinguishing them from article-by-article newsletter dispatch. Official publishing, engagement, and revenue analytics capabilities on Substack do not mean this notes read endpoint supports those operations or metrics. · Checked

How to use the Substack API

  1. 01Read the public catalog and choose a platform action.
  2. 02Send the platform, action, and required parameters to POST /api/v1/social.
  3. 03Handle a synchronous result, or poll the returned job ID when the action runs asynchronously.
  4. 04Store the structured response fields needed by your application.
substack_search.sh
curl -X POST https://api.everyinfra.com/api/v1/social \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"platform":"substack","action":"search","params":{"keyword":"<keyword>"}}'

Substack API questions

What can I retrieve with the Substack API?

Set platform to substack. The current catalog lists search, publication, publication posts, post details, comments, and more. These action names identify different Substack objects or views; they are not interchangeable search modes.

Which input starts a Substack `search` request?

Specifies the discovery query string for locating Substack newsletters and publications. It does not perform full-text searches across post bodies. Send it as keyword inside params.

Which fields can Substack `search` return?

Its declared schema includes handle, name, custom_domain, and bio. A declared field can still be absent from an individual record, and every other action has its own field list.

Does every Substack action return immediately?

Actions labeled asynchronous return a job ID you poll. Every other action can also run asynchronously: add "mode": "async" to the request body to receive a job ID immediately, useful for slow tasks or large limits. The current catalog contains sync delivery.