API

Barato, sí. También en JSON

barato.si es un archivo JSON que se regenera cada día, con una web encima. La API es gratis, no pide clave y son archivos estáticos: guárdalos en caché y con una consulta al día basta.

Endpoints

RutaQué devuelve
https://barato.si/api/deals.jsonLas ofertas de hoy, en orden: las 30 primeras repartidas entre fuentes, el resto por puntuación.
https://barato.si/api/deals/YYYY-MM-DD.jsonUn día concreto. Se guardan los últimos 30 días (UTC).
https://barato.si/api/index.json{ latest, days }: la fecha más reciente y todas las disponibles, de nueva a vieja.
https://barato.si/feed.xmlRSS 2.0 con las 30 primeras, con el contenido original de la fuente.
https://barato.si/llms.txtDescripción en texto plano para agentes y modelos.

Actualización: diaria, sobre las 11:00 UTC (GitHub puede retrasarla un rato). El campo generatedAt dice cuándo se generó cada archivo.

Ejemplos

curl + jq
curl -s https://barato.si/api/deals.json \
  | jq '.deals[] | select(.flag != "normal") | {title, price, currency, url}'
fetch (JavaScript)
const res = await fetch('https://barato.si/api/deals.json')
const { generatedAt, deals } = await res.json()

const errores = deals.filter(d => d.flag === 'error-probable')
console.log(generatedAt, errores.length, deals[0]?.title)

Esquema

Cada archivo es un DealsFile: { date, generatedAt, count, sources[], deals[] }. sources dice qué fuentes respondieron y cuáles no, para que una fuente caída no pase desapercibida. Cada elemento de deals es un Deal:

CampoTipoNota
idstringEstable entre días para la misma oferta.
titlestringTítulo original de la fuente, sin traducir.
urlstringEnlace original a la oferta, tal cual.
storestringTienda: "Amazon", "Macy's"…
source / sourceUrlstringDe dónde salió y enlace a esa fuente.
currencystringISO 4217.
pricenumberPrecio de oferta, en unidades de la moneda. 0 = gratis.
listPricenumber | nullPrecio de referencia, si la fuente lo da.
discountPctnumber | null0–100. null sin precio de referencia.
publishedAt / foundAtISO 8601Publicación en la fuente / primera vez vista.
scorenumber0–100. Puntuación de barato.si.
flag"error-probable" | "chollo" | "normal"Etiqueta de barato.si. En la web: «Posible error de precio», «Baratísimo» o nada.
reasonsstring[]Por qué, en español. Análisis propio.
image / categorystring | nullSi la fuente los da.
syndicationobject?Contenido original de la fuente, sin tocar, para atribución.

Atribución y uso razonable

Cita a barato.si y a la fuente original de cada oferta (el campo source). Conserva los enlaces tal cual y la atribución. No reescribas los títulos de la fuente ni los presentes como tuyos.

La puntuación, la etiqueta y las razones son análisis independiente de barato.si, no texto de la fuente. «Posible error de precio» es una señal automática, no una confirmación de que la tienda se equivocó.

No revendas el contenido de las fuentes ni lo uses para entrenar modelos sin permiso de sus titulares. Algunas fuentes ponen sus propias condiciones: el contenido de DealNews, por ejemplo, no puede usarse en extensiones públicas de navegador.

Las ofertas caducan y pueden tener condiciones: cupones, compra mínima para el envío, membresía. Compruébalo en la fuente antes de comprar.