Substack Profile Posts API
A reader's posts across every publication they write for, up to 50 per request.
GET /v1/substack/profiles/{handle}/posts1 credit Failed requests are free
About this endpoint
GET /v1/substack/profiles/{handle}/posts lists the posts a reader published across all of their publications. limit is 1 to 50 and defaults to 12. No further posts are available past limit, so ask for limit=50 to get all that are available. cursor comes from the previous answer's page.nextCursor when there is one.
data.posts[] carries the post fields, data.publications[] carries summaries of the publications those posts belong to, and data.profileId names the reader. data.page reports hasMore and nextCursor. When no further page is available, the response is found with the rows available, page.hasMore: false and no nextCursor, so there is no empty page to follow. lookupStatus is found or not_found.
Substack Profile Posts API FAQ
Does this cover one publication or all of them?
All publications the reader writes for. The response includes a publications array so you can group the posts without a second call.
How many posts per page?
Between 1 and 50, with 12 as the default. No further posts are available past limit, so ask for limit=50 to get all that are available. Follow page.nextCursor only while page.hasMore is true. When no further page is available, page.hasMore is false and there is no next page.
What if the handle does not exist?
HTTP 200 with lookupStatus: not_found, profileId: null and an empty posts list.
How many credits does a profile posts page cost?
Pricing is documented on the operation in the API registry (shown on this page). Confirm on every response with meta.creditsCharged: that field is the billing source of truth.
Other Substack endpoints
- PublicationGET /v1/substack/publications/{publication}
- PostsGET /v1/substack/publications/{publication}/posts
- Post bodiesGET /v1/substack/publications/{publication}/posts/bodies
- Post indexGET /v1/substack/publications/{publication}/posts/index
- Search postsGET /v1/substack/publications/{publication}/posts/search
- RecommendationsGET /v1/substack/publications/{publication}/recommendations
- Publication feedGET /v1/substack/publications/{publication}/feed
- PostGET /v1/substack/posts/{post}