SimplyWallSt — Stock Research & Snowflake Scores
Extrae datos financieros de
SimplyWallSt usando su
API REST interna (
). Sin Cloudflare, sin API key, sin registro.
120,000+ stocks globales con snowflake scores (value, income, health, past, future, management), análisis de valuación, dividendos históricos y proyectados, score de salud financiera, insider transactions, y más.
⚠️ Aviso Legal
- SimplyWallSt no tiene API pública oficial. Esta skill usa endpoints internos del frontend web.
- Respetá los términos de servicio del sitio.
- Implementá rate limiting (mín 300ms entre requests).
Instalación
Scripts
| Script | Descripción |
|---|
| fetch_sws.py | Cliente completo: listar tickers, company detail, snowflake scores, análisis |
Uso rápido
bash
# PRIMERO: Descargar snapshot de tickers (1 vez sola, ~5 min)
python scripts/fetch_sws.py --download-snapshot
# Luego: las búsquedas por ticker usan el snapshot → instantáneas
python scripts/fetch_sws.py --ticker GGAL
# Buscar por nombre
python scripts/fetch_sws.py --search "Galicia"
# Full data con todos los includes (info, score, analysis, extended, raw_data, insider)
python scripts/fetch_sws.py --ticker GGAL --full
# Listar empresas (grid)
python scripts/fetch_sws.py --grid --size 10
# Listar solo tickers disponibles (Argentina)
python scripts/fetch_sws.py --list-tickers --country AR --output tickers_ar.csv
# Snowflake scores de múltiples tickers
python scripts/fetch_sws.py --ticker GGAL,BMA,SUPV --score
# Output a archivo
python scripts/fetch_sws.py --ticker GGAL --full --output ggal_data.json
Endpoints descubiertos
| Endpoint | Método | Data | Status |
|---|
/api/grid/filter?include=info,score,grid
| POST | Listado de empresas con scores y métricas | ✅ Funciona |
/api/company{canonical_url}
| GET | Detail completo de una empresa | ✅ Funciona |
Includes disponibles para Company Detail
| Include | Data |
|---|
| Perfil corporativo, industria, país, empleados, CEO |
| Snowflake scores (value, income, health, past, future, management) |
| Precio, market cap, P/E, P/B, ROE, ROA, EPS, dividendos, growth |
| Dividendos históricos, payout ratio, buyback, future EPS |
analysis.extended.raw_data
| Financial statements históricos |
analysis.extended.raw_data.insider_transactions
| Insider trading |
Cobertura
| Característica | Detalle |
|---|
| Stocks globales | 120,000+ en 90+ mercados |
| Mercados Argentina | ✅ BASE (BCBA) tickers: GGAL, BMA, SUPV, YPFD, etc. |
| Mercados US | ✅ NasdaqGS, NYSE, AMEX |
| Actualización | Diaria (precio de cierre) |
| Snowflake scores | Value, Income, Health, Past, Future, Management |
| Dividendos | Histórico 19+ años, proyecciones futuras |
| Insider transactions | ✅ (cuando están disponibles) |
| Analistas | Consensus count y price targets |
Flags del script
| Flag | Descripción |
|---|
| Ticker(s) separados por coma: GGAL o GGAL,BMA |
| Buscar por nombre |
| Todos los includes disponibles |
| Solo snowflake scores |
| Solo info corporativa |
| Solo métricas de análisis |
| Incluir data extendida |
| Incluir raw data financiera |
| Listar companies via grid/filter |
| Listar tickers disponibles |
| Filtrar por país (solo --grid) |
| Tamaño de página (default: 24) |
| Límite de resultados |
| Descargar snapshot completo de tickers a |
| Usar snapshot específico (default: auto-buscar en ) |
| Guardar output |
| Output en CSV |
| Delay entre requests (default: 0.3s) |
Ejemplos por tipo de data
Snowflake Scores
bash
python scripts/fetch_sws.py --ticker GGAL --score
# → value=0, income=0, health=4, past=1, future=5, management=0
# → "High growth potential with adequate balance sheet."
Info Corporativa
bash
python scripts/fetch_sws.py --ticker GGAL --info
# → name, industry (Banks), country (AR), employees (10032), year_founded (1905)
Análisis + Dividendos
bash
python scripts/fetch_sws.py --ticker GGAL --analysis --extended
# → P/E, P/B, ROE, ROA, EPS, Debt/Equity, market cap
# → dividend history, payout ratios, future yield
Todos los datos
bash
python scripts/fetch_sws.py --ticker GGAL --full
Trabajar con el grid/filter
El grid/filter devuelve companies listas para consumir con info + scores + grid metrics en un solo request. Ideal para screener:
bash
# Todas las empresas (default: market cap desc)
python scripts/fetch_sws.py --grid --limit 50
# Top 10 Argentina
python scripts/fetch_sws.py --grid --size 10
Nota: El grid/filter no permite filtros por país o ticker directamente. Usar
+
para filtrar client-side.
Snapshot de tickers (recomendado)
El snapshot es un archivo CSV local con todos los listings disponibles que permite resolver tickers al instante sin iterar el grid.
Descargar el snapshot (1 vez, ~10 min)
bash
# Descarga completa (~10 min, genera assets/YY-MM-DD-ticker-snapshot.csv)
python scripts/fetch_sws.py --download-snapshot
Cómo funciona el snapshot completo
El API tiene un límite de 10,000 registros por query. Para obtener todos, el script usa particionado por exchange:
- Fase 1: Obtiene top 10K con la query default → extrae los exchanges disponibles
- Fase 2: Para cada exchange, fetchea todas las empresas (cada exchange tiene < 10K registros)
- Dedup: Combina todo y elimina duplicados por (exchange + ticker)
Resultados del snapshot
| Métrica | Valor |
|---|
| Total listings únicos () | 78,454 |
| Países cubiertos | 83 |
| Exchanges | 106 |
| Duplicados en el proceso de dedup | 0 |
| Requests totales | ~944 |
| Duración | ~11 min |
| Tamaño del CSV | ~6 MB |
¿Por qué 78K y no 54K? El API reporta
para la query default (que filtra por scores mínimos). Pero al particionar por exchange con reglas más simples (
+
), se obtienen
muchos más — ETFs, fondos, companies sin scores, y ADRs. Las 54K son solo las que cumplen los filtros default.
Verificación de calidad de datos
| Control | Resultado |
|---|
| duplicados | 0 — dedup 100% efectivo |
| Mismo ticker + mismo exchange repetido | 3 casos — todos son falsos positivos (leading zeros: ≠ ) |
| Tickers cross-listed (múltiples exchanges) | 8,751 — legítimo, una empresa listada en varios mercados |
| Países con más listings | US (16,274), CN (7,016), IN (6,074), CA (5,221), JP (4,764) |
Sin snapshot
Sin snapshot,
tarda ~30s iterando el grid. Con snapshot, es instantáneo.
Formato del snapshot
| Campo | Descripción |
|---|
| Símbolo (GGAL, BMA, MSFT, etc.) |
| Nombre de la empresa |
| Exchange (BASE, NasdaqGS, NYSE) |
| Ruta API para company detail |
| Exchange + Ticker (clave única) |
| Código ISO país |
| Industria |
| N° empleados |
| Año fundación |
score_value/income/health/past/future/management/total
| Snowflake scores |
| Precio actual |
| Market cap (moneda local) |
| , | Múltiplos |
Snapshot específico
bash
python scripts/fetch_sws.py --snapshot assets/26-06-04-ticker-snapshot.csv --ticker GGAL
Mapa Exchange → País
| Exchange | País | Listings | Descripción |
|---|
| US | 6,138 | OTC Markets Pink (EEUU) |
| JP | 4,693 | Tokyo Stock Exchange (Japón) |
| IN | 3,833 | BSE India (antes Bombay SE) |
| CN | 3,723 | Shenzhen Stock Exchange (China) |
| CN | 3,293 | Shanghai Stock Exchange (China) |
| HK | 3,019 | Hong Kong Exchange |
| US | 2,574 | New York Stock Exchange |
| AU | 2,527 | Australian Securities Exchange |
| CA | 2,381 | Toronto Stock Exchange (Canadá) |
| US | 2,304 | NASDAQ Global Market |
| IN | 2,241 | National Stock Exchange of India |
| KR | 2,075 | Korea Exchange (KOSPI) |
| CA | 1,999 | TSX Venture Exchange (Canadá) |
| KR | 1,997 | KOSDAQ (Corea) |
| GB | 1,963 | London Stock Exchange |
| US | 1,854 | NASDAQ Capital Market |
| US | 1,575 | BATS Exchange (EEUU) |
| US | 1,532 | NASDAQ Global Select |
| ES | 1,514 | Bolsas y Mercados Españoles |
| TW | 1,430 | Taipei Exchange (Taiwán) |
| GB | 1,310 | AIM (London Stock Exchange) |
| TW | 1,292 | Taiwan Stock Exchange |
| MY | 1,172 | Bursa Malaysia |
| FR | 1,147 | Euronext Paris |
| DE | 1,135 | Xetra (Deutsche Börse) |
| BR | 1,120 | B3 (Brasil) |
| IL | 1,029 | Tel Aviv Stock Exchange |
| TH | 993 | Stock Exchange of Thailand |
| ID | 985 | Indonesia Stock Exchange |
| SE | 852 | OMX Nordic (Estocolmo) |
| PL | 849 | Warsaw Stock Exchange |
| NO | 811 | Oslo Børs (Noruega) |
| CA | 777 | Canadian Securities Exchange |
| ZA | 754 | Johannesburg Stock Exchange |
| DE | 648 | Deutsche Börse (Frankfurt) |
| CL | 647 | Santiago Stock Exchange (Chile) |
| DK | 636 | Copenhagen Stock Exchange |
| IT | 625 | Borsa Italiana |
| CH | 588 | SIX Swiss Exchange |
| IE | 577 | Irish Stock Exchange |
| VN | 572 | Ho Chi Minh Stock Exchange |
| VN | 417 | Hanoi Stock Exchange |
| SG | 398 | Singapore Exchange |
| BD | 443 | Dhaka Stock Exchange |
| AE | 70 | Dubai Financial Market |
| AE | 85 | Abu Dhabi Securities Exchange |
| AR | 84 | Bolsa de Buenos Aires (Argentina) |
| MX | 147 | Bolsa Mexicana de Valores |
| PE | 102 | Bolsa de Valores de Lima (Perú) |
| CO | 56 | Bolsa de Valores de Colombia |
| ... | ... | ... | 106 exchanges en total |
El mapping completo de los 106 exchanges está en references/REFERENCE.md.
Estructura del skill
skills/simplywallst/
├── SKILL.md # Este archivo
├── references/
│ └── REFERENCE.md # Documentación completa de endpoints y data
├── scripts/
│ └── fetch_sws.py # Script principal
└── assets/
└── YY-MM-DD-ticker-snapshot.csv # Snapshot de tickers (generado)
📖 Documentación detallada: Consultá references/REFERENCE.md para la documentación exhaustiva con ejemplos de respuesta, campos, y consideraciones técnicas.