Dólares
GET
https://dolarapi.com/v1/dolares
Devuelve la cotización actual del dólar estadounidense en Argentina. Incluye el precio de compra y venta de dólares en diferentes mercados (denominados "casas").
Respuestas
Devuelve todas las cotizaciones
application/json
JSON
[
{
"compra": 0,
"venta": 0,
"casa": "string",
"nombre": "string",
"moneda": "string",
"fechaActualizacion": "string"
}
]
GET
https://dolarapi.com/v1/dolares
Ejemplos
cURL
curl -X GET \
'https://dolarapi.com/v1/dolares'
JavaScript
fetch('https://dolarapi.com/v1/dolares')
.then(response => response.json())
.then(data => console.log(data));
PHP
<?php
$url = 'https://dolarapi.com/v1/dolares';
$method = 'GET';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
?>
Python
import requests
url = 'https://dolarapi.com/v1/dolares'
response = requests.get(url)
print(response.json())
Ejemplos de uso
App.DolarApi.com
js
async function getData() {
const coloresMap = {
oficial: '#6b7280',
blue: '#3b82f6',
bolsa: '#6366f1',
contadoconliqui: '#22c55e',
mayorista: '#ec4899',
tarjeta: '#f97316',
cripto: '#eab308',
}
const casasMap = {
oficial: 'Oficial',
blue: 'Blue',
bolsa: 'MEP',
contadoconliqui: 'CCL',
mayorista: 'Mayorista',
tarjeta: 'Tarjeta',
cripto: 'Cripto',
}
const dolares = (await fetch('https://dolarapi.com/v1/dolares').then((res) => res.json()))
const dolarOficial = dolares.find((dolar) => dolar.casa === 'oficial')
return dolares
.map((dolar) => {
return {
moneda: dolar.moneda,
casa: dolar.casa,
nombre: casasMap[dolar.casa],
compra: dolar.compra,
venta: dolar.venta,
fechaActualizacion: dolar.fechaActualizacion,
x1: dolarOficial.venta,
x2: dolar.casa === 'oficial' ? dolar.venta : dolar.venta,
color: coloresMap[dolar.casa],
brecha: dolar.casa === 'oficial' ? 0 : (dolar.venta - dolarOficial.venta) / dolarOficial.venta * 100,
};
})
}
js
function getPlotBase({
data,
x,
y,
xLabel,
yLabel,
title,
additionalMarks,
}) {
return Plot.plot({
marginTop: 60,
marginLeft: 60,
width,
height: 400,
padding: 0.3,
x: {
insetRight: 50,
axis: 'top',
labelAnchor: 'center',
grid: true,
},
y: {
axis: 'left',
label: '',
},
marks: [
Plot.ruleX([data.find((d) => d.casa === 'oficial').venta / 1.5], { strokeWidth: 0 }),
Plot.ruleX([data.find((d) => d.casa === 'oficial').venta / 0.5], { strokeWidth: 0 }),
Plot.arrow(data, {
y: 'nombre',
x1: 'x1',
x2: 'x2',
sort: {
y: 'x2',
},
stroke: (d) => d.x2 > d.x1 ? '#14b8a6' : '#ef4444',
}),
Plot.dot(
data.filter((d) => d.brecha === 0),
{
x: 'x1',
y: 'nombre',
fill: 'color',
r: 10,
}
),
Plot.dot(
data.filter((d) => d.brecha !== 0),
{
x: 'x1',
y: 'nombre',
fill: 'color',
r: 5,
}
),
Plot.text(data, {
x: 'x1',
y: 'nombre',
text: (d) => d.casa === 'oficial' ? '' : `${d.brecha.toFixed(2) > 0 ? '+' : ''}${d.brecha.toFixed(2)}%`,
dx: 30,
dy: -10,
}),
Plot.text(
data.filter((d) => d.brecha > 0),
{
x: 'x2',
y: 'nombre',
text: (d) => `$${d.x2.toFixed(2)}`,
textAnchor: 'end',
dx: 50,
}
),
Plot.text(
data.filter((d) => d.brecha < 0),
{
x: 'x2',
y: 'nombre',
text: (d) => `$${d.x2.toFixed(2)}`,
textAnchor: 'start',
dx: -50,
}
),
Plot.text(
data.filter((d) => d.brecha === 0),
{
x: 'x2',
y: 'nombre',
text: (d) => `$${d.x2.toFixed(2)}`,
textAnchor: 'center',
dx: 0,
dy: -20,
fontWeight: 'bold',
}
),
],
})
}
Variación de Cotizaciones respecto al Oficial
viernes, 17/01/2025, 21:02
js
(async () => {
const data = (await getData())
return getPlotBase({
data,
})
})()