Skip to content

equinoxaifinance-rgb/substack-analytics-api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 

Repository files navigation

Substack API — Posts, Archive & Analytics

A reliable, hosted Substack API that returns any public Substack publication's full post archive plus benchmark analytics (paid/free ratio, posting cadence, engagement) as clean JSON. Public, read-only data only — no login, no paywalled content.

Built and maintained by CreatorData. Live on RapidAPI:

👉 Get a free API key on RapidAPI — 1,000 free requests/month, no card.


Does Substack have an API?

Sort of — and that's the catch. Substack shipped an official Developer API in early 2026, but it only returns public profile info, looked up by the creator's LinkedIn handle, behind a manual approval form. It does not give you post archives, engagement, paid/free status, or analytics.

So for real publication data you've had two options:

  1. Reverse-engineer Substack's undocumented public JSON endpoints (/api/v1/archive, /api/v1/posts/{slug}) — which break whenever Substack changes its frontend, or
  2. Parse the RSS feed — capped at ~20 recent items, with no engagement or analytics.

This API does option 1 for you, reliably, and adds the analytics layer on top.


Endpoints

Endpoint Returns
GET /v1/publication?url=&limit= Full post archive + analytics: paid/free ratio, posts-per-week, avg reactions, total comments
GET /v1/post?url=&slug= A single post's full public content + metadata

Every post includes: title, slug, URL, date, audience (free/paid), reactions, comments, wordcount.

Quickstart

Python

import requests

url = "https://creatordata-substack-analytics.p.rapidapi.com/v1/publication"
headers = {
    "x-rapidapi-key": "YOUR_RAPIDAPI_KEY",  # from rapidapi.com
    "x-rapidapi-host": "creatordata-substack-analytics.p.rapidapi.com",
}
params = {"url": "astralcodexten.substack.com", "limit": 10}

r = requests.get(url, headers=headers, params=params)
data = r.json()
print(data["publication"], "—", data["posts_pulled"], "posts")
print("paid ratio:", data["analytics"]["paid_ratio"])

Node.js

const res = await fetch(
  "https://creatordata-substack-analytics.p.rapidapi.com/v1/publication?url=astralcodexten.substack.com&limit=10",
  { headers: {
      "x-rapidapi-key": "YOUR_RAPIDAPI_KEY",
      "x-rapidapi-host": "creatordata-substack-analytics.p.rapidapi.com",
  }}
);
const data = await res.json();
console.log(data.publication, data.posts_pulled, "posts");

Example response

{
  "publication": "astralcodexten.substack.com",
  "posts_pulled": 10,
  "analytics": {
    "paid_ratio": 0.1,
    "posts_per_week_est": 3.0,
    "avg_reactions_per_post": 124.4,
    "total_comments": 3014
  },
  "posts": [
    { "title": "...", "is_paid": false, "reactions": 135, "comments": 42, "wordcount": 10883 }
  ]
}

Use cases

  • Newsletter competitor benchmarking
  • Creator-economy / market analytics
  • Lead-gen and enrichment from publication profiles
  • AI / research corpora

→ Get your free Substack API key on RapidAPI

Keywords: substack api, substack data api, substack analytics, scrape substack, newsletter analytics api, substack post archive, substack json.

About

Substack API — fetch any public Substack publication's post archive + analytics (paid/free ratio, posting cadence, engagement) as JSON. Free tier on RapidAPI.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors