API de IKEA: precios de ikea.com/es y stock de cada tienda en JSON
Esta API lee la tienda online de IKEA España (ikea.com/es) sin iniciar sesión y devuelve en JSON lo que ve cualquier comprador: el nombre tal como aparece en la web («KALLAX Estantería, blanco, 77x147 cm»), el precio en euros, el precio anterior cuando hay rebaja y las unidades que tiene cada tienda, de A Coruña a Sevilla. No está pensada para proveedores de IKEA ni para pedidos de IKEA para empresas, y tampoco es la API de DIRIGERA, el hub de domótica de la marca: con ella no se hacen pedidos ni reservas; solo se lee lo que la tienda muestra al público. Cada petición tiene que llevar `"country": "es"`. Sin ese parámetro responde la tienda estadounidense, con nombres en inglés y precios en dólares.
Endpoints
| endpoint | Qué devuelve | Obligatorios |
|---|---|---|
| search | Búsqueda por texto en castellano, o en catalán con `"language": "ca"`, por nombre de serie (BILLY) o por número de artículo. Cada fila trae número de artículo, nombre, precio en euros, tipo de precio (normal, rebaja con fecha de fin, liquidación), precio anterior y fechas de validez, precio IKEA Family si lo hay, nota media y número de valoraciones, colores, ruta de categorías y si se vende online. Ordena por precio, valoración, novedad, nombre o medidas, y acepta los filtros de la propia IKEA (color, franja de precio, tamaño, material, serie). Hasta 48 filas por página. | query |
| category | Todos los productos de una categoría, por ejemplo `11465` (Estanterías), página a página y con las mismas filas, filtros y órdenes que la búsqueda. | category_id |
| categories | El árbol de categorías de IKEA, un nivel por llamada: nombre, número de productos y las claves de las subcategorías, que se pasan tal cual a `category`. | todos opcionales |
| product/detail | La ficha entera por número de artículo o URL: precio actual, precio anterior y precio IKEA Family en campos separados, descripción, diseñador, medidas, cada bulto con sus dimensiones y su peso, materiales y cuidados, PDF de instrucciones de montaje, años de garantía, días de devolución, serie, variantes de color y medida, imágenes y notas parciales (calidad, montaje, relación calidad-precio). | product_id |
| product/availability | Stock de hasta 10 artículos en una llamada, tienda por tienda: unidades, estado, próxima reposición con fechas y cantidad, pasillo y estantería en la zona de autoservicio, recogida en tienda y si hay envío a domicilio. | todos opcionales |
| product/reviews | Opiniones paginadas: título, texto, estrellas, notas parciales, si la compra está verificada y la respuesta de IKEA. Se filtran por estrellas, por compra verificada y por origen: las escritas en España o las de otros países. | product_id |
| stores | Los establecimientos de IKEA en España con el id que usa el stock, nombre, coordenadas, tipo (`STORE`, `SMALL`, `SHOP`, `PAOP`) y fecha de apertura. | todos opcionales |
| suggest | El autocompletado del buscador de la web: búsquedas propuestas, categorías y productos. | query |
Cada llamada se cobra en créditos. Las llamadas fallidas y bloqueadas son gratuitas.
Ejemplo que funciona
El 27 de octubre de 2026, la estantería KALLAX blanca de 77x147 cm (802.758.87) costaba 54,99 € en lugar de 59,99 €, un precio que IKEA fija del 1 de septiembre al 31 de diciembre. La consulta de stock devolvió 26 tiendas: Málaga tenía 683 unidades, Sevilla 560 y A Coruña 504, y La Vaguada, en Madrid, 7. Cuando el artículo está en la zona de autoservicio llegan el pasillo y la estantería (`AISLE_AND_BIN`); en La Vaguada solo figuraba en la zona de tienda (`DEPARTMENT`, `MARKET_HALL`), sin pasillo. La última fila es un punto con id 1346 que no aparece en `stores`: 0 unidades y una reposición prevista entre el 31 de octubre y el 7 de noviembre.
curl -X POST https://api.reefapi.com/ikea/v1/product/availability \
-H "x-api-key: TU_CLAVE" \
-H "content-type: application/json" \
-d '{"product_ids": ["80275887"], "country": "es"}'{
"ok": true,
"data": {
"items": [
{
"item_no": "80275887",
"online": {
"home_delivery_available": true,
"click_collect_available": true,
"home_delivery_status": "high_in_stock"
},
"stores": [
{
"store_id": "502",
"store_name": "IKEA A Coruña",
"listed_store": true,
"quantity": 504,
"status": "high_in_stock",
"restocks": null,
"sales_locations": [
{ "type": "AISLE_AND_BIN", "division": "SELF_SERVE", "aisle": "11", "bin": "00" },
...
],
"updated_at": "2026-10-27T09:28:59.000Z"
},
...
{
"store_id": "718",
"store_name": "IKEA Madrid - La Vaguada",
"quantity": 7,
"status": "high_in_stock",
"sales_locations": [ { "type": "DEPARTMENT", "division": "MARKET_HALL", "aisle": null, "bin": null } ]
},
{
"store_id": "304",
"store_name": "IKEA Malaga",
"quantity": 683,
"status": "high_in_stock",
"sales_locations": [ { "type": "AISLE_AND_BIN", "division": "SELF_SERVE", "aisle": "10", "bin": "00" } ]
},
...
{
"store_id": "1346",
"store_name": null,
"listed_store": false,
"quantity": 0,
"status": "out_of_stock",
"restocks": [ { "earliest_date": "2026-10-31", "latest_date": "2026-11-07", "quantity": 1, "reliability": "HIGH" } ]
}
],
"units_in_range": 26,
"units_not_in_range": 30,
"store_count": 26,
"in_stock_store_count": 25
}
],
"not_sold_here": [],
"country": "es"
},
"meta": { "record_count": 1, "country": "es", "language": "es", "cache_hit": false, "mode": "live" }
}Scraper de IKEA en GitHub: lo que se rompe sin avisar
El listado de productos de IKEA sale de un servicio de búsqueda propio que acepta filtros, pero solo con la forma exacta que usa su web. Al construir el motor probamos diez formas razonables de enviar un filtro: las diez devolvieron las mismas 278 filas sin filtrar y ninguna dio error. La forma correcta la sacamos del código JavaScript de la propia tienda. Un nombre de filtro que IKEA no conoce también se ignora en silencio; por eso la respuesta lleva `filters_not_applied`, para que veas qué filtro no se aplicó.
La ficha de producto cambió de formato a principios de octubre de 2026: IKEA empezó a entregar los datos de la página dentro de otra estructura. Nuestro `product/detail` dejó de encontrarlos y respondió NOT_FOUND para todos los productos de ikea.com; la última ficha correcta en producción fue del 5 de octubre. Lo corregimos el 18 de octubre y comprobamos 13 fichas en vivo de seis países, con el precio cotejado contra el que publica la propia página. No lo contamos como mérito: es justo la avería que sufre cualquier scraper casero, y durante trece días la sufrimos nosotros.
Las cifras de opiniones engañan por otro motivo. El número total de valoraciones de una ficha suma todos los países, mientras que la lista de opiniones es la del país consultado: en Alemania, un sofá VIMLE marcaba 156 valoraciones y la lista alemana tenía 17. Las 8.211 valoraciones de la KALLAX en ikea.com/es no son 8.211 opiniones escritas en España.
Para saber cuánto cuesta hoy una BILLY basta con abrir la web. El problema aparece cuando cada semana guardas precio y stock de doscientas referencias en las tiendas españolas: un cambio de formato de IKEA no da ningún error, y lo descubres cuando el informe del lunes sale vacío.
Más documentación en español
- Mercadona API — documentación
- MercadoLibre API — documentación
- Idealista API — documentación
- Wallapop API — documentación
- Falabella API — documentación
- Fotocasa API — documentación
- Coches.net API — documentación
- AutoScout24 API — documentación
- Milanuncios API — documentación
- API de Amazon.es — documentación
- Vinted API — anuncios de vinted.es
- idealo.es API — documentación
- AliExpress API — precios para España
- Cardmarket API — cartas y precios en español
- API de El Corte Inglés — documentación
Límites y notas honestas
- Esta API no procede de IKEA: la marca no la ofrece ni la avala, y ReefAPI no tiene acuerdo ni colaboración con ella.
- Si falta `country`, el valor que se aplica es "us": la respuesta sale de la tienda de Estados Unidos, en dólares y en inglés, así que `"country": "es"` va en todas las llamadas.
- Idiomas: castellano por defecto; según la documentación del endpoint, España admite también `ca`, `eu`, `gl` y `en`. Comprobamos el catalán: «prestatgeria» devolvió «KALLAX Prestatgeria, blanc» con URL de ikea.com/es/ca y el mismo precio.
- `stores` lista 31 establecimientos, pero el stock no los cubre todos. En la consulta de la KALLAX no salieron las tiendas de ciudad Diagonal, Glòries y Goya ni los puntos de Granollers, Sant Pere de Ribes y Tarragona; sí salió el id 1346, que no está en `stores`. 30 unidades más venían marcadas como fuera de surtido y se descartan (`units_not_in_range`).
- Solo se lee ikea.com/es. En `stores` no figura ninguna tienda de Canarias ni de Baleares, así que su stock no llega por esta API.
- El precio IKEA Family solo llega cuando la ficha lo publica: en nuestra búsqueda de estanterías, ninguna de las 24 filas lo tenía y `member_price` vino en null en todas.
- Precio por llamada: 2 créditos la ficha (`product/detail`) y 1 crédito los otros siete endpoints.
- No hay caché intermedia: el stock es el que IKEA publica en el momento de la llamada, y `updated_at` indica cuándo lo actualizó cada tienda.