Actualización de la API pública · 21 de agosto de 2026
API de cotizaciones de la región
Un equipo de estudiantes de la Universidad Tecnológica (UTEC) nos escribió contando que ampliaron el alcance de su proyecto académico a las cotizaciones de la región y preguntando si teníamos algo que cubriera divisas regionales. No teníamos: la API era uruguaya. Ahora sí — GET /regional devuelve el dólar y los cruces de Argentina, Brasil, Paraguay, Chile, Bolivia y Uruguay con todos los mercados que publica cada país, y GET /regional/history devuelve las series diarias: los dólares argentinos desde 2011, la referencia del BCRA desde 1996, el fixing brasileño desde el Plano Real y el dólar observado chileno desde 1984. Y GET /regional/changes devuelve cada movimiento de precio, por chico que sea.
El pedido, y qué no vas a leer acá
El mensaje llegó por correo desde casillas institucionales de UTEC. Publicamos qué se pidió —cobertura de divisas regionales en una API pública— y qué hicimos. No publicamos nombres, direcciones de correo, la carrera, la cátedra ni ningún dato que permita identificar a quienes escribieron: ni acá, ni en el repositorio, ni en el historial de commits. Una casilla de correo es un dato personal en los términos del artículo 4 de la Ley Nº 18.331 y difundirla exige un consentimiento que nadie da al mandar una consulta técnica. El razonamiento completo, con los artículos, está en la página del endpoint intradía, que salió del mismo modo.
Comparar el dólar entre países vecinos parece trivial y no lo es. Argentina publica siete precios simultáneos para la misma moneda; Brasil tiene un fixing legal y un precio de mostrador que difieren varios puntos; Paraguay publica una planilla oficial y un referencial que se recalcula cada media hora; Chile publica el promedio de la rueda anterior; Bolivia tiene un oficial que casi nadie usa. Una API que devuelva "el dólar" de cada país sin decir cuál de todos ellos es, entrega un número que no se puede comparar con nada. Esta devuelve todos, etiquetados.
Los ocho endpoints
Todos son GET, públicos, sin autenticación, sobre HTTPS y con CORS abierto. Base: https://api.cambio-uruguay.com
El tablero completo: cada cotización con su mercado, su tipo, su fuente y su hora, más el tablero por país, las brechas, la matriz de cruces, la comparación de rutas y lo que el validador descartó.
Sin parámetros.
Serie diaria (un punto por día, el cierre) de un mercado. Sin filtros devuelve todas las series mezcladas.
| Parámetro | Por defecto | Qué hace |
|---|---|---|
country | — | AR, BR, CL, PY, BO o UY. |
market | — | blue, oficial, ptax, turismo, observado, referencial, casas… |
base | — | Moneda unidad, normalmente USD. |
quote | — | Moneda en la que se expresa el precio (ARS, BRL…). |
from / to | — | Rango de días, YYYY-MM-DD. |
limit | 5000 | Máximo de puntos (1 a 20000). Se recortan los más viejos. |
Inventario de series: clave, país, mercado, par, cantidad de días y rango de fechas. Útil para saber qué pedirle a /regional/history antes de pedírselo.
Sin parámetros.
La comparación de rutas: comprar la moneda del vecino en Uruguay contra comprar dólares acá y cambiarlos allá, con el costo por unidad de cada una y cuál gana.
| Parámetro | Por defecto | Qué hace |
|---|---|---|
currency | todas | ARS, BRL, PYG, CLP o BOB. |
amount | — | Cantidad de moneda extranjera: agrega el total de cada ruta. |
Conversión entre monedas de la región, pasando por el dólar. Devuelve las cotizaciones usadas en legs para que el resultado se pueda rehacer a mano.
| Parámetro | Por defecto | Qué hace |
|---|---|---|
from / to | obligatorios | Códigos ISO de tres letras. |
amount | 1 | Cantidad a convertir. |
market | el oficial | Fija el mercado del lado de origen: blue, oficial, ptax, turismo… |
Las fuentes con el estado de la última corrida: si respondió, cuánto tardó, qué mercados publica, en cuáles queda corroborando a otra, qué se le descartó y por qué. El resumen trae `singleSourceMarkets`, que es el número a vigilar: los mercados que todavía dependen de una sola lectura.
Sin parámetros.
La misma ficha, de una sola fuente.
| Parámetro | Por defecto | Qué hace |
|---|---|---|
id | obligatorio | El id de la fuente, como lo lista /regional/sources. |
Cada movimiento de precio, sin umbral mínimo: un guaraní o una diezmilésima de peso entran igual. Es la otra mitad de /regional/history, porque la fila diaria se sobrescribe y lo que pasa adentro del día sólo existe acá.
| Parámetro | Por defecto | Qué hace |
|---|---|---|
key | — | Clave exacta del mercado, por ejemplo AR:blue:USDARS. |
country / market / base / quote | — | Los mismos filtros que en /regional/history. |
from / to | — | Rango por fecha y hora (ISO 8601). |
limit | 500 | Máximo de movimientos (1 a 5000). |
Una respuesta de verdad, de hace un rato
Esto no es un ejemplo escrito a mano: es una cotización del tablero de este momento (hace 6 min), servida por el mismo endpoint.
Cotizaciones
57
Fuentes que respondieron
22/22
Cruces derivados
30
Dólar blue (ARS)
1.550,00
{
"id": "AR:blue:USDARS",
"country": "AR",
"market": "blue",
"label": "Dólar blue",
"kind": "parallel",
"base": "USD",
"quote": "ARS",
"buy": 1530,
"sell": 1550,
"avg": 1540,
"spreadPct": 1.3072,
"high": null,
"low": null,
"variationPct": 0,
"updatedAt": "2026-08-22T22:31:15.000Z",
"source": "ar_criptoya",
"sourceUrl": "https://criptoya.com/api/dolar",
"corroboratedBy": [
"ar_dolarapi",
"ar_bluelytics",
"ar_dolarhoy",
"ar_ambito"
],
"disagreementPct": 0.4221
}Los campos que importan y suelen ignorarse
kinddice qué clase de precio es:official,wholesale,parallel,financial,card,retailoreference. Comparar unofficialcon unparallelsin decirlo es el error clásico.updatedAtes la hora que declara la fuente, no la de nuestra lectura. El dólar observado chileno es de la rueda anterior por definición.corroboratedByydisagreementPct: qué otras fuentes publicaron ese mismo mercado y cuánto se alejó la que más se alejó.rejected, en la raíz: lo que el validador descartó y por qué. Sirve para detectar que una fuente se rompió el día que se rompe.
Qué historia hay, y desde cuándo
Inventario en vivo de GET /regional/series. Las series largas son las que publica el propio emisor; las de un solo día empezaron cuando este tablero salió, porque nadie publica su historia y la estamos construyendo un día por vez.
| Serie | País | Días | Desde | Hasta |
|---|---|---|---|---|
CL:observado:USDCLP | CL | 10.629 | 1984-01-02 | 2026-08-24 |
BR:ptax:USDBRL | BR | 8.068 | 1994-07-01 | 2026-08-21 |
AR:referencia:USDARS | AR | 7.437 | 1996-01-02 | 2026-08-21 |
AR:blue:USDARS | AR | 5.711 | 2011-01-03 | 2026-08-22 |
AR:oficial:USDARS | AR | 5.711 | 2011-01-03 | 2026-08-22 |
AR:mayorista:USDARS | AR | 5.710 | 2011-01-03 | 2026-08-21 |
AR:contadoconliqui:USDARS | AR | 4.981 | 2013-01-02 | 2026-08-22 |
AR:bolsa:USDARS | AR | 2.855 | 2018-10-29 | 2026-08-22 |
AR:tarjeta:USDARS | AR | 2.435 | 2019-12-23 | 2026-08-22 |
AR:cripto:USDARS | AR | 1.293 | 2023-02-07 | 2026-08-22 |
UY:casas:ARSUYU | UY | 1.161 | 2023-05-25 | 2026-08-22 |
UY:casas:USDUYU | UY | 1.161 | 2023-05-25 | 2026-08-22 |
UY:casas:BRLUYU | UY | 1.148 | 2023-05-25 | 2026-08-22 |
UY:casas:EURUYU | UY | 1.148 | 2023-05-25 | 2026-08-22 |
UY:casas:PYGUYU | UY | 1.147 | 2023-05-25 | 2026-08-22 |
UY:bcu:USDUYU | UY | 1.124 | 2023-05-25 | 2026-08-21 |
UY:casas:CLPUYU | UY | 727 | 2023-05-25 | 2026-08-22 |
PY:referencial:USDPYG | PY | 427 | 2024-11-26 | 2026-08-21 |
Hay 40 series más, todas de mercados que ningún tercero publica en forma histórica (Paraguay, Bolivia, el mostrador uruguayo, los cruces). Se pueden listar todas con GET /regional/series.
Las fuentes, y a quién citar
Salvo la fila de Uruguay, ningún dato es nuestro: somos un intermediario que normaliza. Si publicás un número tomado de acá, citá a quien lo publica —el catálogo está en GET /regional/sources y trae la URL de cada original—. Si además nos mencionás, mejor, pero lo importante es lo primero.
| id | Fuente | País | Acceso | Qué aporta |
|---|---|---|---|---|
ar_dolarapi | DolarAPI | AR | API | Los siete dólares argentinos (oficial, blue, bolsa, CCL, mayorista, cripto y tarjeta) más euro, real, peso chileno y peso uruguayo en pesos argentinos. |
ar_bluelytics | Bluelytics | AR | API | Dólar oficial y blue con promedio propio, más el euro blue (el único precio de calle del euro que se publica). |
ar_ambito | Ámbito Financiero | AR | API | Oficial, informal, CCL, MEP, cripto, turista, euro y real, cada uno con la variación del día — el único que publica el cambio, no sólo el nivel. |
ar_dolarhoy | DolarHoy | AR | Scraping | Tercer relevamiento independiente del blue, más oficial, MEP, CCL, USDC y tarjeta, leídos de la página que mira el público argentino. |
ar_criptoya | CriptoYa | AR | API | Quinta lectura de los dólares argentinos, con los financieros desglosados por bono y liquidación (se usa AL30 a 24 h) y el cripto por stablecoin. |
ar_bcra | BCRA | AR | API | Tabla oficial del banco central argentino: toda la región (real, guaraní, peso chileno, boliviano, peso uruguayo) cotizada en pesos argentinos el mismo día. |
br_bcb | Banco Central do Brasil (PTAX) | BR | API | El fixing PTAX (compra y venta) con el que se liquidan contratos, tarjetas e impuestos en Brasil, y su serie diaria completa desde 1984. |
br_awesomeapi | AwesomeAPI | BR | API | Dólar comercial y dólar TURISMO (lo que realmente cobra un câmbio), euro y el cruce directo peso argentino/real, con máximo, mínimo y variación del día. |
cl_mindicador | mindicador.cl (Banco Central de Chile) | CL | API | Dólar observado y euro del Banco Central de Chile, con su serie diaria por año, más la UF. |
cl_boostr | Boostr | CL | API | Segunda lectura del dólar observado y el euro del Banco Central de Chile, para contrastar la primera. |
cl_dolarapi | DolarAPI Chile | CL | API | Precio de mostrador (compra y venta) del dólar, el euro y el peso argentino en pesos chilenos. |
py_bcp | Banco Central del Paraguay | PY | Scraping | Tipo de cambio referencial del mercado libre (compra y venta, actualizado cada media hora) y la planilla oficial con ~26 monedas en guaraníes. |
py_dolarpy | DolarPy | PY | API | El referencial del BCP más el mostrador de once casas de cambio paraguayas en una sola respuesta: la única forma de tener consenso en Paraguay. |
py_maxicambios | Maxicambios | PY | Scraping | Precio de mostrador de una casa de cambio paraguaya: dólar, real, peso argentino, peso uruguayo, euro y yen en guaraníes. |
bo_bcb | Banco Central de Bolivia | BO | Scraping | El tipo de cambio oficial que fija el banco central boliviano, leído de su portada. Es la única forma de contrastar el oficial de Bolivia. |
bo_dolarapi | DolarAPI Bolivia | BO | API | Dólar oficial boliviano y el precio paralelo (Binance P2P), que es donde se ve la brecha real. |
uy_external | DolarAPI Uruguay | UY | API | Lectura de un tercero sobre el mercado uruguayo: el control externo de nuestros propios datos. |
world_currencyapi | Currency API (jsDelivr) | API | Referencia diaria del dólar contra las seis monedas de la región. Una de las cuatro que se contrastan entre sí. | |
world_floatrates | FloatRates | API | Segunda referencia diaria independiente, con su propia fecha de publicación por moneda. | |
world_coinbase | Coinbase | API | Tercera referencia independiente: el tipo de cambio que Coinbase publica para monedas fiat, sin clave ni registro. | |
world_erapi | ExchangeRate-API (open) | API | Referencia diaria del dólar contra todas las monedas de la región. Se usa como respaldo cuando una fuente nacional no responde y como control cruzado de las demás. | |
uy_local | cambio-uruguay.com | UY | API | El mejor precio de mostrador entre ~46 casas de cambio uruguayas, más la cotización oficial del BCU. Datos propios, actualizados cada 5 minutos. |
ar_argentinadatos | ArgentinaDatos | AR | API | Serie diaria de los siete dólares argentinos; oficial y blue desde enero de 2011. |
Límites, y qué NO garantiza
La respuesta se cachea 2 minutos. Pedirlo cada segundo no trae nada nuevo: lo que devuelve es la última corrida, no una consulta en vivo a trece sitios.
updatedAt es la hora que declara la fuente. El observado chileno es de la rueda anterior, el PTAX se fija una vez al día y la planilla paraguaya se publica una vez por jornada. oldestQuoteAt, en la raíz, es la más vieja del tablero.
Veintiuna fuentes en seis países: alguna se cae. El tablero se publica igual y sources dice quién no respondió. Si una corrida trae menos de la mitad de lo guardado, se conserva la anterior antes que publicar un tablero mutilado.
Son precios publicados por terceros, normalizados. Ninguna casa de cambio está obligada a operar a estos valores y nada de esto es una recomendación financiera.
Casi nada de esto es nuestro. Cada cotización trae source y sourceUrl; si publicás un número, el crédito va a quien lo publica.
Las series argentinas arrancan en 2011 y el PTAX brasileño en 1995 porque sus publicadores las dan así. Las de Paraguay, Bolivia, Uruguay y los cruces arrancan el día que salió este tablero: nadie las publica y se están construyendo.
Tres llamadas para empezar
# El tablero completo de la región
curl -s "https://api.cambio-uruguay.com/regional" | jq '.board[] | {country, oficial: .official.avg}'
# La serie diaria del dólar blue desde 2011
curl -s "https://api.cambio-uruguay.com/regional/history?country=AR&market=blue&base=USD"e=ARS&from=2011-01-01" \
| jq '.count, .points[0], .points[-1]'
# Cuántos pesos uruguayos son 10.000 pesos argentinos al blue
curl -s "https://api.cambio-uruguay.com/regional/convert?from=ARS&to=UYU&amount=10000&market=blue" | jq Para series largas conviene filtrar por country + market + base + quote: sin filtros el endpoint devuelve todas las series mezcladas, que es casi nunca lo que se quiere.
Preguntas frecuentes
- ¿Necesito una clave o registrarme?
- No. Son endpoints públicos, sin autenticación, sobre HTTPS y con CORS abierto. No se recolecta nada de quien llama más allá de los registros técnicos normales de un servidor web.
- ¿Hay límite de llamadas?
- No hay un límite formal, pero la respuesta se cachea dos minutos y los datos se recalculan cada veinte, así que llamar más seguido que eso no devuelve información nueva. Si necesitás un volumen alto o una descarga masiva, escribinos antes: es más fácil darte los datos de otra forma que aguantar el tráfico.
- ¿Qué monedas cubre exactamente?
- El dólar contra las seis monedas de la región (ARS, BRL, CLP, PYG, BOB, UYU), el euro donde el país lo publica, y los cruces directos que alguna fuente cotiza: el real en pesos argentinos, el peso argentino en reales y en pesos chilenos, el peso uruguayo en guaraníes y en pesos argentinos, entre otros. Además, la matriz completa de cruces implícitos entre las seis monedas, anclada siempre en cotizaciones oficiales.
- ¿En qué se diferencia de las APIs de tipo de cambio que ya existen?
- La mayoría devuelve un número por moneda. Esta devuelve todos los mercados que cada país publica, etiquetados por tipo, con la fuente y la hora de cada uno, y dice cuáles fuentes se corroboran entre sí y cuáles descartó el validador. Para Argentina, "el dólar" son siete precios distintos; una API que devuelve uno solo obliga a adivinar cuál.
- ¿Y los datos de Uruguay?
- La fila uruguaya del tablero regional es un resumen: el mejor precio entre las casas que operan cada moneda. El detalle casa por casa vive en los endpoints uruguayos de siempre (GET / para el tablero completo, /intraday para la variación del día, /analytics/rates para series por hora o por día), documentados en la página de desarrolladores.
- ¿Puedo usar esto en un trabajo académico o en un producto?
- Sí, en los dos casos, gratis y sin permiso previo. Lo único que pedimos es que cites a la fuente primaria de cada dato, que está en el campo sourceUrl de cada cotización y en el catálogo de /regional/sources.
¿Necesitás otra cosa?
Esta página existe porque alguien preguntó. Si te falta una moneda, un país, un campo o un formato, escribinos: si es razonable y la fuente es pública, se hace.