Medium Publication Posts API
A publication's ten newest posts by slug or its own domain, with an optional tag filter.
GET /v1/medium/publications/{slug}/posts1 credit Failed requests are free
About this endpoint
GET /v1/medium/publications/{slug}/posts accepts a Medium publication slug such as netflix-techblog, a custom domain such as uxdesign.cc, or a domain query parameter. data.publication holds the feed header (slug, name, title, description, id, url, host, isCustomDomain) and data.posts holds up to ten posts.
Add tag to keep only posts carrying that tag. With a tag, data.publication still holds the publication's own name, description and link. The filter works on Medium-hosted publications; a tag filter on a custom domain is refused rather than guessed. A publication that has moved can return an empty feed through its old slug. If that happens, try the publication's domain.
This list has no cursor and returns its newest ten posts. Use GET /v1/medium/posts with a date to discover older post URLs from the daily sitemap. An invented slug returns lookupStatus: not_found.
Medium Publication Posts API FAQ
Should I pass a slug or a domain?
Both work. netflix-techblog is a Medium slug; uxdesign.cc is a custom domain. You can also keep the path slug and add domain=uxdesign.cc, which overrides the slug; publication.slug then names the domain you passed.
Why is the feed empty?
The publication may have moved to another slug or domain. lookupStatus: found with no posts is an empty feed; try the domain form or the publication's current slug.
Does the tag filter work on custom domains?
No. The tag filter is supported on Medium-hosted publications only, so a tag with a custom domain is refused. Remove the tag or use the Medium slug.
How many credits does it 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.