Agregador de notícias

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.

1. Endpoint principal / Main endpoint

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"

2. Parâmetros / Parameters

ParamDescriçã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: datapubDate, fontesource, titulo/títulotitle, descricao/descriçãodescription, img/image/thumbthumbnail. 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"

3. Formato da resposta / Response shape

// 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" }
  ]
}
Deduplicação: um item só entra se nenhuma das suas duas chaves já apareceu — (1) link canônico (sem #fragmento e sem parâmetros de rastreio como utm_*) e (2) título normalizado + dia. Pega a mesma notícia republicada por fontes diferentes.
Dedup: an item is kept only if neither of its two keys was seen before — (1) canonical link (no #fragment, tracking params like utm_* stripped) and (2) normalized title + day. Catches the same story syndicated across sources.

4. Provedores / Providers

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 / CategorySlugs
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

5. Exemplos por linguagem / Examples by language

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"]

6. Códigos de erro / Error codes

Erros retornam { "status": "error", "error": "..." }. / Errors return { "status": "error", "error": "..." }.

HTTPQuando / WhenO 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.

7. Cache e limites / Caching & limits

EndpointCDNBrowser
/ (agregador / aggregator)5 min60s
/providers5 min5 min
/healthno-storeno-store
Limites: no máximo 5 provedores e 100 itens por requisição. Respostas ficam ~5 min em cache no CDN — notícias novas podem levar até esse tempo para aparecer.
Limits: at most 5 providers and 100 items per request. Responses are cached ~5 min at the CDN — fresh news can take up to that long to appear.

Back to Insyde APIs