News API для торговых систем
Два потока, одна статья. Сырой поток доставляет заголовок в момент получения finlight. Обогащённый поток следует с тональностью, тикерами и сущностями примерно через 28 секунд. Ваша система реагирует первой и уточняет второй.
Как это работает
Одна и та же статья, дважды
Вот как двухпотоковый паттерн выглядит на проводе. Сначала сырое сообщение, затем обогащённая версия той же статьи, сопоставленная по ссылке.
{
"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"
}{
"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"
}
]
}Данные сокращены. Каждая компания-сущность содержит основной листинг и кросс-листинги по биржам (MIC-коды), поэтому одна статья отображается на инструменты разных рынков. Полное описание полей — в документации. документация.
Начните работу
Двухпотоковый паттерн на вашем языке
Подпишитесь на оба потока одним клиентом. Реагируйте на сырое сообщение, обогащайте при получении полных данных. Не хватает только 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)
})SDK обеспечивают переподключение, heartbeat и ротацию соединений. Установите с помощью npm install finlight-client или pip install finlight-client.
Честное сравнение
Если бы вы строили это самостоятельно
Флот скраперов и RSS-поллер дают вам заголовки, и для одного источника без необходимости дедупликации это может быть правильным решением. Затраты проявляются позже: одна и та же новость приходит пять раз от пяти агрегаторов, изменения разметки издателя ломают парсеры в 3 часа ночи, и модель тональности, которую теперь нужно поддерживать наряду со стратегией. Универсальные News API убирают скрапинг, но оставляют шум: маппинг тикеров и курирование финансово-релевантных источников — это именно те части, которые они пропускают. Задача finlight — этот промежуточный слой: дедуплицированное получение, разметка сущностей и тикеров, тональность и потоковая архитектура, разделяющая скорость реакции и глубину данных.
Задержка
Что именно означает «примерно 28 секунд»
Заявления о задержке на этом рынке смешивают четыре разных момента: когда издатель опубликовал, когда провайдер обнаружил статью, когда она была проиндексирована и когда дошла до вас. Мы публикуем одну цифру, и она измерена внутри системы: в среднем сырой поток доставляет статью примерно на 28 секунд раньше обогащённой версии той же статьи. Это стоимость пайплайна обогащения (анализ тональности, разрешение сущностей, маппинг тикеров), который сырой поток полностью пропускает. Мы не публикуем сквозную цифру «от публикации до доставки», потому что она зависит от временных меток издателей, которые мы не контролируем. Если вендор называет вам одну цифру в миллисекундах, не уточняя, какой момент он измеряет, — спросите.
Двухпотоковый паттерн превращает эту дельту в преимущество: сырое сообщение говорит вашей системе, что статья существует, и позволяет фильтру заголовков сработать немедленно. Обогащённое сообщение приходит, пока логика позиции ещё активна, и добавляет тональность, достоверность и размеченные инструменты. Если обогащение нужно только для части статей, пропустите обогащённый поток и вызывайте GET /v2/articles/by-link по запросу для тех, которые важны.
Читайте инженерную историю о создании сырого потока: How I Cut 28 Seconds Off Financial News Delivery
Язык запросов
Фильтруйте на источнике, а не в своём коде
Поток и REST API используют один язык запросов. Фильтруйте по ticker:NVDA, exchange:NASDAQ, isin:US0378331005, по домену источника, по языку, с полной булевой логикой (AND, OR, NOT, скобки, исключения вроде -source:finance.yahoo.com). Фильтрация на стороне сервера означает, что ваша система обрабатывает только те сообщения, на которые она в любом случае отреагировала бы.
(+ticker:TSLA OR +ticker:NVDA) AND ("earnings" OR "guidance") AND NOT cryptoНадёжность
Создано для систем, работающих без присмотра
Соединения ротируются по расписанию, SDK управляют heartbeat и переподключением за вас. Ограничения по частоте применяются на границе сети, поэтому некорректный клиент получает быстрый отказ, а не деградацию вашей ленты. REST-доступ покрывает исторические запросы и бэкфилл, так что один и тот же запрос управляет и вашим live-потоком, и исследовательским ноутбуком.
Развёртывание на уровне деска? Доступны пользовательские источники, годовая оплата и приоритетное подключение. Вы называете источник — мы подключаем его в рамках вашего контракта. Связаться с нами
Тарифы
Тарифы для потоковой передачи
Потоковый доступ начинается с тарифа Pro Standard. Тарифы различаются объёмом запросов, количеством WebSocket-соединений и квотами диспетчеризации.
Pro Standard
1 одновременное WebSocket-соединение, потоковый доступ включён
Pro Scale
3 одновременных WebSocket-соединения для мультипотоковых конфигураций
Сравнить все тарифы на странице тарифов
Другие способы подключения
Помимо потоковой передачи через WebSocket
Двухпотоковый паттерн — это одна интеграция. finlight также предлагает REST и доставку через webhooks.
REST API
Запросы по требованию и историческое заполнение с использованием того же языка запросов
Подробнее →Webhooks
Событийные уведомления, отправляемые на ваши эндпоинты при совпадении статей с вашими критериями
Подробнее →MCP-сервер
Подключение AI-ассистентов к финансовым новостям через Model Context Protocol
Подробнее →Часто задаваемые вопросы
Вопросы об API для торговых систем
Частые вопросы об использовании finlight для интеграции с торговыми системами.
Потоковый доступ начинается с тарифа Pro Standard. Тарифы различаются объёмом запросов, количеством WebSocket-соединений и квотами диспетчеризации. Актуальные цены и лимиты — на странице тарифов.
Остались вопросы?
Наша команда поддержки, ориентированная на разработчиков, готова помочь с интеграцией и масштабированием.
Проверьте на своей сигнальной логике
Самый быстрый способ оценить новостную ленту — направить на неё свой фильтр. Получите ключ, запустите пример с двумя потоками и наблюдайте за дельтой на живых статьях.
