Substack hub

Substack Profile API

A reader's public profile, the publications they write for and the ones they show publicly.

GET /v1/substack/profiles/{handle}

1 credit Failed requests are free

About this endpoint

GET /v1/substack/profiles/{handle} resolves a public reader profile. data.profile carries id, name, handle, slug, bio, photoUrl, createdAt, isDisabled, followerCount, subscriberCount, subscriberCountLabel, roughSubscribers, bestsellerTier, leaderboard, links, publicationUrl, hasNotes, hasPosts, recommendationCount and primaryPublication.

publications[] lists the publications the person writes for, each with role, public and isPrimary. subscriptions[] lists the publications they show publicly, with visibility, membershipState, type and isFounding. subscriptionsTruncated is true when Substack cut that list. lookupStatus is found or not_found.

Substack Profile API FAQ

What handle do I use?

The handle shown on the profile, for example dieworkwear. Letters, digits, dots, underscores and hyphens are accepted. Handles are case-sensitive, so use the exact casing shown on the profile.

Are subscriptions complete?

Only the publications a person shows publicly appear. When Substack cuts the list, subscriptionsTruncated is true. Use profile.subscriptions.list for the paged version.

What do the subscriber numbers mean?

subscriberCount is numeric when Substack publishes one. The labels such as subscriberCountLabel and roughSubscribers are the bands Substack displays, so treat them as labels rather than exact counts.

How many credits does a profile lookup cost?

Pricing is documented on the operation in the API registry (shown on this page). Confirm on every response with meta.creditsCharged: that field is the billing source of truth.