Finnhub API — Datos Financieros en Tiempo Real

SkillCommerce & finance

Comprehensive financial data API: US/global stocks, forex, crypto, fundamentals, news, earnings, recommendations, WebSocket. 60 free calls/min.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the Finnhub API — Datos Financieros en Tiempo Real skill

What this skill tells your AI

The instructions your AI receives, as published by gauss314/skills in skills/finnhub/SKILL.md and read by ahel’s review.

API REST con 32 endpoints gratuitos que cubre: cotizaciones en vivo, velas OHLCV, perfiles de empresa, fundamentales, noticias, forex, crypto, datos económicos, calendario de earnings y WebSocket.

Base URL: https://finnhub.io/api/v1 Documentación oficial: finnhub.io/docs/api Pricing: finnhub.io/pricing


⚠️ IMPORTANTE: Endpoints Free vs Premium

Este skill documenta todos los endpoints, pero marca claramente cuáles son:

  • FREE — Funcionan con el plan gratuito (60 calls/min, sin tarjeta)
  • 🔒 PREMIUM — Requieren plan pago (Starter $11.99/mes+, Professional $49.99/mes o Enterprise)

NOTA CRÍTICA: El plan gratuito de Finnhub es mucho más limitado de lo que su documentación sugiere. Según pruebas con una API key gratuita real (2026), solo los siguientes endpoints funcionan:

  • /quote (cotización), /stock/profile2 (perfil empresa), /stock/peers (pares), /stock/earnings (earnings)
  • /stock/recommendation (recomendaciones), /stock/metric (métricas), /news (noticias mercado)
  • /company-news (noticias empresa), /search (búsqueda), /stock/market-status (estado mercado)

Endpoints como stock/candle (velas OHLCV), stock/financials, stock/price-target, stock/dividend, forex/rates, crypto/candle requieren plan pago.

Ver la tabla completa en references/ENDPOINTS.md.


Autenticación

Obtener API Key (GRATIS, sin tarjeta de crédito)

  1. Ir a: https://finnhub.io/register
  2. Crear cuenta (email + contraseña)
  3. Copiar la API Key del dashboard: https://finnhub.io/dashboard
  4. Plan gratuito: 60 calls/minuto, 30 calls/segundo máximo

Usar la API Key

import os
API_KEY = os.getenv("FINNHUB_API_KEY")  # Recomendado (variable de entorno)
# O directamente en tests:
# API_KEY = "tu_api_key_aqui"
# Header (recomendado)
X-Finnhub-Token: tu_api_key

# O query param
?token=tu_api_key

⚠️ NUNCA hardcodear la API key en código compartido.


Rate Limits

LímitePlan FreeStarter ($11.99/mes)Professional ($49.99/mes)Enterprise ($3500/mes)
Calls/minuto60300+300+900 (market), 300 (fund)
Calls/segundo30 (global)30 (global)30 (global)30 (global)
WebSocket símbolos50IlimitadoIlimitadoIlimitado
Historia OHLCVLimitada30+ años30+ años30+ años
Noticias1 año20 años20 años20 años
Cobertura fundamentalUSGlobalGlobalGlobal

Tip: si recibís HTTP 429, esperá 1-2 segundos antes de reintentar.


Uso Rápido

1. Cotización en tiempo real

import requests

API_KEY = "tu_api_key"
BASE = "https://finnhub.io/api/v1"

r = requests.get(f"{BASE}/quote", params={"symbol": "AAPL", "token": API_KEY})
quote = r.json()
print(f"AAPL: ${quote['c']:.2f} ({quote['dp']:+.2f}%)")

2. Perfil de empresa

r = requests.get(f"{BASE}/stock/profile2", params={"symbol": "AAPL", "token": API_KEY})
profile = r.json()
print(f"{profile['name']} | {profile['finnhubIndustry']} | Market Cap: ${profile['marketCapitalization']/1000:.2f}B")

3. Noticias de una empresa

r = requests.get(f"{BASE}/company-news", params={
    "symbol": "AAPL", "from": "2025-01-01", "to": "2025-01-15", "token": API_KEY
})
for article in r.json()[:3]:
    print(f"  {article['headline'][:80]}...")

4. Velas OHLCV diarias

import time
end = int(time.time())
start = end - (90 * 86400)  # 90 días
r = requests.get(f"{BASE}/stock/candle", params={
    "symbol": "AAPL", "resolution": "D",
    "from": start, "to": end, "token": API_KEY
})
candles = r.json()
print(f"Status: {candles['s']}, velas: {len(candles['c'])}")

5. Búsqueda de símbolos

r = requests.get(f"{BASE}/search", params={"q": "microsoft", "token": API_KEY})
for result in r.json()["result"]:
    print(f"{result['symbol']}: {result['description']} ({result['type']})")

Scripts Disponibles

ScriptDescripciónEndpoints que usa
finnhub_client.pyCliente Python completo con todos los endpoints gratuitosquote, candle, profile2, peers, metric, financials, earnings, recommendation, price-target, company-news, news, forex, crypto, search, economic, market-status, dividends, splits, calendar
finnhub_cli.pyInterfaz de línea de comandos para consultas rápidasquote, profile2, search, news, peers, earnings, market-status
download_multiple.pyDescarga batches de datos por categoríasquote, candle, metric, financials, earnings, recommendation, company-news

Cobertura de la API (según pruebas con key gratuita real)

CategoríaEndpointsFreePremium
Cotizacionesquote
Perfil empresaprofile2, peers
Earningsearnings (4 quarters free)
Recomendacionesrecommendation (~8 meses)
Métricas (133)metric (sin historia, solo último valor)
Noticiascompany-news, news
Búsquedasearch
Estado mercadomarket-status
Velas OHLCVcandle🔒 Premium
Estados financierosfinancials, financials-reported, price-target🔒 Premium
Dividendos/Splitsdividend, split🔒 Premium
Forexrates, candle, exchange, symbol🔒 Premium
Cryptocandle, exchange, symbol🔒 Premium
Económicoeconomic/code, economic, country🔒 Premium
Símbolosstock/symbol, market-holiday, ipo-calendar🔒 Premium
WebSocketTrades (50 símbolos)🔒 Premium
Insider, Ownershipinsider-transactions, ownership, etc.🔒 Premium
Estimateseps-estimate, revenue-estimate, etc.🔒 Premium
ETFs, Índices, Bonosetf/profile, etf/holdings, index/constituents, bond/price, etc.🔒 Premium
Alternativossocial-sentiment, covid-19, esg-score, etc.🔒 Premium

⚠️ Esta tabla está basada en pruebas reales con una API key gratuita en junio 2026. Finnhub cambia su política de acceso periódicamente. Verificar siempre en la documentación oficial.


Buenas Prácticas

  1. Usar variable de entorno FINNHUB_API_KEY en vez de hardcodear
  2. Cachear resultados: los datos fundamentales cambian poco (especialmente company profile, financials)
  3. Rate limiting: 60 calls/min gratis = 1 call por segundo como mínimo
  4. Evitar endpoints premium con key gratuita — recibirás error "You don't have access to this resource."
  5. WebSocket: solo 1 conexión por API key, 50 símbolos en free
  6. Reutilizar sesión HTTP para mejor performance (requests.Session())
  7. No usar para trading de alta frecuencia: API pública, sin garantía de latencia ultra-baja

Recursos

Signals

GitHub stars
237
Forks
35
Last commit
Jun 2026
Advanced
Catalog kind
skill
Gateway key
finnhub
Source
github.com/gauss314/skills