Substack API

Get Substack data as clean JSON with one key: 8 endpoints, 1 to 5 credits per call, the same response shape as every other platform.

What you get#

Onekey exposes Substack as 8 endpoints behind one API key: 2 endpoints return one record (data is an object) and 6 endpoints return a list (data is an array). Every answer uses the same envelope (success, data, metadata, error), the cost is reported in metadata.credits_charged, and fields are mapped onto the unified schema so the code you write for Substack also works for the rest of the news & publishing category.

Endpoints#

EndpointWhat it doesParametersCreditsStatus
archiveLatest posts of a Substack publication.pub*5stable
categoriesSubstack's publication categories.-5stable
category_publicationsTop publications in a Substack category.id*5stable
postFetch a Substack post by slug.pub*, slug*1stable
post_commentsComments on a Substack post (by post id).pub*, id*5stable
searchSearch posts within a Substack publication.pub*, q*5stable
top_postsTop posts of a Substack publication.pub*5stable
userFetch a Substack user's public profile by handle.handle*1stable

A * marks a required parameter. Each endpoint name links to its reference page with the full parameter table, caching window and a recorded response.

Make a request#

This calls substack.post (1 credit, stable). Replace YOUR_API_KEY with your key; sign up, no card. 1,000 free credits cover the open-platform endpoints. Hard-to-reach platforms (X, TikTok, Instagram, Reddit, and others marked on their page) need a verified email and a purchased pack.

curl "https://api.onekey.dev/v1/substack/post?pub=www.astralcodexten.com&slug=open-thread-435" \
  -H "x-api-key: YOUR_API_KEY"

Fields you get back#

These unified fields come back from Substack, with the same names as on every other platform. The count is how many of its 8 mapped endpoints return the field; a field the source lacks is null, never missing. 3 platform-specific fields (ext.<name>) come on top, documented on each endpoint page.

FieldTypeEndpoints
author.idstring7
content.createdAtISO 8601 date7
author.avatarUrlURL6
author.displayNamestring6
content.textstring6
entity.slugstring6
author.usernamestring5
content.idstring5
engagement.likesinteger5
media.thumbnailUrlURL5
content.titlestring4
content.urlURL4
engagement.commentsinteger4
entity.idstring2
entity.namestring2
entity.descriptionstring1

The full schema is in Unified schema.

Pricing#

Substack calls cost 1 to 5 credits, flat per endpoint. Free when served from cache (0.2 credit for a cached response over 100 KB). Invalid, failed or not-found calls are not charged. See pricing for credit packs.