API Substack

Substack Publications API

Récupérez les publications de n’importe quelle publication Substack par son URL, ou passez l’URL d’un seul article (…/p/slug) pour ne récupérer que cet article. Renvoie titre, sous-titre, date de publication, statut de paywall, nombre de mots, engagement (réactions, commentaires, restacks), profil de l’auteur, détails de la publication, corps complet de l’article en texte, HTML et Markdown, et fils de commentaires facultatifs.

0,439604 $US/1k résultats, paiement à la requête, sans abonnement.

Clearheaded
clearheaded.blog
ClearheadedSubscribe
HomeArchiveAbout

Why roadmaps are guesses

Sep · Priya Nakamura

The three-question standup

A shorter standup that actually surfaces risk

PaidSep · Priya Nakamura

Ask me anything: hiring your first PM

Reader questions from last week's thread

Sep · Priya Nakamura

Clearheaded

Type your email…Subscribe

Recommendations

Ce que l’API a renvoyéitems[0]
{
"postId": "148302911",
"title": "Why roadmaps are guesses",
"url": "https://www.clearheaded.blog/p/why-roadmaps-are-guesses",
"slug": "why-roadmaps-are-guesses",
"postType": "newsletter",
"createdUtc": 1758585600,
"wordcount": 2140,
"authorName": "Priya Nakamura",
+5 champs de plus
}
Disponibilité
47,06%
30d · 34 appels
Requêtes
34
30 j · par semaine, 12 dernières sem.
Réponse
3,7s
médiane · 30d

Tarifs

Tarifs de l’API Substack Publications

Vous payez
4,40 $US
0,439604 $US/1k résultats, seulement pour ce que vous utilisez. Aucun forfait mensuel.
Une requête coûte au plus 0,0444 $US (101 results).
Le solde de départ de 0,10 $US couvre au moins 2 requêtes.

Essayer

Obtenez Substack Publications en une requête

Ouvrir dans
Obtenir une clé gratuite
Exemple de réponse
Les exécutions gratuites ne renvoient que les 3 premiers résultats. Alimentez une clé pour obtenir la réponse complète.
{
  "found": true,
  "data": {
    "items": [
      {
        "postId": "148302911",
        "title": "Why roadmaps are guesses",
        "url": "https://www.clearheaded.blog/p/why-roadmaps-are-guesses",
        "slug": "why-roadmaps-are-guesses",
        "postType": "newsletter",
        "createdUtc": 1758585600,
        "wordcount": 2140,
        "authorName": "Priya Nakamura",
        "authorHandle": "priyanakamura",
        "contentStatus": "full",
        "text": "Every roadmap I have shipped was a guess with a deadline attached.",
        "publication": {
          "id": "pub_5521",
          "name": "Clearheaded",
          "url": "https://www.clearheaded.blog",
          "subdomain": "clearheaded",
          "customDomain": "www.clearheaded.blog",
          "description": "Notes on building things without lying to yourself.",
          "image": "https://substackcdn.com/image/fetch/clearheaded/logo.png",
          "language": "en",
          "paymentsEnabled": true,
          "subscriberCount": 38400
        },
        "comments": [
          {
            "commentId": "c_88213",
            "text": "This matches every planning meeting I have sat through for a decade.",
            "createdUtc": 1758600000,
            "authorName": "Devon Okafor",
            "authorHandle": "devonokafor",
            "authorUrl": "https://substack.com/@devonokafor",
            "authorImage": "https://substackcdn.com/image/fetch/clearheaded/devon-avatar.png",
            "reactionCount": 44,
            "restackCount": 2,
            "isPinned": true,
            "isAuthor": false,
            "replies": [
              {
                "commentId": "c_88240",
                "text": "Glad it landed. Curious how your team names the guess out loud.",
                "createdUtc": 1758603600,
                "authorName": "Priya Nakamura",
                "authorHandle": "priyanakamura",
                "authorUrl": "https://www.clearheaded.blog/people/priya-nakamura",
                "authorImage": "https://substackcdn.com/image/fetch/clearheaded/priya-avatar.png",
                "reactionCount": 12,
                "restackCount": 0,
                "isPinned": false,
                "isAuthor": true
              }
            ]
          }
        ]
      },
      {
        "postId": "148190442",
        "title": "The three-question standup",
        "url": "https://www.clearheaded.blog/p/the-three-question-standup",
        "slug": "the-three-question-standup",
        "subtitle": "",
        "description": "A shorter standup that actually surfaces risk",
        "postType": "newsletter",
        "createdUtc": 1757980800,
        "isPaid": true,
        "language": "en",
        "wordcount": 1420,
        "reactionCount": 501,
        "commentCount": 29,
        "replyCount": 6,
        "restackCount": 18,
        "authorName": "Priya Nakamura",
        "authorHandle": "priyanakamura",
        "authorUrl": "https://www.clearheaded.blog/people/priya-nakamura",
        "contentStatus": "preview_only",
        "text": "Most standups answer the same three questions badly. Here is a version that takes six minutes and actually works...",
        "publication": {
          "id": "pub_5521",
          "name": "Clearheaded",
          "url": "https://www.clearheaded.blog",
          "subdomain": "clearheaded"
        },
        "comments": []
      },
      {
        "postId": "148075310",
        "title": "Ask me anything: hiring your first PM",
        "url": "https://www.clearheaded.blog/p/ask-me-anything-hiring-your-first-pm",
        "slug": "ask-me-anything-hiring-your-first-pm",
        "subtitle": "Reader questions from last week's thread",
        "description": "Reader questions from last week's thread",
        "postType": "thread",
        "createdUtc": 1757376000,
        "isPaid": false,
        "language": "en",
        "wordcount": 640,
        "reactionCount": 203,
        "commentCount": 41,
        "replyCount": 9,
        "restackCount": 5,
        "authorName": "Priya Nakamura",
        "authorHandle": "priyanakamura",
        "authorUrl": "https://www.clearheaded.blog/people/priya-nakamura",
        "contentStatus": "metadata_only",
        "publication": {
          "id": "pub_5521",
          "name": "Clearheaded",
          "url": "https://www.clearheaded.blog",
          "subdomain": "clearheaded"
        },
        "comments": []
      }
    ]
  }
}

Référence complète des paramètres et de la réponse : chaque champ, type et exemple de cet endpoint.

Référence

Une requête, une seule forme de réponse.

Chaque champ que vous envoyez et chaque champ que vous recevez, avec un vrai exemple.

Dernière vérification : 2026-10-07 · disponibilité et latence mesurées sur 30d

Corps de la requête

JSON, envoyé à cet endpoint.

  • urlstring

    https://www.clearheaded.blog

    Soit l’URL d’une publication Substack ou un domaine personnalisé pour récupérer ses publications récentes (p. ex. https://www.astralcodexten.com), SOIT l’URL d’un seul article pour récupérer uniquement cet article avec son contenu complet (p. ex. https://www.astralcodexten.com/p/your-book-review).

  • contentTypeenum

    Restreint à un seul type de publication, ou 'all' (p. ex. newsletter).

  • endDatestring

    Ne renvoie que les publications publiées jusqu’à cette date, au format AAAA-MM-JJ (p. ex. 2024-12-31). Appliqué parmi les 'limit' publications les plus récentes analysées.

  • includeCommentsboolean

    Inclut les fils de commentaires publics et leurs réponses directes sur chaque publication (p. ex. true).

  • includeContentboolean

    true

    Inclut le corps complet de l’article en texte, HTML et Markdown. Mettez false pour les métadonnées seules, ce qui est plus rapide (p. ex. false).

  • limitinteger

    3

    Nombre maximal de publications récentes à renvoyer quand une URL de publication est fournie (1-100, 25 par défaut) ; ignoré pour l’URL d’une seule publication, qui renvoie toujours cette seule publication. Vous êtes facturé par publication renvoyée, donc une limite plus basse coûte moins.

  • maxCommentsinteger

    Nombre maximal de commentaires collectés par publication quand 'includeComments' vaut true (0-500, 20 par défaut). Sans coût supplémentaire (p. ex. 50).

  • minCommentsinteger

    Ne renvoie que les publications avec au moins ce nombre de commentaires (p. ex. 10).

  • minReactionsinteger

    Ne renvoie que les publications avec au moins ce nombre de réactions (p. ex. 100).

  • minWordCountinteger

    Ne renvoie que les publications d’au moins ce nombre de mots, ce qui écarte les notes courtes et les annonces (p. ex. 1000).

  • onlyFreeboolean

    Ne renvoie que les publications gratuites (sans paywall) (p. ex. true).

  • startDatestring

    Ne renvoie que les publications publiées à partir de cette date, au format AAAA-MM-JJ (p. ex. 2024-01-01). Appliqué parmi les 'limit' publications les plus récentes analysées, donc augmentez 'limit' pour atteindre des périodes plus anciennes.

Vous envoyez. Un petit corps JSON. Les valeurs affichées sont des exemples à remplacer par les vôtres.

Réponse

JSON, une valeur d’exemple par champ.

  • foundboolean

    true

each itemdata.items[]
  • postIdstring

    148302911

  • titlestring

    Why roadmaps are guesses

  • urlstring

    https://www.clearheaded.blog/p/why-roadmaps-are-guesses

  • slugstring

    why-roadmaps-are-guesses

  • postTypestring

    newsletter

  • createdUtcnumber

    1758585600

  • wordcountnumber

    2140

  • authorNamestring

    Priya Nakamura

  • authorHandlestring

    priyanakamura

  • contentStatusstring

    full

  • textstring

    Every roadmap I have shipped was a guess with a deadline attached.

publicationdata.items[].publication
  • idstring

    pub_5521

  • namestring

    Clearheaded

  • urlstring

    https://www.clearheaded.blog

  • subdomainstring

    clearheaded

  • customDomainstring

    www.clearheaded.blog

  • descriptionstring

    Notes on building things without lying to yourself.

  • imagestring

    https://substackcdn.com/image/fetch/clearheaded/logo.png

  • languagestring

    en

  • paymentsEnabledboolean

    true

  • subscriberCountnumber

    38400

each commentdata.items[].comments[]
  • commentIdstring

    c_88213

  • textstring

    This matches every planning meeting I have sat through for a decade.

  • createdUtcnumber

    1758600000

  • authorNamestring

    Devon Okafor

  • authorHandlestring

    devonokafor

  • authorUrlstring

    https://substack.com/@devonokafor

  • authorImagestring

    https://substackcdn.com/image/fetch/clearheaded/devon-avatar.png

  • reactionCountnumber

    44

  • restackCountnumber

    2

  • isPinnedboolean

    true

  • isAuthorboolean

    false

each replydata.items[].comments[].replies[]
  • commentIdstring

    c_88240

  • textstring

    Glad it landed. Curious how your team names the guess out loud.

  • createdUtcnumber

    1758603600

  • authorNamestring

    Priya Nakamura

  • authorHandlestring

    priyanakamura

  • authorUrlstring

    https://www.clearheaded.blog/people/priya-nakamura

  • authorImagestring

    https://substackcdn.com/image/fetch/clearheaded/priya-avatar.png

  • reactionCountnumber

    12

  • restackCountnumber

    0

  • isPinnedboolean

    false

  • isAuthorboolean

    true

Vous recevez. Des champs nommés et typés, dans la même forme quelle que soit la source qui répond.

FAQ

À propos de l’API Substack Publications

L’API Substack Publications d’AnyAPI renvoie des données Substack en JSON normalisé à partir d’un appel POST à /v1/run/substack.posts. Récupérez les publications de n’importe quelle publication Substack par son URL, ou passez l’URL d’un seul article (…/p/slug) pour ne récupérer que cet article. Renvoie titre, sous-titre, date de publication, statut de paywall, nombre de mots, engagement (réactions, commentaires, restacks), profil de l’auteur, détails de la publication, corps complet de l’article en texte, HTML et Markdown, et fils de commentaires facultatifs. AnyAPI renvoie un schéma normalisé unique quelle que soit la source qui répond. Elle coûte 0,44 $US pour 1 000 résultats, et jamais plus de 0,0444 $US pour une seule requête, en dollars US, sans abonnement et sans minimum mensuel. Ces 30 derniers jours, 47,1% des appels Substack Publications passés par AnyAPI ont réussi, avec un temps de réponse médian de 3,7 secondes, sur 34 appels mesurés.

Elle coûte 0,44 $US pour 1 000 résultats, et jamais plus de 0,0444 $US pour une seule requête, en dollars US, sans abonnement et sans minimum mensuel. Vous alimentez un portefeuille en USD et chaque appel le débite. Certaines requêtes échouées financées par le portefeuille entraînent des frais de traitement que nous répercutons au prix coûtant, sans marge ; la réponse d’erreur indique le montant facturé.

Récupérez les publications de n’importe quelle publication Substack par son URL, ou passez l’URL d’un seul article (…/p/slug) pour ne récupérer que cet article. Renvoie titre, sous-titre, date de publication, statut de paywall, nombre de mots, engagement (réactions, commentaires, restacks), profil de l’auteur, détails de la publication, corps complet de l’article en texte, HTML et Markdown, et fils de commentaires facultatifs. La réponse est du JSON normalisé avec la même enveloppe que celle de tous les endpoints AnyAPI, donc analyser un second endpoint revient à changer l’URL et rien d’autre.

Ces 30 derniers jours, 47,1% des appels Substack Publications passés par AnyAPI ont réussi, avec un temps de réponse médian de 3,7 secondes, sur 34 appels mesurés. Ce sont les propres mesures d’AnyAPI du trafic passant par la passerelle, recalculées en continu, et non un objectif de niveau de service publié.

Oui. Un nouveau compte AnyAPI démarre avec 0,10 $US de solde gratuit, sans carte, ce qui couvre au moins 2 appels Substack Publications à 0,0444 $US chacun au maximum.

Envoyez une requête POST à https://api.getanyapi.com/v1/run/substack.posts avec votre clé AnyAPI dans un en-tête « Authorization: Bearer » et l’entrée en corps JSON. La même clé et le même portefeuille fonctionnent sur tous les endpoints AnyAPI.

Non. Vous ajoutez des dollars US à un solde AnyAPI prépayé unique et chaque requête le débite. Il n’y a ni forfait mensuel ni minimum, et le même solde paie tous les endpoints AnyAPI.

Oui. Installez @getanyapi/sdk depuis npm pour TypeScript ou getanyapi depuis pip pour Python. Les deux appellent chaque endpoint AnyAPI avec la même clé, et n’importe quel client HTTP fonctionne aussi.

Oui. Un agent peut se connecter au serveur MCP d’AnyAPI à https://api.getanyapi.com/mcp, ou créer sa propre clé d’essai gratuit avec un seul POST non authentifié vers https://api.getanyapi.com/agent/signup et appeler cet endpoint en HTTP.