InsightSocial API
Substack

Substack Posts API reference

Your first 10 calls are free, no card needed. Pricing and FAQ

Get a free API key
Example request
curl "https://api.insightsocial.app/v1/substack/posts?url=https%3A%2F%2Fwww.astralcodexten.com" \
  -H "x-api-key: $INSIGHTSOCIAL_API_KEY"
GET
/v1/substack/posts

Returns a publication’s recent posts, or one post: title, full text and Markdown, author, reactions, comments, restacks, word count and whether it is paid.

Use it with a publication URL (or custom domain) for its archive, or a /p/ post URL for one post.

Metered: 10–120 credits. We reserve the ceiling when the call starts and charge what it actually used when it finishes.

x-api-key<token>

Your key from the dashboard. It starts with isk_.

In: header

Query Parameters

url*string

A Substack publication URL or custom domain, or one post URL (…/p/slug).

limit?integer

Most recent posts to read, 1 to 100. Default 25. Billed per post returned.

Range1 <= value <= 100
start_date?string

Only posts published on or after this date (YYYY-MM-DD). Applied to the limit most recent posts, so raise limit to reach further back.

end_date?string

Only posts published on or before this date (YYYY-MM-DD). Applied to the limit most recent posts, so raise limit to reach further back.

only_free?boolean

true for free (non-paywalled) posts only.

content_type?string

Only one post type. Default all.

Value in

  • "all"
  • "newsletter"
  • "podcast"
  • "thread"
min_comments?integer

Only posts with at least this many comments.

Range0 <= value
min_reactions?integer

Only posts with at least this many reactions.

Range0 <= value
min_word_count?integer

Only posts with at least this many words.

Range0 <= value
include_content?boolean

Include the article body (text and Markdown). Default true; false is faster.

dry_run?"1"

Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.

Value in

  • "1"

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X GET "https://api.insightsocial.app/v1/substack/posts?url=string"
{  "success": true,  "platform": "string",  "endpoint": "string",  "schema_version": "2",  "pagination": {    "next_cursor": "string",    "has_more": true,    "page_size": 0,    "stopped_at": "since"  },  "unavailable": [    "string"  ],  "credits_used": 0,  "credits_remaining": 0,  "request_id": "string",  "cached": true,  "idempotent_replay": true,  "charge_reason": "string",  "free_call": true,  "data": {    "items": [      {        "post": {          "id": "string",          "url": "http://example.com",          "kind": "string",          "content": {            "text": "string",            "media_urls": [              "http://example.com"            ],            "thumbnail_url": "http://example.com",            "duration_seconds": 0          },          "author": {            "id": "string",            "username": "string",            "display_name": "string",            "avatar_url": "http://example.com",            "verified": true          },          "engagement": {            "views": 0,            "likes": 0,            "comments": 0,            "shares": 0,            "saves": 0          },          "flags": {            "nsfw": true,            "spoiler": true,            "pinned": true,            "deleted": true,            "likes_hidden": true,            "comments_hidden": true,            "shares_hidden": true,            "views_hidden": true,            "saves_hidden": true          },          "published_at": "2019-08-24T14:15:22Z",          "language": "string",          "ext": {            "property1": null,            "property2": null          }        }      }    ],    "total": 0,    "truncated": true,    "ext": {      "property1": null,      "property2": null    }  }}