agentleFS
gauss314gauss314/skills/skills/finnhub/SKILL.md

finnhub

Skill242 starsChanged 5 months agoMITView on GitHub

API de datos financieros completa: stocks US/global, forex, crypto, fundamentales, noticias, earnings, recomendaciones, WebSocket. 60 calls/min gratis.

  • Reads credentials

The file

Files
SKILL.md

Finnhub API — Datos Financieros en Tiempo Real

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

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.