finlight Logo
+

API de Noticias para Sistemas de Trading

Dos streams, un artículo. El stream sin procesar entrega el titular en el momento en que finlight lo ingiere. El stream enriquecido sigue con sentimiento, tickers y entidades unos 28 segundos después. Tu sistema reacciona primero y refina después.

Cómo funciona

El mismo artículo, dos veces

Así se ve el patrón dual-stream en la conexión. Primero el mensaje sin procesar, luego la versión enriquecida del mismo artículo, emparejados por enlace.

Raw stream, wss://wss.finlight.me/raw
{
  "title": "S&P 500, Dow futures inch up as MidEast hopes offset SpaceX, AMD drag",
  "link": "https://www.reuters.com/business/...",
  "source": "www.reuters.com",
  "summary": "Contracts tracking the S&P 500 and the Dow edged up on Wednesday ...",
  "language": "en",
  "publishDate": "2026-08-05T09:32:26.959Z",
  "createdAt": "2026-08-05T09:32:41.103Z"
}
Enriched stream, ~28s later, same link
{
  "title": "S&P 500, Dow futures inch up as MidEast hopes offset SpaceX, AMD drag",
  "link": "https://www.reuters.com/business/...",
  "sentiment": "positive",
  "confidence": "0.9702919721603394",
  "categories": ["business", "markets"],
  "countries": ["US"],
  "companies": [
    {
      "ticker": "NVDA",
      "name": "NVIDIA Corporation",
      "exchange": "XNAS",
      "isin": "US67066G1040"
    },
    {
      "ticker": "AMD",
      "name": "Advanced Micro Devices, Inc.",
      "exchange": "XNAS",
      "isin": "US0079031078"
    }
  ]
}

Payloads abreviados. Cada entidad de empresa incluye una cotización primaria más cotizaciones cruzadas por bolsa (códigos MIC), de modo que un artículo se mapea a instrumentos en múltiples mercados. Referencia completa de campos en la documentación. documentación.

Comenzar

El patrón dual-stream en tu lenguaje

Suscríbete a ambos streams con un solo cliente. Reacciona al mensaje sin procesar, enriquece cuando lleguen los datos completos. Solo falta la clave API.

import { FinlightApi } from 'finlight-client'

const api = new FinlightApi(
  { apiKey: process.env.FINLIGHT_API_KEY! },
  { takeover: true },
)

const seen = new Map<string, number>()

// Raw stream: instant delivery, react immediately
api.rawWebsocket.connect({ language: 'en' }, (raw) => {
  seen.set(raw.link, Date.now())
  if (/earnings|acquisition|merger|FDA|rate decision/i.test(raw.title)) {
    console.log(`[SIGNAL] ${raw.title} (${raw.source})`)
    // your reaction logic here
  }
})

// Enriched stream: sentiment, entities, tickers
api.websocket.connect({ language: 'en', includeEntities: true }, (article) => {
  const t = seen.get(article.link)
  const delta = t ? `${((Date.now() - t) / 1000).toFixed(1)}s after raw` : 'new'
  console.log(`[ENRICHED] ${article.title} (${delta})`)
  console.log(
    `  sentiment=${article.sentiment} confidence=${article.confidence}`,
  )
  console.log(`  tickers=${article.companies?.map((c) => c.ticker).join(',')}`)
  seen.delete(article.link)
})

Los SDKs gestionan la reconexión, los heartbeats y la rotación de conexiones. Instala con npm install finlight-client o pip install finlight-client.

Comparación honesta

Si fueras a construir esto tú mismo

Una flota de scrapers más un poller de RSS te da titulares, y para una sola fuente sin necesidad de deduplicación, puede ser la decisión correcta. El coste aparece después: la misma noticia llegando cinco veces de cinco agregadores, cambios en el markup del publicador rompiendo parsers a las 3 de la madrugada, y un modelo de sentimiento que ahora mantienes junto con tu estrategia. Las API de noticias genéricas eliminan el scraping pero conservan el ruido, ya que el mapeo de tickers y la curación de fuentes relevantes para finanzas son exactamente las partes que omiten. El trabajo de finlight es esa capa intermedia: ingestión deduplicada, etiquetado de entidades y tickers, sentimiento, y una arquitectura de streams que separa la velocidad de reacción de la profundidad de datos.

Latencia

Qué significa "unos 28 segundos", con precisión

Las afirmaciones de latencia en este mercado mezclan cuatro relojes diferentes: cuándo publicó el editor, cuándo un proveedor descubrió el artículo, cuándo se indexó y cuándo te llegó. Nosotros publicamos un solo número, y se mide internamente: en promedio, el stream sin procesar entrega un artículo unos 28 segundos antes que la versión enriquecida del mismo artículo. Ese es el coste del pipeline de enriquecimiento (análisis de sentimiento, resolución de entidades, emparejamiento de tickers), que el stream sin procesar omite por completo. No publicamos una cifra de latencia extremo a extremo, porque ese número depende de marcas de tiempo del publicador que no controlamos. Si un proveedor te da una cifra en milisegundos sin decir qué reloj mide, pregunta.

El patrón dual-stream convierte ese delta en una ventaja: el mensaje sin procesar le dice a tu sistema que existe un artículo y permite que un filtro de titulares se active de inmediato. El mensaje enriquecido llega mientras tu lógica de posiciones aún está activa y añade sentimiento, confianza e instrumentos etiquetados. Si solo necesitas enriquecimiento para un subconjunto de artículos, omite el stream enriquecido y llama a GET /v2/articles/by-link bajo demanda para los que importan.

Lee la historia de ingeniería detrás del stream sin procesar: How I Cut 28 Seconds Off Financial News Delivery

Lenguaje de consulta

Filtra en el origen, no en tu código

El stream y la REST API comparten un lenguaje de consulta. Filtra por ticker:NVDA, exchange:NASDAQ, isin:US0378331005, por dominio de fuente, por idioma, con lógica booleana completa (AND, OR, NOT, paréntesis, exclusiones como -source:finance.yahoo.com). El filtrado en el servidor significa que tu sistema solo procesa los mensajes sobre los que habría actuado de todos modos.

Example query
(+ticker:TSLA OR +ticker:NVDA) AND ("earnings" OR "guidance") AND NOT crypto

Fiabilidad

Diseñado para sistemas que funcionan sin supervisión

Las conexiones rotan según un calendario, de modo que los SDKs gestionan heartbeats y reconexión por ti. Los límites de tasa se aplican en el borde, así que un cliente con mal comportamiento falla rápido en lugar de degradar tu feed. El acceso REST cubre consultas históricas y backfill, de modo que la misma consulta que alimenta tu stream en vivo también alimenta tu notebook de investigación.

¿Gestionas un despliegue a nivel de mesa? Fuentes personalizadas, facturación anual e incorporación prioritaria están disponibles. Tú nombras la fuente, nosotros la incorporamos como parte de tu contrato. Contáctanos

Precios

Planes diseñados para streaming

El acceso a streaming comienza en el plan Pro Standard. Los planes difieren en volumen de solicitudes, conexiones WebSocket y cuotas de envío.

Pro Standard

1 conexión WebSocket concurrente, acceso a streaming incluido

Pro Scale

3 conexiones WebSocket concurrentes para configuraciones multi-stream

Compara todos los planes en la página de precios

Preguntas Frecuentes

Preguntas sobre la API para Sistemas de Trading

Preguntas frecuentes sobre el uso de finlight para integraciones con sistemas de trading.

El acceso a streaming comienza en el plan Pro Standard. Los planes difieren en volumen de solicitudes, conexiones WebSocket y cuotas de envío. Los precios y límites actuales están en la página de precios.

¿Aún Tienes Preguntas?

Nuestro equipo de soporte centrado en desarrolladores está aquí para ayudarte a integrar y escalar.

Pruébalo contra tu propia lógica de señales

La forma más rápida de evaluar un feed de noticias es apuntar tu filtro hacia él. Obtén una clave, ejecuta el ejemplo dual-stream y observa el delta en artículos en vivo.

¿Gestionas un despliegue a nivel de mesa? Habla con nosotros.