Endpoint Playground
Returns a publication's public profile and its complete subscription offering: every purchasable web plan with per-currency pricing, the separately priced App Store plans, per-tier benefit copy, and the toggles governing which tiers are sold. Identify the publication by name (a subdomain such as semianalysis, or a custom domain such as www.thefp.com) or by numeric publication_id -- exactly one is required. Prefer publication_id when you have it: it reads a compact document, while resolving by name has to parse the publication's full homepage.
14 Oct 2026: 2 subscription.plans; 9 fields had a value in every checked item.
Sample value profiles: amount_cents: 5,000 to 50,000, median 5,000; active: true in 2 of 2; currencies: median 14 entries.
curl 'https://api.crawlora.net/api/v1/substack/publication' \
-H "x-api-key: $CRAWLORA_API_KEY"| Parameter | Type | Required | Prefilled value | Description |
|---|---|---|---|---|
| publication | string | No | Publication subdomain or custom domain. Provide this or publication_id. | |
| publication_id | integer | No | Numeric publication id. Cheaper than resolving by name. Provide this or publication. |
{
"code": 200,
"data": {
"id": 6349492,
"name": "SemiAnalysis",
"subdomain": "semianalysis",
"url": "https://semianalysis.substack.com",
"explicit": false,
"invite_only": false,
"subscribers": {
"total": 315000,
"total_hidden": false,
"paid_rough": "Thousands of paid subscribers",
"paid_tier": 1000
},
"subscription": {
"payments_state": "enabled",
"monthly_disabled": true,
"annual_disabled": false,
"pledges_enabled": false,
"free_trial_enabled": false,
"founding_plan_name": "Founding Member",
"group_discount_percent": 20,
"plans": [
{
"id": "yearly500usd_bc37ea9d",
"kind": "annual",
"nickname": "$500 a year",
"amount_cents": 50000,
"currency": "usd",
"interval": "year",
"interval_count": 1,
"active": true,
"currencies": [
{
"currency": "eur",
"amount_cents": 45000
},
{
"currency": "gbp",
"amount_cents": 40000
}
]
}
],
"app_store_plans": [
{
"amount_cents": 6000,
"currency": "usd",
"period": "month",
"is_founding": false,
"display_name": "SemiAnalysis (Monthly)",
"display_price": "$60",
"active": true
}
],
"paid_benefits": [
"Subscriber-only posts and full archive"
]
}
},
"msg": "success"
}The sample response, schema and code snippets below work without an account. Sending a live request needs an API key.