| name | investing |
| description | Investing.com via HTML scrape: cotizaciones, historico OHLCV, fundamentals (income/balance/cashflow/ratios), dividendos, earnings, perfil de empresa. 81K+ equities, 344 commodities, 10K indices, 2.4K currencies, 10K ETFs, 4.1K cryptos. Cobertura global. |
| license | MIT |
Investing.com — Datos via HTML Scrape
Skill para extraer datos de Investing.com parseando el HTML publico. Sin API key, sin autenticacion.
⚠️ Aviso Legal y Tecnico
- Investing.com no expone API publica. Los datos se extraen de las paginas HTML con Cloudflare bot protection.
- Dependencia obligatoria:
curl_cffi (impersona Chrome 120 a nivel TLS — requests puro devuelve el challenge de Cloudflare, no datos).
- Rate limit agresivo: respetar 1-2 segundos entre requests. Cloudflare devuelve 429/403 si se hacen muchas requests muy rapido. El script reintenta con backoff automatico.
- Datos delayed: el precio mostrado en la pagina es el del ultimo cierre disponible (15-20 min de delay para US equities, similar para otros).
- Respetar terminos de servicio de Investing.com. No hacer mas de 1-2 requests/segundo. No usar para redistribuir masivamente.
- Investing.com se reserva el derecho de bloquear rangos de IP. El skill puede dejar de funcionar en cualquier momento.
Scripts
Instalacion de dependencias
pip install curl_cffi
NO funciona con requests puro. Cloudflare detecta y bloquea.
Uso rapido
python scripts/fetch_investing.py quote gold
python scripts/fetch_investing.py quote eur-usd
python scripts/fetch_investing.py quote us-spx-500
python scripts/fetch_investing.py quote bitcoin
python scripts/fetch_investing.py quote ypf-sa --type equities
python scripts/fetch_investing.py quote apple-computer-inc -q
python scripts/fetch_investing.py search YPF
python scripts/fetch_investing.py search gold --category commodities
python scripts/fetch_investing.py search MERVAL --category indices
python scripts/fetch_investing.py search AR --category currencies --limit 30
python scripts/fetch_investing.py sitemap commodities
python scripts/fetch_investing.py sitemap currencies
python scripts/fetch_investing.py sitemap indices
python scripts/fetch_investing.py sitemap equities
python scripts/fetch_investing.py sitemap etfs
python scripts/fetch_investing.py historical gold
python scripts/fetch_investing.py historical eur-usd
python scripts/fetch_investing.py historical ypf-sa --pages 5
python scripts/fetch_investing.py historical apple-computer-inc
python scripts/fetch_investing.py profile apple-computer-inc
python scripts/fetch_investing.py financials apple-computer-inc --ftype income
python scripts/fetch_investing.py financials apple-computer-inc --ftype balance
python scripts/fetch_investing.py financials apple-computer-inc --ftype cashflow
python scripts/fetch_investing.py ratios apple-computer-inc
python scripts/fetch_investing.py dividends apple-computer-inc
python scripts/fetch_investing.py earnings apple-computer-inc
python scripts/fetch_investing.py quote gold -o gold_quote.json
python scripts/fetch_investing.py historical ypf-sa -o ypf_hist.json
python scripts/fetch_investing.py quote gold -q
Modos disponibles
| Modo | Data | Endpoint |
|---|
quote | Cotizacion (precio, cambio, OHLC, volume, pair_id) | www.investing.com/{type}/{slug} |
search | Busqueda fuzzy sobre sitemaps publicos | Sitemap XMLs |
sitemap | Descarga sitemap completo (URLs de instrumentos) | Sitemap XMLs |
historical | Historico OHLCV desde la tabla HTML | /{type}/{slug}-historical-data |
profile | Descripcion, sector, industria, pais, sede, empleados | /{type}/{slug}-company-profile |
financials | Income / Balance / Cash Flow (TTM + ultimos 5 anios) | /{type}/{slug}-income-statement etc. |
ratios | Margenes, retornos, valuation ratios | /{type}/{slug}-ratios |
dividends | Historial completo de dividendos | /{type}/{slug}-dividends |
earnings | Earnings history (EPS real vs estimado) | /{type}/{slug}-earnings |
Tipos de instrumentos
| Tipo | --type | Slug example | Cobertura |
|---|
| Equity (stock/ADR) | equities | apple-computer-inc, ypf-sa, ggal | 81,518 |
| Commodity | commodities | gold, crude-oil, brent-oil | 344 |
| Indice | indices | us-spx-500, ibovespa, dax | 20,000+ |
| Currency pair (forex) | currencies | eur-usd, usd-ars, brl-usd | 2,394 |
| ETF | etfs | spdr-s-p-500, vanguard-ftse-all-world | 30,000+ |
| Crypto | crypto | bitcoin, ethereum | 4,135+ coins, 20K+ pairs |
| Tasa / Bono | rates-bonds | (no en sitemap directo) | 20,000+ |
| Fondo | funds | (no en sitemap directo) | 100K+ |
| Certificado | certificates | (no en sitemap directo) | 6,222 |
Auto-deteccion: si no pasas --type, el script prueba commodities → currencies → indices → etfs → crypto → equities. Las equities son las mas lentas/rate-limited, asi que se prueban al final.
Slugs utiles (Argentina / LatAm)
| Slug | Nombre | Simbolo | Tipo |
|---|
ypf-sa | YPF Sociedad Anonima | YPF | equities |
ypf-sociedad | YPF Sociedad (variante) | YPF | equities |
pampa-energia | Pampa Energia SA | PAMPm | equities |
pampa-energia-sa | Pampa Energia ADR | PAM | equities |
central-puerto | Central Puerto S.A. | CEPUm | equities |
central-puerto-adr | Central Puerto ADR | CEPU | equities |
tenaris | Tenaris SA | TENR | equities |
tenaris-sa | Tenaris ADR | TS | equities |
bbva | Banco Bilbao Vizcaya Argentaria | BBVA | equities |
banco-macro-sa | Banco Macro SA | BMA | equities |
mercadolibre | MercadoLibre | MELI | equities |
mercadolibre-inc | MercadoLibre Inc | MELI | equities |
globant-sa | Globant SA | GLOB | equities |
globant-cedear | Globant CEDEAR | GLOBm | equities |
despegar-com | Despegar | DESP | equities |
despegar-ba | Despegar Buenos Aires | DESPm | equities |
galicia-b | Grupo Financiero Galicia (BA) | GGALm | equities |
grupo-financiero-galicia-sa-adr | Grupo Financiero Galicia ADR | GGAL | equities |
edenor | Edenor | EDNm | equities |
transportadora-de-gas-del-sur-sa | TGS SA | TGSm | equities |
siderar | Ternium / Siderar | TXR | equities |
aluar | Aluar | ALUA | equities |
mirgor | Mirgor | MIRG | equities |
loma-negra | Loma Negra | LOMA | equities |
cresud | Cresud | CRESY | equities |
transener | Transener | TRAN | equities |
capex | Capex | CAPX | equities |
solvay | Solvay | SOLB | equities |
holcim | Holcim | HCMLY | equities |
consultatio-s. | Consultatio | CONO | equities |
garovaglio | Garovaglio | GCLA | equities |
laboratorios-richmond | Laboratorios Richmond | RICH | equities |
longvie | Longvie | LONG | equities |
rigolleau | Rigolleau | RIGO | equities |
Currencies (FX)
| Slug | Par | Notas |
|---|
usd-ars | USD/ARS (oficial) | Dolar oficial |
eur-usd | EUR/USD | Mayor |
brl-usd | BRL/USD (oficial) | Dolar oficial Brasil |
mxn-usd | MXN/USD (oficial) | Peso mexicano |
ars-brl | ARS/BRL | Peso argentino vs real |
ars-mxn | ARS/MXN | Peso argentino vs peso mexicano |
aed-ars | AED/ARS | Dirham → Peso |
MEP / CCL / Blue: Investing.com no expone estos pares derivados como tales. Para MEP/CCL/blue, usar data912 que sí los cubre.
Datos devueltos
quote
{
"last": "4,501.47",
"last_raw": 4501.47,
"change": -0.78,
"change_pct": -0.02,
"last_close": 4502.25,
"bid": 4500.74,
"ask": 4501.19,
"open": 4502.5,
"high": 4508.75,
"low": 4499.97,
"volume": 1633,
"avg_volume": 0,
"prev_close": null,
"pair_id": 1057391,
"name": "Gold Futures",
"symbol": "GC",
"currency": "USD",
"exchange": null,
"country": null,
"updated_epoch": 1749091200,
"page_title": "Gold Futures - Investing.com",
"slug": "gold",
"type": "commodities",
"url": "https://www.investing.com/commodities/gold"
}
Nota: no todos los campos aparecen en todos los instrumentos. Equities suelen tener last, last_raw, change, bid, ask, open, high, low, volume, prev_close, pair_id, name, symbol, currency, exchange. Commodities suelen incluir ademas updated_epoch.
historical
{
"slug": "gold",
"type": "commodities",
"count": 23,
"rows": [
{
"date": "Jun 04, 2026",
"price": "4,497.70",
"open": "4,481.76",
"high": "4,543.12",
"low": "4,470.55",
"vol": "3.16K",
"change_pct": "+0.69%"
},
...
]
}
23 dias por default (1 pagina). Usar --pages 5 para ~115 dias, etc.
financials
Devuelve estructura con periodos (TTM, 2024, 2023, 2022, 2021, 2020) y filas con label + valores:
{
"slug": "apple-computer-inc",
"type": "equities",
"ftype": "income",
"periods": ["TTM", "2024", "2023", "2022", "2021", "2020"],
"count": 23,
"rows": [
{"label": "Total Revenue", "values": ["394,328", "385,100", "383,285", "394,328", "365,817", "274,515"]},
{"label": "Gross Profit", "values": ["170,000", ...]},
...
]
}
--ftype income | balance | cashflow
ratios
Misma estructura que financials pero con ratios (margenes, retornos, valuation, etc).
dividends
Array de filas con celdas (fecha, dividend, yield, etc):
{
"slug": "apple-computer-inc",
"type": "equities",
"count": 18,
"rows": [
["Ex-Dividend Date", "May 09, 2025", "Quarterly", "0.26", "..."],
...
]
}
earnings
Array de filas (date, EPS actual, EPS estimado, surprise, etc):
{
"slug": "apple-computer-inc",
"type": "equities",
"count": 20,
"rows": [
["Aug 01, 2024", "Q3 2024", "1.40", "1.35", "+3.70%", "..."],
...
]
}
Consideraciones tecnicas
¿Por que curl_cffi y no requests?
Investing.com usa Cloudflare con proteccion anti-bot a nivel TLS. El User-Agent no importa — Cloudflare hace TLS fingerprinting y rechaza clientes que no sean navegadores reales.
requests (Python puro, TLS fingerprint de Python urllib3): bloqueado, devuelve challenge HTML.
curl_cffi.requests.Session(impersonate="chrome120"): pasa el challenge porque impersona el fingerprint TLS de Chrome 120.
curl_cffi es un wrapper sobre curl-impersonate (fork de libcurl con fingerprints pre-cargados). Es una libreria con wheels precompilados para Windows/Mac/Linux — instalar y usar sin compilar nada.
Rate limit y Cloudflare
Cloudflare impone rate limits agresivos:
- /equities/ es el path mas rate-limited (mas requests, mas proteccion)
- /commodities/, /currencies/, /indices/ son mas permisivos
- Si haces 10+ requests en pocos segundos → 429 o 403 con "Just a moment..."
- Backoff recomendado: 2-3 segundos entre requests
- Si recibis 429, esperar 1-2 minutos
El script maneja esto con retries + backoff exponencial. Si el IP esta muy marcado, la unica solucion es esperar o usar un proxy residencial.
Auto-deteccion de tipo
Cuando no se pasa --type, el script prueba los 6 paths uno por uno. Esto dispara 6 requests, lo que puede rate-limitar. Recomendacion: pasar --type siempre que se sepa.
Orden de prueba (mas rapido primero):
commodities (344 instrumentos)
currencies (2,394)
indices (20K+)
etfs (30K+)
crypto (4K+)
equities (81K+, rate-limited)
Sitemaps
Los sitemaps son la unica fuente totalmente publica y no rate-limited. Son utiles para:
- Descubrir slugs de instrumentos (no hay API de "search" publica)
- Construir catalogos locales
- Backups de listings
Cantidad de instrumentos por sitemap (verificado 2026-06-04):
- equities: 81,518 (9 archivos)
- commodities: 344 (1 archivo)
- indices: 20,000+ (2 archivos)
- currencies: 2,394 (2 archivos)
- etfs: 30,000+ (3 archivos)
- crypto coins: 4,135
- crypto pairs: 20,000+ (2 archivos)
- rates/bonds: 20,000+ (2 archivos)
- funds: 100K+ (11 archivos)
- certificates: 6,222
Limitaciones
- Rate limit agresivo: en uso intensivo, CF puede bloquear el IP. Es problema del sitio, no del script.
- Cloudflare puede romper el skill en cualquier momento cambiando el challenge.
- Historico paginado: 23 dias por default, hay que pasar
--pages para mas.
Estructura del skill
skills/investing/
├── SKILL.md # Este archivo (guia rapida)
├── references/
│ └── REFERENCE.md # Documentacion completa + endpoints
└── scripts/
└── fetch_investing.py # Script principal
Documentacion detallada: Consultar references/REFERENCE.md para la documentacion exhaustiva de los endpoints, estructuras JSON, ejemplos y troubleshooting.