Referencia de la API

Introducción

AliExpress Reviews API devuelve reseñas de productos de AliExpress en JSON. Es un único endpoint REST sobre HTTPS; todas las respuestas, errores incluidos, son JSON.

URL base
https://api.aliexpress-reviews.com
Autenticación
Cabecera x-api-key
Formato
JSON, UTF-8

Inicio rápido: crea una clave gratuita y pruébala en el probador de API del panel o ejecuta:

curl "https://api.aliexpress-reviews.com/v1/reviews/1005006123456789?filter=5&pageSize=20" \
  -H "x-api-key: $REVIEWS_API_KEY"

Autenticación

Crea una API key en el panel y envíala en la cabecera x-api-key de cada petición. Las claves empiezan por rv_.

La clave solo se muestra una vez, al crearla: guardamos un hash, no la clave. Si la pierdes, rótala desde el panel; la clave anterior deja de funcionar en un plazo de 5 minutos.

Mantén la clave en el servidor. Cualquiera que la tenga puede gastar tu cuota.

GET /v1/reviews/{productId}

Devuelve una página de reseñas de un producto, junto con un resumen de sus valoraciones.

Parámetros de ruta

NombreTipoDescripción
productId obligatoriostringId numérico del producto de AliExpress: el número en aliexpress.com/item/<id>.html.

Parámetros de consulta

NombreTipoPor defectoPlanDescripción
pageinteger1FreeNúmero de página, 1–1000.
pageSizeinteger20FreeReseñas por página: hasta 20 en Free, hasta 100 en Pro y Max.
filterstringallFreeUno de los filtros de abajo. Algunos valores requieren un plan superior.
countrystringUSProPaís del comprador, ISO 3166-1 alpha-2. Determina qué reseñas devuelve filter=local y el recuento de local.
langstringen_USProIdioma al que se traducen las reseñas. originalContent conserva el texto del comprador.

Los parámetros desconocidos devuelven 400. Un parámetro que tu plan no incluye devuelve 403, incluso si su valor es el predeterminado.

Ejemplo de petición

curl "https://api.aliexpress-reviews.com/v1/reviews/1005006123456789?filter=5&pageSize=20" \
  -H "x-api-key: $REVIEWS_API_KEY"

Filtros

Los filtros son los mismos que AliExpress muestra en la página del producto, y es AliExpress quien los aplica. Envía un solo filter por petición; no se pueden combinar.

ValorPlanDevuelve
filter=allFreeTodas las reseñas (predeterminado).
filter=5FreeSolo reseñas de 5 estrellas.
filter=4FreeSolo reseñas de 4 estrellas.
filter=3FreeSolo reseñas de 3 estrellas.
filter=2FreeSolo reseñas de 2 estrellas.
filter=1FreeSolo reseñas de 1 estrella.
filter=additionalProReseñas con comentarios adicionales (de seguimiento).
filter=localProReseñas de compradores del país indicado en el parámetro country.
filter=imageMaxReseñas con fotos.

El campo summary.filterCounts de la respuesta te indica cuántas reseñas devolvería cada filtro, para que puedas ocultar los filtros vacíos en tu interfaz sin peticiones adicionales.

Idiomas

Con lang (Pro), content y additionalFeedback llegan traducidos por AliExpress. originalContent conserva siempre las palabras originales del comprador.

ValorIdioma
en_USInglés
es_ESEspañol
fr_FRFrancés
de_DEAlemán
it_ITItaliano
pt_BRPortugués (Brasil)
nl_NLNeerlandés
pl_PLPolaco

Respuesta

{
  "productId": "1005006123456789",
  "filter": "all",
  "page": 1,
  "pageSize": 20,
  "total": 452,
  "totalPages": 23,
  "summary": {
    "averageRating": 4.4,
    "totalReviews": 452,
    "ratingDistribution": { "5": 323, "4": 54, "3": 33, "2": 12, "1": 30 },
    "filterCounts": { "all": 452, "image": 32, "additional": 6, "local": 63 }
  },
  "data": [
    {
      "id": "60012345678901234",
      "author": "J***n",
      "country": "ES",
      "rating": 5,
      "content": "Very good quality, arrived in 10 days",
      "originalContent": "Muy buena calidad, llegó en 10 días",
      "additionalFeedback": null,
      "date": "2026-08-09",
      "sku": "Color:Black",
      "helpfulVotes": 3,
      "images": ["https://..."],
      "thumbnails": ["https://..."]
    }
  ]
}

Campos de la página

CampoTipoDescripción
productIdstringEl producto solicitado.
filterstringFiltro aplicado.
page, pageSizeintegerPágina devuelta y el tamaño solicitado.
totalintegerReseñas que coinciden con el filtro.
totalPagesintegerPáginas disponibles con este pageSize.
summary.averageRatingnumber | nullMedia de estrellas del producto, null si no hay reseñas.
summary.totalReviewsintegerTodas las reseñas del producto, independientemente del filtro.
summary.ratingDistributionobjectReseñas por estrella, claves "1"–"5".
summary.filterCountsobjectReseñas por filtro: all, image, additional, local (depende de country).
dataReview[]Las reseñas de esta página.

Campos de la reseña

CampoTipoDescripción
idstringId de la reseña en AliExpress.
authorstringNombre del comprador, enmascarado por AliExpress (p. ej. J***n).
countrystringPaís del comprador, ISO 3166-1 alpha-2.
ratingintegerEstrellas, 1–5.
contentstringTexto de la reseña traducido a lang.
originalContentstringTexto de la reseña tal como lo escribió el comprador.
additionalFeedbackstring | nullComentario de seguimiento, si lo hay.
datestringFecha de la reseña, YYYY-MM-DD.
skustring | nullVariante que compró el comprador (p. ej. Color:Black).
helpfulVotesintegerVeces que otros compradores la marcaron como útil.
imagesstring[]URL de las fotos a tamaño completo. Solo plan Max.
thumbnailsstring[]URL de las miniaturas. Solo plan Max.

images y thumbnails se omiten en Free y Pro.

Paginación

Solicita page=1, 2, … hasta que page alcance totalPages. Cada página es una petición contra tu cuota, así que usa el pageSize más grande que permita tu plan.

async function allReviews(productId, filter = 'all') {
  const reviews = [];
  for (let page = 1; ; page++) {
    const url = `https://api.aliexpress-reviews.com/v1/reviews/${productId}?filter=${filter}&page=${page}`;
    const res = await fetch(url, { headers: { 'x-api-key': process.env.REVIEWS_API_KEY } });
    const body = await res.json();
    reviews.push(...body.data);
    if (page >= body.totalPages) return reviews;
  }
}

Límites de uso

PlanPeticiones por díapageSize máx.
Free10020
Pro1000100
Max10.000100

Las cuotas se restablecen a las 00:00 UTC. Toda respuesta que cuenta para la cuota (200, 404, 429, 502) incluye:

CabeceraDescripción
x-ratelimit-limitTu cuota diaria.
x-ratelimit-remainingPeticiones que quedan hoy.
x-ratelimit-resetHora Unix del próximo restablecimiento.

Las peticiones rechazadas con 400/401/403 no cuentan. Si superas la cuota recibes 429 hasta el restablecimiento. También hay un límite global de 50 peticiones por segundo compartido por todos los usuarios.

Caché

Cada página (producto + parámetros) se guarda en caché hasta 24 horas, así que las reseñas nuevas pueden tardar hasta un día en aparecer. Las respuestas en caché también cuentan para tu cuota.

Errores

Los errores usan códigos de estado HTTP estándar y un cuerpo JSON:

{ "error": { "message": "filter=image requires the MAX plan" } }
EstadoSignificadoCuenta para la cuota
400Parámetro no válido o desconocido, o id de producto con formato incorrecto.No
401Falta la cabecera x-api-key.No
403API key no válida, o un parámetro o filtro que tu plan no incluye.No
404AliExpress no tiene ningún producto con ese id.Sí
429Cuota diaria superada, o se alcanzó el límite global de uso.—
502AliExpress no respondió. Inténtalo de nuevo más tarde.Sí

OpenAPI

La especificación completa está en /openapi.json (OpenAPI 3.0). Impórtala en Postman, Insomnia o un generador de clientes.