Substack Sitemap API
Every post URL a publication lists in its sitemap, with the last change date.
GET /v1/substack/publications/{publication}/posts/index1 credit Failed requests are free
About this endpoint
GET /v1/substack/publications/{publication}/posts/index returns the publication's own sitemap. data.posts[] holds only /p/{slug} URLs and data.pages[] holds the other pages, such as /archive and /about; every row has kind, url, slug, lastModified and changeFrequency. The whole sitemap is one response, so there is no cursor or offset.
data.hasSitemap is false when the publication does not publish a sitemap, and posts is empty. data.publicationId names the publication. Use this route to build a complete list of post URLs before fetching individual posts.
Substack Sitemap API FAQ
Does this return post bodies?
No. It returns URLs and their last change date. Fetch post.get for a post's body or metadata.
What if hasSitemap is false?
The publication does not publish a sitemap, so posts is empty. Use the archive route to list what it serves instead.
Is the sitemap paged?
No. The route returns the publication's sitemap in one response, which is why it is separate from the paged archive.
How many credits does a sitemap lookup 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
- 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}
- CommentsGET /v1/substack/posts/{post}/comments