API Docs — Argentina Bursátil Scrapper

Base URL: https://arg-bursatil-scrapper.sitemaster.com.ar

Ver el markdown crudo en una pestaña aparte

GET /health

GET/health

Chequeo de proceso vivo (usado por Docker/Dokploy healthcheck). Sin autenticación.

Respuesta 200:

{
  "status": "ok",
  "uptimeSeconds": 12345,
  "timestamp": "2026-06-24T22:16:29.832Z"
}

GET /status

GET/status

Estado del pipeline: mercado abierto/cerrado, salud del sidecar de HomeBroker, fuente activa y frescura por clase de activo, cupo de requests de IOL. Sin autenticación.

Respuesta 200:

{
  "timestamp": "2026-06-24T22:16:30.228Z",
  "marketOpen": false,
  "sidecar": {
    "reachable": true,
    "homebrokerConnected": false,
    "lastTickAt": null
  },
  "assetClasses": {
    "acciones":  { "activeSource": "iol", "lastWriteAt": null, "isStale": true, "fallbackSince": "2026-06-24T19:58:47.454Z" },
    "bonos_ars": { "activeSource": "iol", "lastWriteAt": null, "isStale": true, "fallbackSince": "2026-06-24T19:58:47.466Z" },
    "bonos_usd": { "activeSource": "iol", "lastWriteAt": null, "isStale": true, "fallbackSince": "2026-06-24T19:58:47.481Z" },
    "cedears":   { "activeSource": "iol", "lastWriteAt": null, "isStale": true, "fallbackSince": "2026-06-24T19:58:47.528Z" },
    "opciones":  { "activeSource": "iol", "lastWriteAt": null, "isStale": true, "fallbackSince": "2026-06-24T19:58:47.536Z" }
  },
  "iol": { "requestsThisMonth": 0, "monthlyLimit": 25000 }
}

Campos por clase de activo:

GET /

GET/

Dashboard HTML legible para humanos: mismo contenido que /status en formato de tabla, más la última foto de precios conocida por símbolo (cache en memoria, el mismo que alimenta Google Sheets). Se autorrefresca cada 30s. Sin autenticación.

GET /prices

GET/prices

Snapshot completo de precios en JSON — pensado para que el front lo consuma directo, sin pasar por Google Sheets. Mismo cache en memoria que alimenta / y la sincronización a Sheets: carry-forward de presentación, así que un símbolo sigue apareciendo con su último valor conocido aunque la fuente no haya mandado un tick nuevo en el último ciclo. Sin autenticación.

Respuesta 200:

{
  "timestamp": "2026-06-25T13:46:22.000Z",
  "count": 2,
  "prices": [
    {
      "Tipo": "ACCION",
      "Simbolo": "GGAL",
      "Descripcion": "",
      "Currency": "ARS",
      "UltCI": 0,
      "UltCI_Bid": 0,
      "UltCI_Ask": 0,
      "UltCI_CantBid": 0,
      "UltCI_CantAsk": 0,
      "Ult24hs": 7630,
      "Ult24hs_Bid": 7625,
      "Ult24hs_Ask": 7635,
      "Ult24hs_CantBid": 120,
      "Ult24hs_CantAsk": 80,
      "Apertura": 0,
      "Maximo": 0,
      "Minimo": 0,
      "CierreAnt": 0,
      "VarPct": 0.06,
      "Volumen": 0,
      "TipoOpcion": "",
      "Subyacente": "",
      "Strike": "",
      "Vencimiento": "",
      "Timestamp": "2026-06-25 10:46:04"
    },
    {
      "Tipo": "OPCION",
      "Simbolo": "GFGC7400AG",
      "Descripcion": "",
      "Currency": "ARS",
      "UltCI": 759.999,
      "UltCI_Bid": 0,
      "UltCI_Ask": 0,
      "UltCI_CantBid": 0,
      "UltCI_CantAsk": 0,
      "Ult24hs": 0,
      "Ult24hs_Bid": 0,
      "Ult24hs_Ask": 0,
      "Ult24hs_CantBid": 0,
      "Ult24hs_CantAsk": 0,
      "Apertura": 0,
      "Maximo": 0,
      "Minimo": 0,
      "CierreAnt": 0,
      "VarPct": 0,
      "Volumen": 0,
      "TipoOpcion": "CALL",
      "Subyacente": "GGAL",
      "Strike": 7400,
      "Vencimiento": "2026-08-21",
      "Timestamp": "2026-06-25 13:46:09"
    }
  ]
}

Notas de campos:

POST /internal/homebroker/ticks

POST/internal/homebroker/ticks

Interno — usado solo por el sidecar de HomeBroker (Python) corriendo en la misma red de Docker Compose. El puerto no está publicado externamente; no es parte de la API pública.

Auth: header X-Sidecar-Token si SIDECAR_TOKEN está seteado.

Respuesta: 204 sin cuerpo si el payload es válido (escriba o no, según WRITE_ENABLED); 400 si el payload no matchea el schema esperado; 401 si falta o no coincide el token.

Ejemplo con curl

curl https://arg-bursatil-scrapper.sitemaster.com.ar/health
curl https://arg-bursatil-scrapper.sitemaster.com.ar/status
curl https://arg-bursatil-scrapper.sitemaster.com.ar/prices