API

API de Amazon.es: precios y fichas de producto en JSON

Esta API consulta amazon.es igual que un comprador: lo que aparece en la tienda —título, precio en euros, estrellas, quién vende y quién envía, reseñas— llega en JSON, sin cuenta de Amazon. Si necesitas la SP-API de Seller Central para gestionar pedidos, inventario o tus propios anuncios, esto es otra cosa: aquí solo se leen datos públicos del catálogo. Para la tienda española, cada petición lleva `"marketplace": "es"`.

Endpoints

endpointQué devuelveObligatorios
searchBúsqueda por palabras clave con rango de precio en euros, valoración mínima, solo ofertas y marca; orden por relevancia, precio, valoración, novedad o popularidad. Hasta 336 resultados por consulta, con las páginas pedidas de una vez.query
product/detailLa ficha entera por ASIN: título, marca, precio, características, imágenes, variantes, especificaciones, contenido A+, el vendedor del buy box y si envía Amazon, «comprados el mes pasado», el reparto de estrellas y las ocho primeras reseñas.asin
product/offersTodas las ofertas de un producto: la fijada en el buy box y las demás, cada una con vendedor, estado, desde dónde se envía, plazo de entrega y Prime.asin
product/reviewsReseñas con autor, estrellas, título, fecha, texto, marca de compra verificada y votos de «útil». Con `marketplaces` se juntan, sin duplicados, las de varias tiendas de Amazon en una sola llamada.asin
product/relatedLos carruseles de recomendación de la ficha, separados por tipo de relación (vistos también, comprados también, relacionados, comprados juntos habitualmente), cada producto con ASIN, precio y estrellas.asin
products_batchHasta 15 ASIN en una llamada: título, precio, estrellas, imagen y cupón. Es la tarjeta resumida; especificaciones y reseñas solo están en product/detail. Lo que Amazon no devuelve aparece en `not_found`.asins
gtin-to-asinDel código de barras al ASIN: pasas un EAN, UPC o ISBN y recibes los productos de Amazon que le corresponden. Con `verify` se comprueba además que la ficha imprime ese mismo código.todos opcionales
category/browseRecorre un departamento por su id de nodo, página a página, para cuando necesitas todo el surtido y no solo lo que coincide con una búsqueda.node
bestsellersLos más vendidos de un departamento, hasta el puesto 100.category
new-releasesLas novedades de un departamento, con la misma estructura que los más vendidos.category
dealsLas ofertas del día: ASIN, título, precio e imagen.todos opcionales
autocompleteLas sugerencias que muestra el buscador de Amazon mientras se escribe.query
seller/profileEl perfil público de un vendedor: nombre, porcentaje de valoraciones positivas y número de valoraciones.seller_id
seller/productsEl catálogo de un vendedor, por páginas.seller_id
seller/reviewsLas valoraciones que los compradores dejan a un vendedor: estrellas, texto, autor y fecha.seller_id

Cada llamada se cobra en créditos. Las llamadas fallidas y bloqueadas son gratuitas.

Ejemplo que funciona

Mira las dos Cecotec Cecofry&Grill Duoheat de la respuesta (4 L y 8 L; la de 6,5 L, más abajo, igual): todas traen 4,1 estrellas y 1420 valoraciones. No es casualidad. Amazon reparte la misma nota entre las variantes de una familia, y product/detail lo confirma: cinco tamaños bajo el mismo ASIN padre. Si vas a ordenar freidoras por valoración, agrupa antes por familia o acabarás comparando una cifra consigo misma.

Petición
curl -X POST https://api.reefapi.com/amazon/v1/search \
  -H "x-api-key: TU_CLAVE" \
  -H "content-type: application/json" \
  -d '{"query": "freidora de aire", "marketplace": "es", "max_results": 20}'
Respuesta (recortada)
{
  "ok": true,
  "data": {
    "results": [
      {
        "asin": "B0DGLC3Y3L",
        "title": "Cecotec Freidora de Aire 4 L Cecofry&Grill Duoheat 4000 1900W",
        "brand": null,
        "price": 44.9,
        "currency": "€",
        "currency_code": "EUR",
        "rating": 4.1,
        "rating_count": 1420,
        "sponsored": false,
        "campaign": null,
        "in_stock": true
      },
      {
        "asin": "B0FBM7X8BY",
        "title": "Cecotec Freidora de Aire 8 L Cecofry&Grill Duoheat 8000 2200W",
        "price": 69.9,
        "currency_code": "EUR",
        "rating": 4.1,
        "rating_count": 1420
      },
      {
        "asin": "B0CWP7M17B",
        "title": "Philips 2000 Airfryer - Freidora de Aire 6,2L, 13 opciones, Táctil, Negro",
        "price": 69.9,
        "currency_code": "EUR",
        "rating": 4.7,
        "rating_count": 5486
      },
      ...
    ],
    "page": 1
  },
  "meta": { "record_count": 20, "marketplace": "es", "currency_code": "EUR", "pagination": { "page": 1, "has_more": true, "page_ceiling": 7 }, "cache_hit": false, "mode": "live" }
}

Scraper de Amazon en Python: lo que no sale en los tutoriales

El primer «Vendido por» que encuentra un scraper en la página no siempre es el del buy box. En una revisión de octubre de 2026 sobre 30 fichas con buy box de amazon.com, amazon.de y amazon.co.uk, nuestro propio parser anterior tomaba en 4 de ellas al vendedor de la oferta de segunda mano y en 11 decía que el envío no era de Amazon cuando sí lo era. Contando todos los casos, el dato de quién envía salía mal en 13 de las 30 fichas, sin ningún aviso. Desde entonces el motor lee el bloque de la oferta fijada, no el primer nombre que aparece, y en esas mismas 30 fichas los dos campos salen bien.

Otra trampa: pides un ASIN y Amazon te sirve otra variante de la misma familia. La página es correcta, pero de otro producto. Ahora la respuesta lo avisa con `asin_mismatch` y `served_asin` en lugar de dejarlo pasar.

Y los departamentos no se llaman igual en cada tienda. En amazon.es, la lista `kitchen` de los más vendidos es la de Hogar y cocina completa: en los cinco primeros puestos salieron un robot aspirador, unas sábanas, un protector de colchón y dos calefactores, ningún utensilio de cocina.

Ninguno de los tres casos da error: la página carga, el precio aparece y el JSON es válido. Por eso un histórico de precios de amazon.es se estropea sin que nadie lo note, y se descubre cuando una freidora «vendida por Amazon» resulta ser de un tercero o cuando el top de cocina está lleno de sábanas.

Límites y notas honestas

  • Amazon no ofrece ni respalda este servicio: no es la Product Advertising API ni ninguna otra API oficial, y no existe acuerdo con Amazon.
  • Sin `marketplace` la consulta va a amazon.com y los precios llegan en dólares.
  • En amazon.es, `bought_past_month` está mal convertido: el texto «1 mil+ comprados el mes pasado» llegó como 1000000 (medido el 24 de octubre de 2026), porque «mil» se lee como millón. Mientras no se corrija, usa `bought_past_month_raw`.
  • La búsqueda deja `brand` vacío (20 de 20 filas en nuestra consulta); la marca viene en product/detail.
  • Amazon no muestra más de 7 páginas por búsqueda, unos 336 resultados como máximo. Para recorrer un departamento entero está category/browse.
  • Los filtros `min_rating` y `deals` están comprobados en amazon.com; en amazon.es no los hemos medido.
  • `prime` y `brand` son aproximados, porque Amazon no ofrece un filtro fiable para ellos. Para filtrar por una marca de forma estricta está `brand_exact`.
  • Nada se guarda entre llamadas: cada respuesta es lo que amazon.es mostraba en el momento de la consulta.