Endpoint Playground
Searches public Substack profiles by name or handle. Each result carries the same subscriber signals as /substack/user, so a search enumerates writers without a second lookup per profile. Returns 20 profiles per page; use has_more rather than assuming a fixed depth, since result counts vary by query.
14 Oct 2026: 20 users; 7 fields had a value in every checked item and 5 varied between items.
Sample value profiles: profile_set_up_at: 2021-09-06 to 2026-09-23; bestseller_tier: 100 to 10,000, median 100; photo_url: substack-post-media.s3.amazonaws.com and 2 other hosts.
curl 'https://api.crawlora.net/api/v1/substack/user/search?query=pragmatic+engineer' \
-H "x-api-key: $CRAWLORA_API_KEY"| Parameter | Type | Required | Prefilled value | Description |
|---|---|---|---|---|
| query | string | Yes | pragmatic engineer | Search text matched against profile names and handles |
| page | integer | No | Zero-based page |
{
"code": 200,
"data": {
"query": "pragmatic engineer",
"page": 0,
"has_more": true,
"users": [
{
"id": 30107029,
"handle": "pragmaticengineer",
"name": "Gergely Orosz",
"url": "https://substack.com/@pragmaticengineer",
"bestseller_tier": 10000,
"subscribers": {
"total": 1100000,
"total_display": "1.1M+ subscribers",
"total_hidden": false,
"total_rough": "Millions",
"paid_rough": "Tens of thousands",
"paid_rough_int": 10000,
"paid_tier": 10000,
"follower_count": 1210186
}
}
]
},
"msg": "success"
}The sample response, schema and code snippets below work without an account. Sending a live request needs an API key.