API Documentation
Programmatic access to newsletter intelligence data
Authentication
All API requests require an API key sent via the Authorization header.
curl -H "Authorization: Bearer sk_live_your_key_here" \
https://newsletterinsights.io/api/v1/newslettersGenerate API keys in Settings โ API Keys.
Rate Limits
| Tier | Daily Limit | Price |
|---|---|---|
| Free | 100 requests | $0/mo |
| Pro | 5,000 requests | $49/mo |
| Enterprise | 50,000 requests | $299/mo |
Rate limit headers are included in every response: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.
Endpoints
GET
/api/v1/newslettersList and search newsletters with pagination.
Parameters
pagenumberPage number (default: 1)per_pagenumberResults per page (default: 20, max: 100)searchstringSearch by name, author, descriptioncategorystringFilter by categoryplatformstringFilter by platform (e.g. substack, beehiiv)min_subscribersnumberMinimum subscriber countmax_subscribersnumberMaximum subscriber countsort_bystringSort field: subscribers, name, growth_week, created_atsort_directionstringasc or desc (default: desc)Example
curl -H "Authorization: Bearer sk_live_..." \
https://newsletterinsights.io/api/v1/newsletters?search=AI&per_page=2Response
{
"data": [
{
"slug": "the-ai-report",
"name": "The AI Report",
"platform": "substack",
"category": "Technology",
"subscriber_count": 45000,
"growth_rate_week": 2.3
}
],
"meta": { "total": 142, "page": 1, "per_page": 2, "has_more": true }
}GET
/api/v1/newsletters/:slugGet full details for a single newsletter by slug.
Example
curl -H "Authorization: Bearer sk_live_..." \
https://newsletterinsights.io/api/v1/newsletters/the-ai-reportResponse
{
"data": {
"slug": "the-ai-report",
"name": "The AI Report",
"platform": "substack",
"category": "Technology",
"subscriber_count": 45000,
"free_subscribers": 40000,
"paid_subscribers": 5000,
"growth_rate_week": 2.3,
"growth_rate_month": 8.1
}
}GET
/api/v1/newsletters/:slug/snapshotsGet subscriber history over time. Days capped by tier: free=30, pro=90, enterprise=365.
Parameters
daysnumberNumber of days of history (default: 30)Example
curl -H "Authorization: Bearer sk_live_..." \
https://newsletterinsights.io/api/v1/newsletters/the-ai-report/snapshots?days=7Response
{
"data": [
{
"date": "2026-02-12",
"total_subscribers": 45000,
"free_subscribers": 40000,
"paid_subscribers": 5000
}
]
}GET
/api/v1/newsletters/:slug/sponsorsGet sponsors detected in a newsletter.
Example
curl -H "Authorization: Bearer sk_live_..." \
https://newsletterinsights.io/api/v1/newsletters/the-ai-report/sponsorsResponse
{
"data": [
{
"sponsor_name": "Acme Corp",
"sponsor_domain": "acme.com",
"placement_type": "primary",
"confidence": 0.95,
"detected_at": "2026-02-01T00:00:00Z"
}
]
}GET
/api/v1/categoriesList all newsletter categories with counts.
Example
curl -H "Authorization: Bearer sk_live_..." \
https://newsletterinsights.io/api/v1/categoriesResponse
{
"data": [
{
"category": "Technology",
"newsletter_count": 842,
"total_subscribers": 12500000,
"subcategories": ["AI/ML", "Crypto", "SaaS"]
}
]
}GET
/api/v1/categories/:slug/benchmarksGet percentile benchmarks (subscribers, growth, engagement) for a category.
Example
curl -H "Authorization: Bearer sk_live_..." \
https://newsletterinsights.io/api/v1/categories/technology/benchmarksResponse
{
"data": {
"category": "Technology",
"subscriber_benchmarks": {
"p25": 1200, "p50": 5400,
"p75": 22000, "p90": 85000
},
"growth_benchmarks": {
"p25": 0.5, "p50": 1.8,
"p75": 4.2, "p90": 9.1
},
"newsletter_count": 842
}
}GET
/api/v1/sponsorsList and search sponsors with pagination.
Parameters
pagenumberPage number (default: 1)per_pagenumberResults per page (default: 20, max: 100)searchstringSearch by name or domaincategorystringFilter by categorysort_bystringSort field: total_placements, name, created_atsort_directionstringasc or desc (default: desc)Example
curl -H "Authorization: Bearer sk_live_..." \
https://newsletterinsights.io/api/v1/sponsors?search=stripeResponse
{
"data": [
{
"id": "abc-123",
"name": "Stripe",
"domain": "stripe.com",
"total_placements": 247
}
],
"meta": { "total": 1, "page": 1, "per_page": 20, "has_more": false }
}GET
/api/v1/sponsors/:idGet sponsor details with placement history.
Example
curl -H "Authorization: Bearer sk_live_..." \
https://newsletterinsights.io/api/v1/sponsors/abc-123Response
{
"data": {
"id": "abc-123",
"name": "Stripe",
"domain": "stripe.com",
"total_placements": 247,
"placements": [
{
"newsletter": { "name": "The AI Report", "slug": "the-ai-report" },
"placement_type": "primary",
"detected_at": "2026-02-01T00:00:00Z"
}
]
}
}Error Responses
Errors return a consistent JSON format:
{
"error": {
"code": "NOT_FOUND",
"message": "Newsletter not found"
}
}401Missing or invalid API key404Resource not found429Rate limit exceeded500Internal server errorGet monthly newsletter intelligence โ trends, top movers, new opportunities