WhatsTrending API
A free, no-auth REST API for live, cross-signal AI trends — model usage, news, repos, funding and tools, all in one place. No key. No signup. CORS-enabled. JSON.
Response shape & CORS
JSON endpoints return an envelope: { "success": true, "data": … } on success, or { "success": false, "error": "…" } on failure. Every endpoint sends Access-Control-Allow-Origin: *, so you can call it straight from the browser.
The .md mirrors, /llms.txt, RSS and the sitemap return plain text / XML (not the JSON envelope).
/api/articles
The latest AI/tech news — aggregated from 20+ sources, de-duplicated, categorized and LLM-summarized. Refreshed every 6 hours.
| Param | Type | Description |
|---|---|---|
| limit | integer | Max items to return. Default 50. |
| offset | integer | Skip the first N items (pagination). Default 0. |
| category | string | Optional filter, e.g. Research, Product, Regulation. |
curl -s "https://whatstrending.ai/api/articles?limit=3"const res = await fetch('https://whatstrending.ai/api/articles?limit=3');
const { success, data } = await res.json();
console.log(data);import requests
r = requests.get('https://whatstrending.ai/api/articles?limit=3')
print(r.json()['data'])Sample response
{
"success": true,
"data": [
{
"title": "From PGP to Mythos: a brief history of export controls",
"slug": "from-pgp-to-mythos-a-brief-history-of-export-controls",
"source": "TechCrunch",
"category": "Regulation",
"date": "Fri, 19 Jun 2026 22:40:14 +0000",
"summary": "The U.S. Commerce Department recently issued an export control directive…",
"trendScore": 1
}
]
}
/api/articles/{slug}
A single article by its slug, including the full rewritten body. Get a slug from the feed above.
| Param | Type | Description |
|---|---|---|
| slug | string (path) | The article slug, e.g. from /api/articles. |
curl -s "https://whatstrending.ai/api/articles/from-pgp-to-mythos-a-brief-history-of-export-controls-that-didnt-stop-anyone"const res = await fetch('https://whatstrending.ai/api/articles/from-pgp-to-mythos-a-brief-history-of-export-controls-that-didnt-stop-anyone');
const { success, data } = await res.json();
console.log(data);import requests
r = requests.get('https://whatstrending.ai/api/articles/from-pgp-to-mythos-a-brief-history-of-export-controls-that-didnt-stop-anyone')
print(r.json()['data'])Sample response
{
"success": true,
"data": {
"title": "From PGP to Mythos: a brief history of export controls",
"slug": "from-pgp-to-mythos-a-brief-history-of-export-controls",
"source": "TechCrunch",
"category": "Regulation",
"date": "Fri, 19 Jun 2026 22:40:14 +0000",
"summary": "The U.S. Commerce Department recently issued an export control directive…",
"body": "The U.S. Commerce Department recently issued an export control… (full text)"
}
}
/api/models
Live LLM usage leaderboard built from real OpenRouter throughput — ranked by tokens processed, with provider, pricing, and context window.
| Param | Type | Description |
|---|---|---|
| limit | integer | Max models to return. Default 50. |
| offset | integer | Skip the first N models. Default 0. |
| category | string | Optional filter, e.g. Open Source. |
curl -s "https://whatstrending.ai/api/models?limit=3"const res = await fetch('https://whatstrending.ai/api/models?limit=3');
const { success, data } = await res.json();
console.log(data);import requests
r = requests.get('https://whatstrending.ai/api/models?limit=3')
print(r.json()['data'])Sample response
{
"success": true,
"data": [
{
"rank": 1,
"name": "DeepSeek V4 Flash",
"provider": "DeepSeek",
"score": 4676,
"scoreDisplay": "4.68T",
"tokens": 4676449991973,
"requests": 362209743,
"pricing": "$0.09/$0.18",
"context": "1M",
"category": "Open Source",
"change": "0",
"or": "deepseek/deepseek-v4-flash"
}
]
}
/api/models/{id}
A single model by its id (the model name lowercased with spaces as dashes, e.g. deepseek-v4-flash).
| Param | Type | Description |
|---|---|---|
| id | string (path) | Model id — name lowercased, spaces → dashes. |
curl -s "https://whatstrending.ai/api/models/deepseek-v4-flash"const res = await fetch('https://whatstrending.ai/api/models/deepseek-v4-flash');
const { success, data } = await res.json();
console.log(data);import requests
r = requests.get('https://whatstrending.ai/api/models/deepseek-v4-flash')
print(r.json()['data'])Sample response
{
"success": true,
"data": {
"rank": 1,
"name": "DeepSeek V4 Flash",
"provider": "DeepSeek",
"score": 4676,
"scoreDisplay": "4.68T",
"pricing": "$0.09/$0.18",
"context": "1M",
"category": "Open Source",
"or": "deepseek/deepseek-v4-flash"
}
}
/api/most-read
Top articles by view count. Returns an array of { slug, views } — pair the slug with /api/articles/{slug} for the full piece. (May be empty when view data has not yet accumulated.)
No parameters.
curl -s "https://whatstrending.ai/api/most-read"const res = await fetch('https://whatstrending.ai/api/most-read');
const { success, data } = await res.json();
console.log(data);import requests
r = requests.get('https://whatstrending.ai/api/most-read')
print(r.json()['data'])Sample response
{
"success": true,
"data": [
{
"slug": "openai-ships-realtime-agents",
"views": 1284
},
{
"slug": "anthropic-opus-4-8-released",
"views": 977
}
]
}
/api/awesome-data
Everything in one call: the full AI tools directory, head-to-head comparisons, and the top 20 models. Built for static-site generators and weekly README syncs.
No parameters.
curl -s "https://whatstrending.ai/api/awesome-data"const res = await fetch('https://whatstrending.ai/api/awesome-data');
const { success, data } = await res.json();
console.log(data);import requests
r = requests.get('https://whatstrending.ai/api/awesome-data')
print(r.json()['data'])Sample response
{
"generatedAt": "2026-06-20T14:41:13.657Z",
"site": "https://whatstrending.ai",
"tools": [
{
"name": "Cursor",
"tagline": "The AI code editor",
"description": "…",
"url": "https://cursor.com",
"category": "Coding",
"pricing": "Freemium"
}
],
"comparisons": [
{
"a": "Cursor",
"b": "GitHub Copilot",
"slug": "cursor-vs-github-copilot"
}
],
"models": [
"… top 20 models, same shape as /api/models"
]
}
/feed.xml
Standard RSS 2.0 feed of the latest AI news. Also served at /rss and /rss.xml. Content-Type: application/xml.
No parameters.
curl -s "https://whatstrending.ai/feed.xml"const res = await fetch('https://whatstrending.ai/feed.xml');
const text = await res.text();
console.log(text);import requests
r = requests.get('https://whatstrending.ai/feed.xml')
print(r.text)Sample response
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>AI News, Model Rankings & Trending AI Tools | whatstrending.ai</title>
<link>https://whatstrending.ai</link>
<description>The latest AI news…</description>
<item> … </item>
</channel>
</rss>
/news.md
The news feed as clean Markdown — built for AI agents and LLM context windows. Content-Type: text/markdown.
No parameters.
curl -s "https://whatstrending.ai/news.md"const res = await fetch('https://whatstrending.ai/news.md');
const text = await res.text();
console.log(text);import requests
r = requests.get('https://whatstrending.ai/news.md')
print(r.text)Sample response
# Latest AI News — whatstrending.ai
Aggregated from 20 AI/tech sources, de-duplicated, categorized, and summarized by an LLM. Refreshed every 6 hours.
## …
/models.md
The model leaderboard as Markdown — agent-friendly mirror of /api/models. Content-Type: text/markdown.
No parameters.
curl -s "https://whatstrending.ai/models.md"const res = await fetch('https://whatstrending.ai/models.md');
const text = await res.text();
console.log(text);import requests
r = requests.get('https://whatstrending.ai/models.md')
print(r.text)Sample response
# AI Model Leaderboard — whatstrending.ai
Ranked by live token throughput via OpenRouter. Refreshed every 6 hours.
| # | Model | Provider | … |
/llms.txt
The llms.txt site map for LLMs — a structured plaintext index pointing agents at the Markdown mirrors and key pages. Also at /.well-known/llms.txt.
No parameters.
curl -s "https://whatstrending.ai/llms.txt"const res = await fetch('https://whatstrending.ai/llms.txt');
const text = await res.text();
console.log(text);import requests
r = requests.get('https://whatstrending.ai/llms.txt')
print(r.text)Sample response
# whatstrending.ai
> AI intelligence dashboard: news, model rankings, repos, tools.
## Data for agents
- [News (Markdown)](https://whatstrending.ai/news.md)
- [Models (Markdown)](https://whatstrending.ai/models.md)
/sitemap.xml
Full XML sitemap of every indexable page. Content-Type: application/xml.
No parameters.
curl -s "https://whatstrending.ai/sitemap.xml"const res = await fetch('https://whatstrending.ai/sitemap.xml');
const text = await res.text();
console.log(text);import requests
r = requests.get('https://whatstrending.ai/sitemap.xml')
print(r.text)Sample response
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url><loc>https://whatstrending.ai/</loc></url>
…
</urlset>
Rate limits & fair use
No hard rate limit today — please be reasonable. The underlying data only changes every ~6 hours, so cache responses and avoid hammering on a loop. Responses are already edge-cached; one request per few minutes per endpoint is plenty. Heavy or abusive traffic may be throttled.
For AI agents
Building an agent or LLM tool? Skip the JSON parsing — point your model at the Markdown mirrors and discovery file: /news.md, /models.md, and /llms.txt. They are token-efficient, human-readable, and refreshed on the same 6-hour cycle.
Source & issues: github.com/0xvibly/whatstrending-api.