Publishing
Substack API
Retrieve public Substack publications, posts, writer profiles, Notes and replies.
Search publications, browse newsletter archives and writer activity, retrieve articles and media metadata, and follow comments, Notes and replies. Read category IDs, names and slugs for organizing a publication directory.
API availability: Available
http://localhost:3046Public API: https://api.scrapeatlas.com.Endpoints
/v1/substack/publicationGet a Substack publication
Retrieve publication identity, descriptions, images, author details, subscriber-count text, sections and podcast metadata.
Reference/v1/substack/postsGet a Substack publication’s posts
Retrieve a publication’s post archive with titles, authors, publication times, engagement and media metadata. Choose newest or top sorting and continue with the returned offset.
Reference/v1/substack/postGet a Substack post
Retrieve a post’s title, subtitle, published article content, authors, tags, engagement, audio and video metadata.
Reference/v1/substack/post/commentsGet a Substack post’s comments
Retrieve comment text, author details, reaction counts and replies. Parent IDs and depth link each reply to its discussion.
Reference/v1/substack/profileGet a Substack writer profile
Retrieve a writer’s public identity, bio, images, audience counts, profile links, publications and public subscriptions.
Reference/v1/substack/searchSearch Substack publications
Discover Substack publications by query with names, descriptions, author details, images, sections and podcast metadata.
Reference/v1/substack/profile/feedGet a Substack writer’s activity feed
Retrieve a writer’s public posts and Notes with author details, text, media attachments, engagement and parent discussion context. Continue with the returned cursor.
Reference/v1/substack/noteGet a Substack Note
Retrieve a public Note’s text, rich-text document, author details, reactions, restacks, attachments and parent discussion context.
Reference/v1/substack/note/repliesGet a Substack Note’s replies
Retrieve a root Note and its replies with published text, author details, rich-text documents, reactions, restacks and attachments. Continue with the returned cursor.
Reference/v1/substack/categoriesGet Substack publication categories
Retrieve the public publication category directory with numeric IDs, names, slugs and emoji metadata.
ReferenceQuick start
Create an API key on your account page, then call the public API. Values below are placeholders.
curl "https://api.scrapeatlas.com/v1/substack/publication?url=https%3A%2F%2Fexample.substack.com%2F" \
-H "x-api-key: YOUR_API_KEY"Coverage & limits
- One publication, post or writer per request; four active requests and eight queued requests per worker, with a 10-second queue wait.
- Post lists: 1–100 records per page, default 20; offset 0–10,000; new or top sorting.
- Comment lists: 1–100 records, default 50; 1–8 hierarchy levels including top-level comments, default 3.
- Search, profile feeds and Note replies: 1–100 records, default 100. Search page numbers are 0–1,000; feed and reply cursors are at most 1,024 characters.
- Search phrases are 1–200 characters; Note IDs are positive numeric strings of 1–15 digits.
- URLs are at most 1,024 characters; writer handles are 1–64 characters.
- A 25-second total request deadline, three upstream attempts and one shared retry for network errors or HTTP 5xx.
- At most 8 MiB of decoded source data, 32 nested levels and 100,000 examined nodes.
- Publication sections, author bylines, post tags, media records, caption tracks, Note attachments, parent discussion records, categories and each profile collection contain at most 100 records.
| HTTP | failure.code | Meaning |
|---|---|---|
| 400 | invalid_request | Missing, duplicated, invalid or unsupported request parameters. |
| 401 | unauthorized | Missing or invalid service API key. |
| 404 | not_found | The requested publication, post or profile was not found. |
| 422 | restricted_page | The requested content requires additional access. |
| 422 | unsupported_page | The source did not provide the expected record. |
| 502 | upstream_challenged | The source challenged the request. |
| 502 | upstream_rate_limited | The source rate limited the request. |
| 502 | upstream_error | A source request failed. |
| 502 | response_too_large | Source data exceeded the response byte limit. |
| 502 | payload_too_complex | Source data exceeded the traversal depth or node limit. |
| 502 | unsafe_redirect | The source returned an unexpected redirect. |
| 502 | request_limit | The request exhausted its source-attempt budget. |
| 503 | busy | All worker request slots are in use. |
| 504 | timeout | The request exceeded its deadline. |
| 200 | partial | Usable data was returned with coverage warnings. |