Coding with AI?
Connect your agent to our MCP and let it integrate any endpoint for you in one shot.
Search Substack Notes
Search Substack Notes by keyword. Returns each note’s text, author, date, engagement (likes, replies, restacks) and any quoted post or note, newest first or top first. Supports fetching multiple pages in a single API call.
Endpoint
GET /v1/substack/notes
Price: $0.003 per page Free tier: 50 requests/month
Parameters
| Parameter | Required | Description |
|---|---|---|
query |
Yes | Search keyword (max 500 characters) |
sort_by |
No | Sort order: most_recent, top (default: most_recent) |
pages |
No | Number of pages to fetch, 1-250 (default: 1). Each page returns about 5 notes; you are billed per page returned. |
get_sentiment |
No | Set to true to add AI emotion analysis (Plutchik’s Wheel) to each result. Adds +$0.001 per page to the cost. Returns emotion scores, dominant emotion, intensity, and polarity. |
Response Fields
| Field | Type | Description |
|---|---|---|
notes |
array | Array of matching notes |
notes[].note_id |
string | Note ID |
notes[].body |
string | Note text |
notes[].date |
string | Date and time posted (UTC) |
notes[].author |
string | Author’s handle |
notes[].author_name |
string | Author’s display name |
notes[].author_id |
string | Author’s user ID |
notes[].author_url |
string | Link to the author’s profile |
notes[].source |
string | “Substack” |
notes[].domain |
string | “substack.com” |
notes[].likes |
integer | Number of likes |
notes[].replies |
integer | Number of replies |
notes[].restacks |
integer | Number of restacks |
notes[].reactions |
object | Reaction counts by emoji |
notes[].author_pic_url |
string | Author’s profile picture URL |
notes[].author_bestseller_tier |
integer | Author’s bestseller badge tier: 0, 100, 1000 or 10000 |
notes[].lang |
string | Language code |
notes[].attachments |
array | Media and quoted items. Each has type (image, video, link, post, note, publication) and url, plus title or dimensions where relevant |
notes[].publication |
string | The author’s primary publication |
notes[].url |
string | Direct link to the note |
query |
string | The search keyword |
sort_by |
string | The sort order used |
pages |
integer | Number of pages returned |
count |
integer | Number of notes returned |
Example Request
cURL
curl "https://apidirect.io/v1/substack/notes?query=claude%20code&pages=1" \
-H "X-API-Key: YOUR_API_KEY"
Python
import requests
response = requests.get(
"https://apidirect.io/v1/substack/notes",
headers={"X-API-Key": "YOUR_API_KEY"},
params={"query": "claude code", "pages": 1}
)
print(response.json())
Example Response
{
"count": 9,
"notes": [
{
"attachments": [
{
"height": 3000,
"type": "image",
"url": "https://substack-post-media.s3.amazonaws.com/public/images/3b20c7ab-894d-4fac-8c71-a770e65b2cd3_2400x3000.webp",
"width": 2400
}
],
"author": "aakashgupta",
"author_bestseller_tier": 0,
"author_id": "4429439",
"author_name": "Aakash Gupta",
"author_pic_url": "",
"author_url": "https://substack.com/@aakashgupta",
"body": "Claude Code is the best way to use AI.\n\nHere's your complete guide:\n\n1. Stop working in chat windows\n\nOpen terminal in y…",
"date": "2026-10-12 05:00:03",
"domain": "substack.com",
"lang": "en",
"likes": 1,
"note_id": "358840474",
"publication": "Product Growth",
"reactions": {
"❤": 1
},
"replies": 0,
"restacks": 0,
"source": "Substack",
"url": "https://substack.com/@aakashgupta/note/c-358840474"
}
],
"pages": 1,
"query": "claude code",
"sort_by": "most_recent"
}