> **For coding agents and LLMs:** This is one Social Fetch marketing page (markdown export). For API orientation start with [`/llms.txt`](https://www.socialfetch.dev/llms.txt); for auth and crawl rules use [`/agents.txt`](https://www.socialfetch.dev/agents.txt); for every operation use [`/llms-endpoints.txt`](https://www.socialfetch.dev/llms-endpoints.txt).

## This page

- **On-site (HTML):** <https://www.socialfetch.dev/platforms/substack/posts-post>
- **Markdown (.mdx) URL:** <https://www.socialfetch.dev/platforms/substack/posts-post.mdx>

---

# Substack Post API

One post by id or URL, with its body or the public preview and the publication attached.

`GET /v1/substack/posts/{post}` takes a numeric post id (`223208969`) or a canonical post URL. It returns `data.post` with `id`, `publicationId`, `slug`, `title`, `subtitle`, `description`, `kind`, `audience`, `isPaywalled`, `url`, `publishedAt`, `updatedAt`, `bodyHtml`, `bodyIsPreview`, `wordCount`, `commentCount`, `reactionCount`, `restackCount`, `reactions`, `tags`, `authors`, `section`, `audio` and `video`.

`data.publication` is a summary of the post's publication. A free post has the whole `bodyHtml`; a paid or subscriber-only post has the public preview and `bodyIsPreview: true`. `lookupStatus` is `found` or `not_found`.

## Request

- **Endpoint:** `GET /v1/substack/posts/{post}`
- **Credits:** 1 credit
Failed requests are free
- **Input:** by id or URL
- **Full reference:** [docs](https://www.socialfetch.dev/docs/api/v1/substack/posts/post/get)
- **Platform page:** [/platforms/substack](https://www.socialfetch.dev/platforms/substack)

## FAQ

### Can I pass a post URL?

Yes. A numeric id or a canonical post URL works. A URL on a custom domain is the reliable way to reach a post that a bare publication subdomain would redirect away from.

### Is bodyHtml always the full post?

No. Check `bodyIsPreview`. When it is true, `bodyHtml` is the preview the publication makes public, not the paid body.

### What reaction data is included?

`reactionCount` is the total and `reactions` maps each emoji to its count. `commentCount` and `restackCount` give the other engagement totals.

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