Substack Post Search API
Search inside one publication and get the matching posts with highlighted snippets.
GET /v1/substack/publications/{publication}/posts/search1 credit Failed requests are free
About this endpoint
GET /v1/substack/publications/{publication}/posts/search?query=... searches a publication's posts. publication is a subdomain, host or URL; a numeric publication id is refused here. page runs from 0 to 20 and returns ten results a page. The query is required and may be up to 200 characters. Substack ranks search results live, so a row can repeat across pages; de-duplicate by id.
data.results[] pairs a post object with highlights[]. Each highlight has segments[], and each segment has text and isHighlighted, so you can render the match without parsing HTML. data.publications carries summaries of the publications involved and data.page reports page, hasMore and nextPage.
Substack Post Search API FAQ
How are snippets shaped?
results[].highlights[].segments[] is a run of text with an isHighlighted boolean. Join the segments to rebuild the snippet and style the highlighted runs.
How many results per page?
Ten. page is 0-based and runs to 20. Follow page.nextPage while page.hasMore is true.
Is this the same as top search?
No. This route searches one publication. GET /v1/substack/search searches across posts, notes and profiles on the whole site.
How many credits does a search 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
- RecommendationsGET /v1/substack/publications/{publication}/recommendations
- Publication feedGET /v1/substack/publications/{publication}/feed
- PostGET /v1/substack/posts/{post}
- CommentsGET /v1/substack/posts/{post}/comments