Substack hub

Substack Feed API

A publication's feed as JSON, with the twenty newest items and their HTML.

GET /v1/substack/publications/{publication}/feed

1 credit Failed requests are free

About this endpoint

GET /v1/substack/publications/{publication}/feed returns a Substack publication's feed as JSON. data.feed carries title, description, url, imageUrl, generator, lastBuildDate, copyright and language.

data.feed.items[] has up to twenty entries with title, url, guid, creator, publishedAt (ISO 8601), descriptionHtml, a decoded description, contentHtml and an enclosure when the item has audio or an image. Only Substack feeds are returned: a host whose feed belongs to another platform returns not_found. A missing or restricted publication sets feed to null and reports the reason in lookupStatus and restrictedReason.

Substack Feed API FAQ

How many items does the feed include?

The feed carries the twenty newest items. There is no cursor on this route; use the archive or bulk posts routes for older posts.

Can I use this route as a general feed reader?

No. It returns a feed only when the host is a Substack publication. Another platform's feed returns not_found, so one publication never shows as found on this route and missing on the others.

Why return the feed as JSON?

You get the same items as typed JSON, and the envelope matches every other Substack route. contentHtml holds the item body as HTML.

What does the enclosure contain?

enclosure.url, enclosure.type and enclosure.length when the item links an audio file or an image. type is the feed's own value; a CDN URL may end in a different extension.

How many credits does a feed 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.