Skip to content
scrapeatlas.Dashboard

Search Substack publications

Try in Playground

Discover Substack publications by query with names, descriptions, author details, images, sections and podcast metadata.

GET/v1/substack/searchx-api-key
x-api-keystringrequiredheader

Your ScrapeAtlas customer key. Create one on /account/ and set SCRAPEATLAS_API_KEY.

Query parameters
3
querystringrequiredquery

Required search phrase, 1–200 characters.

min 1 chars · max 200 chars

Examplecreative writing
pagestringquery

Optional page number, 0–1,000; default 0. The response echoes the requested page.

Example0
limitstringquery

Optional result limit, 1–100; default 100.

Example20
Response fields
53
requestIdstring

Request correlation UUID.

Source request attempts, decoded bytes and elapsed milliseconds.

accounting.upstreamRequestsinteger

Number of upstream request attempts.

≥ 0

accounting.responseBytesinteger

Decoded source bytes read during this request.

≥ 0

accounting.durationMsnumber

Elapsed request time in milliseconds.

≥ 0

successboolean

True when usable data is returned; inspect status and coverage.

statusenum

success or partial for usable data; failed or challenged for a failure response.

one of: success, partial

sourceUrlstring

Canonical public URL for the requested publication, post or writer.

absolute HTTPS URL

fetchedAtstring

UTC retrieval timestamp.

Result coverage and extraction warnings.

coverage.sourcestring

Public Substack web data.

coverage.completeboolean

Whether the returned result has no reported omissions.

coverage.warningsstring[]

Warnings that explain partial results or missing fields.

coverage.orderenumoptional

Reported result order: source_order or ranked.

one of: source_order, ranked

Matching publication records.

up to 100 items

results.idinteger

Numeric publication ID.

0 – 9007199254740991

results.namestring

Publication name.

results.subdomainstring

Substack publication subdomain.

results.custom_domainstringnullable

Published custom-domain name, or null.

results.author_idintegernullable

Publication owner’s numeric user ID.

results.author_namestringnullable

Publication owner’s public name.

results.author_handlestringnullable

Publication owner’s public handle.

results.author_photo_urlstringnullable

Public author profile image URL.

results.author_biostringnullable

Public author biography.

results.twitter_screen_namestringnullable

Published X username.

results.descriptionstringnullable

Publication description.

results.hero_textstringnullable

Publication introduction text.

results.logo_urlstringnullable

Publication logo URL.

results.logo_url_widestringnullable

Wide publication logo URL.

results.cover_photo_urlstringnullable

Publication cover image URL.

results.created_atstringnullable

Publication creation timestamp.

results.languagestringnullable

Publication language code.

results.copyrightstringnullable

Published copyright attribution.

results.typestringnullable

Publication type as reported by Substack.

results.has_postsbooleannullable

Whether the publication reports posts.

results.has_podcastbooleannullable

Whether the publication reports a podcast.

results.has_recommendationsbooleannullable

Whether the publication reports recommendations.

results.podcast_titlestringnullable

Published podcast title.

results.podcast_descriptionstringnullable

Published podcast description.

results.podcast_feed_urlstringnullable

Published podcast feed URL.

results.podcast_art_urlstringnullable

Podcast artwork URL.

results.freeSubscriberCountstringnullable

Displayed free-subscriber count text.

results.rankingDetailstringnullable

Published subscriber-ranking description.

results.author_bestseller_tierintegernullable

Author bestseller tier.

Publication sections in source order.

up to 100 items

results.sections.idinteger

Numeric section ID.

0 – 9007199254740991

results.sections.namestringnullable

Section name.

results.sections.slugstringnullable

Section URL slug.

results.sections.descriptionstringnullable

Section description.

results.sections.is_podcastbooleannullable

Whether this section is a podcast.

pageinteger

Optional page number, 0–1,000; default 0. The response echoes the requested page.

≥ 0

nextPageintegernullable

Next page number, or null when another page is not reported.

moreboolean

Whether the source reports further search results.

HTTP 200 returns the success variant. Check status: partial means usable data with warnings, and failed or challenged requests carry a failure object described in Errors & responses.

Error codes
15
HTTPfailure.codeMeaning
400invalid_requestMissing, duplicated, invalid or unsupported request parameters.
401unauthorizedMissing or invalid service API key.
404not_foundThe requested publication, post or profile was not found.
422restricted_pageThe requested content requires additional access.
422unsupported_pageThe source did not provide the expected record.
502upstream_challengedThe source challenged the request.
502upstream_rate_limitedThe source rate limited the request.
502upstream_errorA source request failed.
502response_too_largeSource data exceeded the response byte limit.
502payload_too_complexSource data exceeded the traversal depth or node limit.
502unsafe_redirectThe source returned an unexpected redirect.
502request_limitThe request exhausted its source-attempt budget.
503busyAll worker request slots are in use.
504timeoutThe request exceeded its deadline.
200partialUsable data was returned with coverage warnings.