RSS feeds merged into one JSON response
A News API busca vários feeds RSS em paralelo, normaliza, remove duplicatas entre fontes, junta tudo e ordena por data. Você escolhe os provedores e recebe um único array de notícias em JSON.
The News API fetches several RSS feeds in parallel, normalizes them, deduplicates across sources, merges everything and sorts by date. You pick the providers and get a single JSON array of news items.
Base: https://news.api.insyde.one — aberta, sem autenticação / open, no auth.
GET /?providers={csv}&count={n}
Informe de 1 a 5 provedores separados por vírgula. A resposta é um array único, mesclado e sem duplicatas.
Pass 1 to 5 comma-separated providers. The response is a single merged, deduplicated array.
# um provedor / single provider
curl "https://news.api.insyde.one/?providers=g1&count=5"
# vários (máx 5) / multiple (max 5)
curl "https://news.api.insyde.one/?providers=g1,bbc-world,nyt&count=15"
| Param | Descrição / Description |
|---|---|
providers |
Obrigatório. CSV de slugs de provedor. Máx 5 por requisição. / Required. CSV of provider slugs. Max 5 per request. |
count |
Opcional. Nº de itens no array final. Padrão 20, máx 100. / Optional. Number of items in the final array. Default 20, max 100. |
view |
Opcional. slim retorna o payload mínimo por item, ideal para consumo por IA: title, link, pubDate, source, description. / Optional. slim returns the minimal per-item payload, ideal for AI consumption. |
fields |
Opcional. CSV dos campos exatos a retornar por item (sobrepõe view). Campos: provider, source, title, pubDate, link, guid, author, thumbnail, description, content, enclosure, categories, badge, color. Aceita apelidos PT: data→pubDate, fonte→source, titulo/título→title, descricao/descrição→description, img/image/thumb→thumbnail. Sem view/fields, retorna o payload completo. / Optional. CSV of the exact item fields to return (overrides view); PT aliases accepted. No selector = full payload. |
// Slim para IA / Slim for AI — GET /?providers=g1&count=10&view=slim
curl "https://news.api.insyde.one/?providers=g1&count=10&view=slim"
// Campos sob medida / Custom fields (apelidos PT funcionam / PT aliases work)
curl "https://news.api.insyde.one/?providers=g1&fields=title,link,data,fonte"
// GET /?providers=g1&count=2
{
"status": "ok",
"feeds": [
{ "provider": "g1", "title": "G1", "link": "...", "description": "...", "image": "" }
],
"items": [
{
"provider": "g1", // slug
"source": "G1", // nome da fonte / source name
"title": "...",
"pubDate": "2026-06-03 14:10:00", // UTC, YYYY-MM-DD HH:mm:ss
"link": "https://...",
"thumbnail": "https://...",
"description": "...",
"content": "...",
"author": "",
"badge": "G1", // rótulo curto / short label
"color": "#C4170C", // cor do provedor / provider color
"guid": "...",
"categories": [],
"enclosure": []
}
],
"errors": [
{ "provider": "xpto", "reason": "unknown" }
]
}
items vem mesclado entre os feeds, sem duplicatas, ordenado por pubDate (mais recente primeiro). / merged across feeds, deduplicated, sorted by pubDate desc.errors lista falhas por provedor — os demais continuam funcionando. Razões: unknown, fetch_timeout, fetch_error, http_XXX, parse_error. / lists per-provider failures; the others still succeed.#fragmento e sem parâmetros de rastreio como utm_*) e
(2) título normalizado + dia. Pega a mesma notícia republicada por fontes diferentes.
#fragment, tracking params like utm_* stripped) and
(2) normalized title + day. Catches the same story syndicated across sources.
A lista de provedores é dinâmica. A fonte autoritativa e sempre atual é o
endpoint /providers:
The provider list is dynamic. The authoritative, always-current source is the
/providers endpoint:
curl "https://news.api.insyde.one/providers"
{
"status": "ok",
"providers": [
{ "slug": "g1", "title": "G1", "url": "https://g1.globo.com/rss/g1/" }
]
}
Alguns slugs disponíveis (use /providers para a lista completa) / A sample of available slugs (see /providers for the full list):
| Categoria / Category | Slugs |
|---|---|
| Brasil — geral | g1 · folha · uol · estadao · cnn-brasil · bbc-brasil · agencia-brasil |
| Brasil — economia | infomoney · exame · brazil-journal · suno |
| Brasil — tech | tecmundo · tecnoblog · olhar-digital · macmagazine · meiobit |
| Mundo / World | bbc-world · nyt · guardian · al-jazeera · npr · dw · france24 · ft · cnbc |
| Tech / Dev | techcrunch · verge · wired · ars-technica · hacker-news · github-blog |
| Ciência / Science | nature · sciencedaily |
curl:
curl "https://news.api.insyde.one/?providers=g1,cnn-brasil,bbc-world&count=10"
JavaScript (fetch):
const BASE = 'https://news.api.insyde.one';
async function getNews(providers, count = 20) {
const qs = new URLSearchParams({ providers: providers.join(','), count });
const res = await fetch(`${BASE}/?${qs}`);
const data = await res.json();
if (data.status !== 'ok') throw new Error(data.error);
return data.items;
}
const items = await getNews(['g1', 'bbc-world'], 15);
Python (requests):
import requests
resp = requests.get("https://news.api.insyde.one/", params={
"providers": "g1,cnn-brasil,nyt", # máx 5 / max 5
"count": 20,
})
resp.raise_for_status()
items = resp.json()["items"]
Erros retornam { "status": "error", "error": "..." }. / Errors return { "status": "error", "error": "..." }.
| HTTP | Quando / When | O que fazer / What to do |
|---|---|---|
400 |
Falta providers / Missing providers |
Inclua ao menos um slug / Provide at least one slug |
400 |
Mais de 5 provedores / More than 5 providers | Reduza para no máximo 5 / Cut down to 5 max |
400 |
Nenhum provedor válido / No valid providers | Confira os slugs em /providers; veja o array errors / Check slugs at /providers; see the errors array |
Falhas de um provedor não derrubam a requisição: vêm em errors e os demais
retornam normalmente. / A single provider failing doesn't fail the request: it shows up in
errors while the others return normally.
| Endpoint | CDN | Browser |
|---|---|---|
/ (agregador / aggregator) | 5 min | 60s |
/providers | 5 min | 5 min |
/health | no-store | no-store |