Guía rápida: consultar precios de supermercados por EAN desde tu backend
Esta guía es para quien quiere llamar a la API desde su propio servidor, sin pasar por un asistente de IA. Con una key y un EAN (el código de barras) obtenés los precios del producto en las cadenas de supermercados, con la fecha de los datos. Es la misma API que usa el MCP, y comparten la misma cuota.
1. Conseguí tu API key
Entrá a argentinadata.mymcps.dev e iniciá sesión con Google. Sin tarjeta, la key aparece en tu panel (/dashboard). El plan Free incluye 20 consultas por día, 100 por semana y 300 por mes. Guardá la key como variable de entorno de tu servidor y no la pongas en código que llegue al navegador.
2. Autenticación
Todas las llamadas llevan la key en el header Authorization. La base es https://argentinadata.mymcps.dev/api/v1 y la referencia completa de cada ruta está en /api/docs.
Authorization: Bearer TU_API_KEY
3. Comparar el precio de un EAN entre cadenas
La ruta /sepa/comparar devuelve el precio del producto en cada cadena. Con latitud y longitud (y opcionalmente radio_metros) la comparación se limita a lo que hay cerca de esa ubicación.
curl
curl -H "Authorization: Bearer $ARGDATA_KEY" \
"https://argentinadata.mymcps.dev/api/v1/sepa/comparar?ean=7790895000997"
Node (fetch, Node 18 o más nuevo)
const url = "https://argentinadata.mymcps.dev/api/v1/sepa/comparar?ean=7790895000997";
const res = await fetch(url, {
headers: { Authorization: `Bearer ${process.env.ARGDATA_KEY}` },
});
if (!res.ok) throw new Error(`Argentina Data respondió ${res.status}`);
const data = await res.json();
console.log(data.resumen.cadena_mas_barata, data.fecha_snapshot);
Python (requests)
import os, requests
r = requests.get(
"https://argentinadata.mymcps.dev/api/v1/sepa/comparar",
params={"ean": "7790895000997"},
headers={"Authorization": f"Bearer {os.environ['ARGDATA_KEY']}"},
timeout=30,
)
r.raise_for_status()
data = r.json()
print(data["resumen"]["cadena_mas_barata"], data["fecha_snapshot"])
Un recorte de la respuesta real (Coca-Cola 2,25 L; la lista completa trae todas las cadenas):
{
"ean": "7790895000997",
"descripcion": "Gaseosa Coca Cola Sabor Original Menos Azúcares 2,25 L",
"precios_por_cadena": [
{ "bandera_nombre": "Sup. Unicoop", "precio_promedio": 4081, "precio_min": 4081, "precio_max": 4081, "cant_sucursales": 3 },
{ "bandera_nombre": "Jumbo", "precio_promedio": 5866.32, "precio_min": 5100, "precio_max": 6290, "cant_sucursales": 25 }
],
"resumen": { "cadena_mas_barata": "Sup. Unicoop", "precio_mas_bajo": 3795, "cadena_precio_mas_bajo": "Maxi", "cant_cadenas": 22 },
"fecha_snapshot": "2026-10-09",
"nota_staleness": "Los datos son del 2026-10-09 (hace 2 días): es la última publicación de SEPA (Secretaría de Comercio) que pudimos incorporar. Pueden no reflejar los precios ni las promociones de hoy."
}
4. La sucursal más barata cerca de una ubicación
La ruta /sepa/sucursal-barata lista las sucursales que venden el producto cerca de unas coordenadas, ordenadas por precio.
curl -H "Authorization: Bearer $ARGDATA_KEY" \
"https://argentinadata.mymcps.dev/api/v1/sepa/sucursal-barata?ean=7790895000997&latitud=-34.6037&longitud=-58.3816"
Un recorte de la respuesta real:
{
"ean": "7790895000997",
"sucursales": [
{
"bandera_nombre": "Market",
"sucursal_nombre": "Av. Corrientes",
"direccion": "Av. Corrientes 1160",
"distancia_metros": 137,
"precio_lista_cadena": 5871.5,
"mejor_precio": 5871.5,
"disponibilidad": "sin_datos_recientes_de_la_sucursal",
"precio_es_de_cadena": true
}
],
"total": 5,
"radio_metros": 500,
"fecha_snapshot": "2026-10-09"
}
5. Cómo leer la respuesta
fecha_snapshot: la fecha de la publicación de precios que se usó. Los precios son los de ese día, no necesariamente los de hoy. Guardala junto al precio si lo mostrás.fuente: de dónde salen los datos (SEPA, de la Secretaría de Comercio).sucursal-baratala trae en la respuesta;compararno trae el campo, pero la fuente es la misma. Citala cuando muestres precios a un usuario.nota_staleness: aparece cuando los datos tienen dos días de atraso o más. Si está, avisale al usuario que pueden no reflejar los precios de hoy.resumen.advertenciaycobertura_cadenas: avisos sobre la comparación, por ejemplo que una sola cadena publica el producto, o qué cadenas quedaron fuera por tener datos más viejos que el resto.precio_es_de_cadena: ensucursal-barata,truesignifica que el precio no es una observación de esa sucursal sino el precio general de la cadena, repetido para todas sus sucursales de la zona.falsesignifica que detrás del precio hay un precio propio de la sucursal o una promoción vigente propia. Sólo se usa cuando no tenemos datos recientes de la sucursal (o su precio no es confiable) y no sabemos si tiene el producto.disponibilidad: ensucursal-barata, dice qué sabemos de cada sucursal para ese producto.con_precio_propio: publicó su precio (precio_sucursal).no_publica_el_producto: la sucursal publicó sus precios en los últimos días pero no tiene este producto; viene conmejor_precioennully al final de la lista, y conviene decirle al usuario que esa sucursal no lo tiene.sin_datos_recientes_de_la_sucursal: no publicó en los últimos días, así que no sabemos; se muestra el promedio de su cadena conprecio_es_de_cadenaentrue.- Promociones: cuando
promo_condicionadaestrue, el mejor precio exige comprar la cantidad indicada enunidades_requeridas_promo(por ejemplo, 2do al 50%). - Sin datos: un EAN que no existe devuelve 200 con las listas vacías (y, en
comparar, unanotaque lo dice). Esas respuestas no consumen cuota. - Cadena más barata:
resumen.cadena_mas_baratase elige por precio promedio de la cadena, yprecio_mas_bajoes el mínimo en una sucursal puntual, que puede ser de otra cadena (en el ejemplo, Maxi).
6. Errores y cuota
- 401: falta la key o no es válida. Revisá el header
Authorization. - 402: en el plan Free, se terminó el cupo. El cuerpo trae un link para pasar a Pro o cargar crédito prepago.
- 429: en el plan Pro, se alcanzó algún tope (día, semana o mes). El cuerpo trae tus límites y tu consumo. Reintentar de inmediato no sirve: esperá a que se libere la ventana o cargá crédito.
- 400: un parámetro está mal (por ejemplo, un número con coma). El mensaje dice cuál.
Los límites son ventanas móviles de 24 horas, 7 días y 30 días, y no cuentan las consultas de precios sin datos ni las que fallan por un error nuestro. Las consultas con un parámetro inválido sí cuentan. En el lote de códigos de barras (eans, hasta 50 por consulta) se cuenta una consulta por lote cada 10 códigos con datos (redondeado hacia arriba); los códigos sin datos no suman. Para saber cuánto te queda antes de encadenar consultas, llamá a GET /api/v1/fiscal/cuota (por MCP, la tool consultar_cuota): no consume cuota.
curl -H "Authorization: Bearer $ARGDATA_KEY" \
"https://argentinadata.mymcps.dev/api/v1/fiscal/cuota"
La respuesta trae, por cada período, usado, limite y restante. Si necesitás más volumen, escribinos a [email protected].
Cómo empezar, en dos minutos
- Creá tu cuenta gratis con Google: 20 consultas por día, sin tarjeta.
- Conectá Argentina Data en tu asistente siguiendo la guía paso a paso para Claude, ChatGPT, Cursor o VS Code.
- Hacé la pregunta como se la harías a una persona. El asistente elige la herramienta y te responde citando la fuente.