EveryData platform API
Substack API
The scope of this Substack API is Substack publications, publication posts, individual posts, comments, profiles, and Notes; its 7 actions, including `search`, `publication`, `publication_posts`, retain independent inputs and returned-object meanings.
In the Substack catalog, `keyword` drives `search` for matching Substack results, whereas `url` drives `publication` for one publication record; a shared identifier never merges their response fields.
- Endpoint
- POST /api/v1/social
- Capabilities
- 7
- Per 1,000
- $1.389
Available capabilities
Compare the Substack actions by required input, returned data, and price. Use the action identifier exactly as shown in your request.
| Action | Required | Optional | Delivery | Limit | Per 1,000 | Response fields |
|---|---|---|---|---|---|---|
searchSearch Search public results on Substack. Accepts these parameters: | keyword | exclude_keywords, paywall, since, until | Sync delivery | Catalog 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 requests | id · handle · name · url · custom_domain · bio · language · subscriber_count · payments_enabled · avatar_url · cover_url · platform · title |
publicationPublication Retrieve public publication details from Substack. Accepts these parameters: | url | exclude_keywords, handle, paywall, publication, since, until | Sync delivery | — | $1.39 per 1,000 requests | id · handle · name · url · custom_domain · bio · language · subscriber_count · payments_enabled · avatar_url · cover_url · platform · title |
publication_postsPublication posts Retrieve publication posts from Substack. Accepts these parameters: | url | content_type, since, until | Sync delivery | Catalog 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 requests | id · 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 |
postPost details Retrieve a public post from Substack. Accepts these parameters: | url | content_type, since, until | Sync delivery | — | $1.39 per 1,000 requests | id · 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 |
commentsComments Retrieve public comments from Substack. Accepts these parameters: | url | content_type, since, until | Sync delivery | Catalog 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 requests | id · text · author_name · author_username · like_count · reply_count · reply_to_id · is_reply · is_pinned · is_author · posted_at · platform |
profileProfiles Retrieve public profile details from Substack. Accepts these parameters: | username | exclude_keywords, paywall, since, until | Sync delivery | — | $1.39 per 1,000 requests | user_id · username · display_name · bio · avatar_url · twitter_username · platform · name · handle · url · role |
notesNotes Use the | username | exclude_keywords, paywall, since, until | Sync delivery | Catalog 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 requests | id · kind · text · author_username · author_name · like_count · posted_at · platform · title · url |
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.
What do the Substack search parameters mean?
Search public results on Substack. Accepts these parameters: until, since, keyword, paywall, and exclude_keywords. Returns these fields: handle, subscriber_count, name, and avatar_url.
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 DataSubstack 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
exclude_keywordsOptional- Specifies terms to omit from content discovery results. This parameter filters target post topics rather than blocking specific author profiles, and applying it within profile or publication retrieval modes may have no effect.
paywallOptional- Filters content by access tier using any, free_posts_only, or paid_posts_only. Filtering for paid entries restricts search results by tier but does not bypass paywalls or grant subscriber access. Practical filtering behavior during profile or publication searches remains unconfirmed.Allowed values:
anyfree_posts_onlypaid_posts_only 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 publication parameters mean?
Retrieve public publication details from Substack. Accepts these parameters: exclude_keywords, publication, paywall, until, url, handle, and since. Returns these fields: cover_url, bio, name, and subscriber_count.
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 ObjectsA 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
exclude_keywordsOptional- Specifies terms to omit from content discovery results. This parameter filters target post topics rather than blocking specific author profiles, and applying it within profile or publication retrieval modes may have no effect.
handleOptional- Provides a secondary input for specifying an author or publication path handle instead of a display name. Prefer setting explicit username or url parameters on their respective actions.
paywallOptional- Filters content by access tier using any, free_posts_only, or paid_posts_only. Filtering for paid entries restricts search results by tier but does not bypass paywalls or grant subscriber access. Practical filtering behavior during profile or publication searches remains unconfirmed.Allowed values:
anyfree_posts_onlypaid_posts_only publicationOptional- Provides a fallback input accepting a publication handle or homepage URL. This field requires an exact handle reference rather than a broad name search and does not bypass required url parameters.
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 publication_posts parameters mean?
Retrieve publication posts from Substack. Accepts these parameters: url, since, until, and content_type. Returns these fields: reading_time_minutes, subtitle, publication_handle, and posted_at.
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_onlySubstack: Article, Audio, and Video Formats vs. Content PermissionsSubstack 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?
Retrieve a public post from Substack. Accepts these parameters: url, since, until, and content_type. Returns these fields: publication_handle, text, title, and audience.
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 ArticlesSubstack 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
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 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 comments parameters mean?
Retrieve public comments from Substack. Accepts these parameters: url, until, since, and content_type. Returns these fields: is_pinned, like_count, is_reply, and author_name.
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 CommentsSubstack'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
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 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 profile parameters mean?
Retrieve public profile details from Substack. Accepts these parameters: until, paywall, exclude_keywords, since, and username. Returns these fields: user_id, handle, avatar_url, and bio.
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 ProfilesA 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
exclude_keywordsOptional- Specifies terms to omit from content discovery results. This parameter filters target post topics rather than blocking specific author profiles, and applying it within profile or publication retrieval modes may have no effect.
paywallOptional- Filters content by access tier using any, free_posts_only, or paid_posts_only. Filtering for paid entries restricts search results by tier but does not bypass paywalls or grant subscriber access. Practical filtering behavior during profile or publication searches remains unconfirmed.Allowed values:
anyfree_posts_onlypaid_posts_only 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 notes parameters mean?
Use the notes action on Substack. Accepts these parameters: until, exclude_keywords, paywall, since, and username. Returns these fields: kind, author_username, like_count, and posted_at.
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 RestackSubstack 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
exclude_keywordsOptional- Specifies terms to omit from content discovery results. This parameter filters target post topics rather than blocking specific author profiles, and applying it within profile or publication retrieval modes may have no effect.
paywallOptional- Filters content by access tier using any, free_posts_only, or paid_posts_only. Filtering for paid entries restricts search results by tier but does not bypass paywalls or grant subscriber access. Practical filtering behavior during profile or publication searches remains unconfirmed.Allowed values:
anyfree_posts_onlypaid_posts_only 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.
How to use the Substack API
- 01Read the public catalog and choose a platform action.
- 02Send the platform, action, and required parameters to POST /api/v1/social.
- 03Handle a synchronous result or poll the returned job ID when the selected action is asynchronous.
- 04Store the structured response fields needed by your application.
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 source record, and every other action has its own field list.
Does every Substack action return immediately?
No assumption is needed: this page labels each action's delivery mode. The current catalog contains sync delivery; poll a returned job ID only for an action labeled asynchronous.