Cotizaciones

Las 10 cotizaciones más recientes del Banco Central del Uruguay (BCU).

Cargando cotizaciones…

Qué significa cada columna

Las definiciones son literales de la especificación oficial del servicio web de cotizaciones del Banco Central del Uruguay (BCU), que no las detalla más.

DatoCampo de la APICampo del BCUDefinición oficial del BCU
FechadateFecha“Fecha de la cotización.”
Código de monedacurrency_codeMoneda“Código de la moneda.”
Monedacurrency_nameNombre“Nombre de la moneda.”
Símbolo (junto a la moneda)isoCodigoISO“Símbolo monetario.”
ComprabuyTCC“Tipo Cambio Compra.”
VentasellTCV“Tipo Cambio Venta.”
ArbitrajearbitrageArbAct“Arbitraje.”

Para tener en cuenta

  • El campo del BCU se llama CodigoISO, pero la especificación lo define como “símbolo monetario”: algunos valores no son códigos ISO, por ejemplo “DLS.”, “U.I.” o “R$”.
  • El BCU también publica cómo se expresa el arbitraje (campo FormaArbitrar): 0 = unidades de moneda por dólar de EEUU, 1 = dólares de EEUU por unidad de moneda, 9 = no aplica. Esta API todavía no lo devuelve; por el orden de magnitud de los valores, el peso argentino se expresa en unidades por dólar y el euro en dólares por unidad.
  • El BCU publica además el país de cada moneda (campo Emisor), que esta API tampoco devuelve por ahora.
  • No hay cotizaciones para fines de semana ni feriados. La UP, la UI y la UR se publican por adelantado; este sitio muestra solo fechas hasta hoy.

Fuente: Web Service de Cotizaciones del BCU, especificación versión 3 (28/09/2020), actualizada el 12/12/2022. Ver la especificación (PDF) · Ver el WSDL del servicio

Usá estos datos desde tus sistemas

La API es pública y gratuita: devuelve las cotizaciones en formato JSON, con todo el histórico desde 2020 y sin registro. Si necesitás otro dato o un servicio a medida, escribime desde la página del autor.

import requests

URL = "https://apitool.techspot365.com/api/v1/exchange-rates"

# Últimas 2 cotizaciones del dólar (usd)
response = requests.get(URL, params={"currency": "usd", "limit": 2}, timeout=30)
response.raise_for_status()
result = response.json()

for row in result["data"]:
    print(row["date"], row["currency_name"], row["buy"], row["sell"])

# Si hay más páginas, result["meta"]["has_more"] es True: pedí page=2, 3, ...