Reletter
Reletter API

The newsletter API for apps, agents and outreach tools

Subscriber numbers, contacts, full-text posts and rankings across 6m+ Substack, LinkedIn and Ghost newsletters. Search the database, monitor mentions in real time and feed your AI agents, all powered by the same data behind Reletter.

api.reletter.comGET/api/publications/doomberg/{"id": "doomberg","name": "Doomberg","platform": "substack","language": "en","subscribers": 373000,"engagement": 92,"publishing_model": "freemium","num_issues": 496,"active": true,...}
Use cases

What you can build

Brand and keyword monitoring

Search the full text of newsletter issues for any keyword, with a rolling threshold for near-realtime alerts on brands, people or topics.

Discovery and outreach

Help users find newsletters to pitch their product, book or service to. Filter by topic, audience size, language and platform.

Sponsorship and PR lists

Build target lists for ad campaigns and PR outreach. Export contacts and rankings to power outbound workflows.

CRM enrichment

Augment your customer or prospect database with newsletter metadata, subscriber counts and verified contact emails.

Newsletter analytics

Pull subscriber numbers, engagement, language, country and chart rankings across Substack and LinkedIn.

LLM and agent pipelines

Feed newsletter metadata, contacts and full issue text into your own AI agent or RAG pipeline. Markdown docs at /llms.txt make integration trivial.

Pricing

Get API Access

Pick a monthly request quota. Add to any Reletter plan. Cancel anytime.
From$59/month
Tiers from 5,000 to 50,000 requests / month.
5,000 requests / month
$59/mo
10,000 requests / month
$99/mo
25,000 requests / month
$229/mo
50,000 requests / month
$429/mo
You'll pick your base Reletter plan on the pricing page.
Already a Reletter customer? Add the API to your subscription from the API tab in your account.
For AI agents and LLMs

Connect your agent to Reletter

Three ways to wire the Reletter API into your AI workflow: a typed Python client and CLI, a remote MCP server, and Markdown docs for any LLM.

Python library & CLI

The official reletter Python client. Sync and async, typed, with auto-pagination. Includes a reletter CLI for shell scripts and AI coding agents.

pip install reletter

MCP server

Remote Model Context Protocol server. Connect Claude, ChatGPT, Cursor, or any MCP client to https://mcp.reletter.com and authenticate with your Reletter API key.

Markdown reference

Plain-text API reference for LLMs. Paste it into a system prompt or fetch it at runtime. Two flavors: a short index, and the full reference with every endpoint inlined.

Reference

Endpoints

All endpoints are JSON over HTTPS, served from https://api.reletter.com. Authenticate with your API key on every request:

curl -H "x-reletter-api-key: YOUR_API_KEY" \
  https://api.reletter.com/api/accounts/quota/
GET/api/search/publications/
Search publications
+

Search the Reletter index for newsletters by topic, title or author. Supports filters for language, subscriber count, engagement, country, platform and more.

Parameters

querystringSearch query.
modestringOne of: topics, titles, authors. Default: topics.
pageintegerPage number, default 1.
per_pageintegerResults per page (max 100).
filtersstringComma-separated filters, e.g. "active:is:true,engagement:gte:50,subscribers:gte:5000".

Example response

{
  "page": 1,
  "per_page": 25,
  "count": 124,
  "more": true,
  "spelling_suggestion": null,
  "exact_matches": [],
  "publications": [
    {
      "id": "doomberg",
      "platform": "substack",
      "url": "https://newsletter.doomberg.com",
      "name": "Doomberg",
      "description": "A lateral-thinking approach to energy, finance, and geopolitics.",
      "founded": "2021-04-21T18:58:46Z",
      "subscribers": 373000,
      "engagement": 92,
      "language": "en",
      "issue_frequency": "twiceweekly",
      "publishing_model": "freemium",
      "num_issues": 496,
      "active": true,
      "sponsored": false
    }
  ]
}
GET/api/search/issues/
Search newsletter issues
+

Full-text search across the body and titles of every issue Reletter has indexed. Highlights matching terms when highlight=true.

Parameters

querystringSearch query.
highlightbooleanInclude highlighted snippets in the response.
thresholdintegerOnly include issues newer than this many seconds ago.
pageintegerPage number, default 1.
per_pageintegerDefault 25, max 100.

Example response

{
  "page": 1,
  "per_page": 25,
  "count": 12,
  "more": false,
  "spelling_suggestion": null,
  "issues": [
    {
      "id": "pdh-the-coal-paradox",
      "title": "The Coal Paradox",
      "contributors": [
        "Doomberg"
      ],
      "published": "2026-04-22T13:01:00Z",
      "num_likes": 412,
      "num_comments": 28,
      "url": "https://newsletter.doomberg.com/p/the-coal-paradox",
      "image_url": "https://substackcdn.com/image/...",
      "type": "newsletter",
      "substack_slug": "the-coal-paradox",
      "substack_podcast_url": null,
      "text": "... full body text ...",
      "highlight": {
        "title": null,
        "text": [
          "... rising <em>coal</em> demand ..."
        ]
      },
      "publication": {
        "id": "doomberg",
        "platform": "substack",
        "name": "Doomberg"
      }
    }
  ]
}
GET/api/search/autocomplete/
Autocomplete
+

Autocomplete suggestions for the start of a query. Suitable for type-ahead UIs.

Parameters

querystringQuery prefix.
modestringOne of: topics, titles, authors, issues.

Example response

{
  "suggestions": [],
  "publications": [
    {
      "id": "doomberg",
      "name": "Doomberg",
      "platform": "substack"
    },
    {
      "id": "noahpinion",
      "name": "Noahpinion",
      "platform": "substack"
    }
  ]
}
GET/api/publications/<publication_id>/
Get publication
+

Full metadata for a single publication: subscribers, engagement, social, contributors, rankings, latest issues.

Parameters

publication_idstringReletter slug, e.g. "doomberg".

Example response

{
  "publication": {
    "id": "doomberg",
    "platform": "substack",
    "url": "https://newsletter.doomberg.com",
    "name": "Doomberg",
    "short_name": "Doomberg",
    "description": "A lateral-thinking approach to energy, finance, and geopolitics.",
    "artwork_url": "https://substackcdn.com/image/...",
    "founded": "2021-04-21T18:58:46Z",
    "subscribers": 373000,
    "added": "2023-02-08T12:45:40Z",
    "active": true,
    "language": "en",
    "engagement": 92,
    "sponsored": false,
    "estimated_ad_cost": {
      "min_cpm": 1000,
      "max_cpm": 3000,
      "min_cost": 373000,
      "max_cost": 1119000
    },
    "est_monthly_visits": 63308,
    "issue_frequency": "twiceweekly",
    "num_issues": 496,
    "publishing_model": "freemium",
    "contributors": [
      {
        "id": "doomberg",
        "name": "Doomberg",
        "platform": "substack"
      }
    ],
    "social": [
      {
        "channel": "twitter",
        "identifier": "DoombergT",
        "followers": 162000
      }
    ],
    "rankings": [
      {
        "platform": "substack",
        "category": "finance",
        "position": 4
      }
    ],
    "badges": [
      "top-100"
    ]
  }
}
GET/api/issues/?publication_id=<id>
List issues for a publication
+

Recent issues for a given publication, in chronological order (newest first).

Parameters

publication_idstringReletter publication ID.

Example response

{
  "issues": [
    {
      "id": "pdh-the-coal-paradox",
      "title": "The Coal Paradox",
      "contributors": [
        "Doomberg"
      ],
      "published": "2026-04-22T13:01:00Z",
      "num_likes": 412,
      "num_comments": 28,
      "url": "https://newsletter.doomberg.com/p/the-coal-paradox",
      "image_url": "https://substackcdn.com/image/...",
      "type": "newsletter",
      "substack_slug": "the-coal-paradox",
      "substack_podcast_url": null,
      "text": "... full body text ..."
    }
  ]
}
GET/api/issues/<issue_id>/
Get an issue
+

Full data for a single issue, including the body text and the publication it belongs to.

Parameters

issue_idstringReletter issue ID.

Example response

{
  "issue": {
    "id": "pdh-the-coal-paradox",
    "title": "The Coal Paradox",
    "contributors": [
      "Doomberg"
    ],
    "published": "2026-04-22T13:01:00Z",
    "num_likes": 412,
    "num_comments": 28,
    "url": "https://newsletter.doomberg.com/p/the-coal-paradox",
    "image_url": "https://substackcdn.com/image/...",
    "type": "newsletter",
    "substack_slug": "the-coal-paradox",
    "substack_podcast_url": null,
    "text": "... full body text ...",
    "publication": {
      "id": "doomberg",
      "platform": "substack",
      "name": "Doomberg",
      "subscribers": 373000
    }
  }
}
GET/api/contacts/?publication_id=<id>
Get contacts for a publication
+

Email contacts, social accounts, and contributor profiles for a publication.

Parameters

publication_idstringReletter publication ID.

Example response

{
  "fetchable": false,
  "contacts": {
    "email": [
      {
        "full_name": "Doomberg Editorial",
        "email": "[email protected]",
        "category": "general",
        "verification_status": "valid"
      }
    ],
    "social": [
      {
        "channel": "twitter",
        "identifier": "DoombergT",
        "url": "https://twitter.com/DoombergT",
        "added": "2023-02-08T12:45:40Z"
      }
    ],
    "contributors": [
      {
        "id": "doomberg",
        "platform": "substack",
        "name": "Doomberg",
        "bio": "A lateral-thinking team writing on energy and markets.",
        "social": [],
        "owner": true
      }
    ]
  }
}
GET/api/charts/
List chart platforms and categories
+

Index of available chart platforms and their categories. Use the returned slugs with /api/charts/<platform>/<category>/.

Example response

{
  "reletter": [
    {
      "id": "top-50",
      "name": "Reletter Top 50",
      "variants": null
    }
  ],
  "linkedin": [
    {
      "id": "top-50",
      "name": "LinkedIn Top 50",
      "variants": null
    }
  ],
  "substack": [
    {
      "id": "top-50",
      "name": "Substack Top 50",
      "variants": null
    },
    {
      "id": "finance",
      "name": "Finance",
      "variants": [
        "paid",
        "free"
      ]
    }
  ]
}
GET/api/charts/<platform>/<category>/
Get chart rankings
+

Rankings on a given platform / category. Each entry is a full publication dict.

Parameters

variantstringOptional: paid, free, rising, etc. (where supported).

Example response

{
  "name": "Finance",
  "platform": "substack",
  "variant": null,
  "publications": [
    {
      "id": "doomberg",
      "platform": "substack",
      "name": "Doomberg",
      "subscribers": 373000,
      "engagement": 92
    }
  ]
}
GET/api/accounts/quota/
Check API quota
+

Returns your current API usage and quota for the calendar month. This endpoint does not count against your quota.

Example response

{
  "usage": 1284,
  "quota": 5000
}