Substack API endpoint
Returns one public Note with its author, engagement counts, and the post it links to when it has one. Notes are Substack's short-form social posts. note_id is the numeric id from a Note URL: in `/@handle/note/c-316240438` it is `316240438`.
/substack/notenote_id: required numeric Note id. In a Note URL such as
https://substack.com/@jameelajamil/note/c-316240438, the id is
316240438 — the digits after the c- prefix.Returns one public Note. Notes are Substack's short-form social posts; internally the platform models them as comments, which is why ids look like comment ids.
reactions is a map of emoji to count, and reaction_count is their total.
attached_post is present only when the Note links to a post.
| Field | In the sample | Value in the sample |
|---|---|---|
| id | Has a value | |
| body | Has a value | 242 characters |
| author_id | Has a value | |
| author_name | Has a value | |
| author_handle | Has a value | |
| author_url | Has a value | substack.com |
| author_photo_url | Has a value | substack-post-media.s3.amazonaws.com |
| author_bestseller_tier | Has a value | 100 |
| url | Has a value | substack.com |
| published_at | Has a value | 2026-08-16 |
| reaction_count | Has a value | 13,941 |
| restack_count | Has a value | 1,222 |
| reply_count | Has a value | 129 |
| reactions | Has a value | |
| language | Has a value | |
| is_ai_generated | Has a value | false |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| note_id | integer | Yes | Numeric Note id | 316240438 | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/substack/note?note_id=316240438" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"data": {
"id": 316240438,
"body": "If only the men in the Epstein files were accused of...",
"author_id": 138271663,
"author_name": "Jameela Jamil",
"author_handle": "jameelajamil",
"author_url": "https://substack.com/@jameelajamil",
"url": "https://substack.com/@jameelajamil/note/c-316240438",
"published_at": "2026-08-16T22:35:15.413Z",
"reaction_count": 12846,
"restack_count": 1139,
"reply_count": 129,
"reactions": {
"❤": 12846
},
"is_ai_generated": false
},
"msg": "success"
}Request schema
No body schema
Response schema
#/definitions/substack.noteResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | substack.Note | No | ||||
| data.attached_post | substack.NotePost | No | ||||
| data.attached_post.id | integer | No | ||||
| data.attached_post.title | string | No | ||||
| data.attached_post.url | string | No | ||||
| data.author_bestseller_tier | integer | No | ||||
| data.author_handle | string | No | jameelajamil | |||
| data.author_id | integer | No | 138271663 | |||
| data.author_name | string | No | Jameela Jamil | |||
| data.author_photo_url | string | No | ||||
| data.author_url | string | No | ||||
| data.body | string | No | ||||
| data.edited_at | string | No | ||||
| data.id | integer | No | 316240438 | |||
| data.is_ai_generated | boolean | No | ||||
| data.language | string | No | ||||
| data.published_at | string | No | ||||
| data.reaction_count | integer | No | 12846 | |||
| data.reactions | object | No | ||||
| data.reply_count | integer | No | 129 | |||
| data.restack_count | integer | No | 1139 | |||
| data.url | string | No | ||||
| msg | string | No | success |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 404 | Not Found | #/definitions/app.Response |
| 429 | Too Many Requests | #/definitions/app.Response |
| 503 | Service Unavailable | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/substack/note?note_id=316240438" \
-H "x-api-key: $CRAWLORA_API_KEY"