Open in ChatGPT
Coding with AI?
Connect your agent to our MCP and let it integrate any endpoint for you in one shot.

Substack User Activity

Get an author’s public activity feed: their Notes and the posts they publish or restack, newest first, or only their notes, posts, replies, restacks or likes. Each item is tagged note, post or comment and says what the author did with it. Notes carry text, engagement and any quoted post or note.

Endpoint

GET /v1/substack/user/activity

Price: $0.003 per page Free tier: 50 requests/month

Provide exactly one of username, user_id or url.

Parameters

Parameter Required Description
username One required Substack handle, e.g. lenny, with or without a leading @ (max 100 characters). Provide one of username, user_id or url.
user_id One required Numeric Substack user ID, as returned in user_id. Provide one of username, user_id or url.
url One required Profile URL, e.g. https://substack.com/@lenny (max 500 characters). Provide one of username, user_id or url.
type No Only one kind of activity: note, post, reply, restack, like (default: notes, posts and restacks)
pages No Number of pages to fetch, 1-250 (default: 1). Each page returns 12 items; you are billed per page returned.

Response Fields

Field Type Description
items array Array of activity items, newest first
items[].type string note, post or comment (a reply on a post or note)
items[].activity string What the author did with it: note, post, reply, restack or like
items[].note_id string Note ID
items[].body string Note text
items[].date string Date and time posted (UTC)
items[].author string Author’s handle
items[].author_name string Author’s display name
items[].author_id string Author’s user ID
items[].author_url string Link to the author’s profile
items[].source string "Substack"
items[].domain string "substack.com"
items[].likes integer Number of likes
items[].replies integer Number of replies
items[].restacks integer Number of restacks
items[].reactions object Reaction counts by emoji
items[].author_pic_url string Author’s profile picture URL
items[].author_bestseller_tier integer Author’s bestseller badge tier: 0, 100, 1000 or 10000
items[].lang string Language code
items[].attachments array Media and quoted items. Each has type (image, video, link, post, note, publication) and url, plus title or dimensions where relevant
items[].publication string The author’s primary publication
items[].url string Direct link to the note
items[].post_type string For post items: newsletter, podcast, video or thread; post items otherwise carry the post fields documented on User Posts
username string The author’s handle
user_id string The author’s user ID
pages integer Number of pages returned
count integer Number of items returned

Example Request

cURL

curl "https://apidirect.io/v1/substack/user/activity?username=hamish&pages=1" \
  -H "X-API-Key: YOUR_API_KEY"

Python

import requests

response = requests.get(
    "https://apidirect.io/v1/substack/user/activity",
    headers={"X-API-Key": "YOUR_API_KEY"},
    params={"username": "hamish", "pages": 1}
)
print(response.json())

Example Response

{
  "count": 24,
  "items": [
    {
      "activity": "note",
      "attachments": [
        {
          "attachments": [
            {
              "post_id": "218085342",
              "publication": "On Substack",
              "title": "Model Behavior: George Saunders",
              "type": "post",
              "url": "https://on.substack.com/p/model-behavior-george-saunders"
            },
            {
              "duration": 44.6,
              "height": 1280,
              "type": "video",
              "url": "https://substack.com/api/v1/video/upload/c7e75333-51e0-4895-9c1c-597fbbdb5d11/src",
              "width": 720
            }
          ],
          "author": "arielleswedback",
          "author_name": "Arielle Swedback",
          "body": "@George Saunders spoke about Substack and our AI conversation yesterday on Late Night with Seth Meyers. Grateful to him for helping us see our way through",
          "note_id": "355302724",
          "type": "note",
          "url": "https://substack.com/@arielleswedback/note/c-355302724"
        }
      ],
      "author": "hamish",
      "author_bestseller_tier": 0,
      "author_id": "3567",
      "author_name": "Hamish McKenzie",
      "author_pic_url": "",
      "author_url": "https://substack.com/@hamish",
      "body": "Still feels like a massive honor just for @George Saunders to be publishing on Substack, let alone be speaking of it on the big shows. ",
      "date": "2026-10-08 04:48:40",
      "domain": "substack.com",
      "lang": "en",
      "likes": 53,
      "note_id": "355659691",
      "publication": "Disjointed",
      "reactions": {
        "❤": 53
      },
      "replies": 5,
      "restacks": 3,
      "source": "Substack",
      "type": "note",
      "url": "https://substack.com/@hamish/note/c-355659691"
    }
  ],
  "pages": 2,
  "user_id": "3567",
  "username": "hamish"
}