> **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/publications-publication>
- **Markdown (.mdx) URL:** <https://www.socialfetch.dev/platforms/substack/publications-publication.mdx>

---

# Substack Publication API

One publication's metadata, plans and sections, by id, subdomain, host or URL.

`GET /v1/substack/publications/{publication}` resolves a publication and returns `data.publication` with its numeric `id`, `name`, `subdomain`, `customDomain`, `url`, `host`, `description`, `language`, `kind`, `createdAt` and `firstPostAt`.

The same object carries `plans` with price, currency and interval, `benefits` for free, paid and founding tiers, `audience` bands, `contributors`, `sections`, `links`, `podcast` details, `logoUrl`, `coverImageUrl` and the publication's switches such as `commentsEnabled` and `notesEnabled`. `data.lookupStatus` is `found`, `not_found` or `restricted`, and `restrictedReason` says why a restricted publication does not serve its page.

## Request

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

## FAQ

### How do I identify a publication?

Use its numeric id (`89120`), its Substack subdomain (`astralcodexten`), its host (`www.astralcodexten.com`) or a full publication URL. A host or URL is safest for a publication on a custom domain.

### What does restricted mean?

`lookupStatus: restricted` means the publication exists but does not serve its page publicly. `restrictedReason` is `invite_only`, `flagged` or `paid`, and `publication` is null.

### Does a missing publication return an error?

No. The route answers HTTP 200 with `lookupStatus: not_found` and `publication: null`, so branch on the status field rather than the HTTP code.

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