Coding with AI?
Connect your agent to our MCP and let it integrate any endpoint for you in one shot.
Substack Category Publications
Get a Substack category’s leaderboard: the top publications ranked by Substack, each with its full details (subscriber badge, paid band, prices, author) and rank.
Endpoint
GET /v1/substack/category/publications
Price: $0.003 per request Free tier: 50 requests/month
Parameters
| Parameter | Required | Description |
|---|---|---|
category |
Yes | Category ID (e.g. 4) or slug (e.g. technology), or bestsellers / podcasts for the site-wide boards. See Category IDs |
tier |
No | all, paid or rising (default: all). bestsellers has rising only; podcasts has all and paid |
page |
No | Page number (default: 1), 25 publications per page. Up to 21 pages; rising 10; bestsellers and podcasts 4 |
Response Fields
| Field | Type | Description |
|---|---|---|
publications |
array | Ranked publications |
publications[].rank |
integer | Position on the board |
publications[].publication_id |
string | Publication ID |
publications[].name |
string | Publication name |
publications[].subdomain |
string | Substack subdomain (<subdomain>.substack.com) |
publications[].url |
string | Publication home URL (the custom domain when it has one) |
publications[].custom_domain |
string | Custom domain, empty when none |
publications[].description |
string | Publication tagline |
publications[].logo_url |
string | Logo URL |
publications[].cover_image_url |
string | Cover image URL, empty when none |
publications[].author |
string | Primary author’s handle |
publications[].author_name |
string | Primary author’s display name |
publications[].author_id |
string | Primary author’s user ID |
publications[].author_url |
string | Link to the primary author’s profile |
publications[].subscriber_count |
integer/null | Free subscriber count as Substack displays it (rounded, e.g. 1200000); null when the publication hides it |
publications[].subscriber_count_label |
string | The displayed subscriber badge, e.g. 1.2M+, or a band such as Thousands of subscribers |
publications[].ranking_detail |
string | Substack’s ranking note: the paid-subscriber band for established publications or a launch note such as Launched a year ago for new ones; empty when not shown |
publications[].paid_subscriber_band |
string | Paid subscriber band, e.g. Tens of thousands of paid subscribers; empty when Substack shows none |
publications[].paid_subscriber_floor |
integer | Lower bound of the paid band (100, 1000, 10000), 0 when none |
publications[].bestseller_tier |
integer | Bestseller badge tier: 0, 100, 1000 or 10000 paid subscribers |
publications[].is_bestseller |
boolean | Whether the publication carries a bestseller badge |
publications[].paid_enabled |
boolean | Whether paid subscriptions are enabled |
publications[].plans |
array | Subscription prices (interval, amount, currency) |
publications[].has_podcast |
boolean | Whether the publication has a podcast |
publications[].podcast |
object/null | The publication’s podcast (title, description, art_url, host, is_free, is_subscriber_only), null when none |
publications[].sections |
array | The publication’s sections (section_id, name, slug, is_podcast) |
publications[].author_pic_url |
string | Primary author’s profile picture URL |
publications[].logo_url_wide |
string | Wide logo URL, empty when none |
publications[].founding_plan_name |
string | Name of the founding tier, empty when none |
publications[].has_recommendations |
boolean | Whether the publication recommends other publications |
publications[].has_chat |
boolean | Whether subscriber chat is enabled |
publications[].language |
string | Language code |
publications[].type |
string | newsletter or podcast |
publications[].twitter_handle |
string | The publication’s X handle, empty when none |
publications[].created_at |
string | Date the publication was created (UTC) |
publications[].first_post_date |
string | Date of the first post (UTC) |
publications[].source |
string | "Substack" |
publications[].domain |
string | "substack.com" |
category |
object | The category (category_id, name) |
tier |
string | The board requested |
page |
integer | Current page number |
has_next_page |
boolean | Whether another page exists |
count |
integer | Number of publications returned |
Example Request
cURL
curl "https://apidirect.io/v1/substack/category/publications?category=technology&page=1" \
-H "X-API-Key: YOUR_API_KEY"
Python
import requests
response = requests.get(
"https://apidirect.io/v1/substack/category/publications",
headers={"X-API-Key": "YOUR_API_KEY"},
params={"category": "technology", "page": 1}
)
print(response.json())
Example Response
{
"category": {
"category_id": 4,
"name": "Technology"
},
"count": 25,
"has_next_page": true,
"page": 1,
"publications": [
{
"author": "bytebytego",
"author_id": "22329494",
"author_name": "Alex Xu",
"author_pic_url": "",
"author_url": "https://substack.com/@bytebytego",
"bestseller_tier": 0,
"cover_image_url": "https://substack-post-media.s3.amazonaws.com/public/images/a4e1c1bd-03ee-4126-b3e4-19553b2d2fc6_1279x821.png",
"created_at": "2022-03-27 03:36:45",
"custom_domain": "blog.bytebytego.com",
"description": "Explain complex systems with simple terms, from the authors of the best-selling system design book series. Join over 1,000,000 friendly readers.",
"domain": "substack.com",
"first_post_date": "2021-11-25 17:31:00",
"founding_plan_name": "",
"has_chat": false,
"has_podcast": false,
"has_recommendations": false,
"is_bestseller": false,
"language": "en",
"logo_url": "https://substackcdn.com/image/fetch/$s_!1eXV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazona…",
"logo_url_wide": "",
"name": "ByteByteGo Newsletter",
"paid_enabled": true,
"paid_subscriber_band": "",
"paid_subscriber_floor": 0,
"plans": [
{
"amount": 15.0,
"currency": "USD",
"interval": "month"
}
],
"podcast": null,
"publication_id": "817132",
"rank": 1,
"ranking_detail": "",
"sections": [],
"source": "Substack",
"subdomain": "bytebytego",
"subscriber_count": null,
"subscriber_count_label": "",
"twitter_handle": "alexxubyte",
"type": "newsletter",
"url": "https://blog.bytebytego.com"
}
],
"tier": "all"
}