Référence de l’API
Introduction
AliExpress Reviews API renvoie les avis produits AliExpress en JSON. C’est un unique endpoint REST en HTTPS ; toutes les réponses, erreurs comprises, sont en JSON.
- URL de base
https://api.aliexpress-reviews.com- Authentification
- En-tête
x-api-key - Format
- JSON, UTF-8
Démarrage rapide : créez une clé gratuite, puis essayez-la dans le testeur d’API du tableau de bord ou exécutez :
curl "https://api.aliexpress-reviews.com/v1/reviews/1005006123456789?filter=5&pageSize=20" \
-H "x-api-key: $REVIEWS_API_KEY"Authentification
Créez une clé API dans le tableau de bord et envoyez-la dans l’en-tête x-api-key de chaque requête. Les clés commencent par rv_.
La clé n’est affichée qu’une seule fois, à sa création : nous stockons un hash, pas la clé. Si vous la perdez, renouvelez-la depuis le tableau de bord ; l’ancienne clé cesse de fonctionner sous 5 minutes.
Gardez la clé côté serveur. Quiconque la possède peut consommer votre quota.
GET /v1/reviews/{productId}
Renvoie une page d’avis d’un produit, ainsi qu’un résumé de ses notes.
Paramètres de chemin
| Nom | Type | Description |
|---|---|---|
productId obligatoire | string | Identifiant numérique du produit AliExpress : le nombre dans aliexpress.com/item/<id>.html. |
Paramètres de requête
| Nom | Type | Par défaut | Plan | Description |
|---|---|---|---|---|
page | integer | 1 | Free | Numéro de page, 1–1000. |
pageSize | integer | 20 | Free | Avis par page : jusqu’à 20 avec Free, jusqu’à 100 avec Pro et Max. |
filter | string | all | Free | L’un des filtres ci-dessous. Certaines valeurs nécessitent un plan supérieur. |
country | string | US | Pro | Pays de l’acheteur, ISO 3166-1 alpha-2. Détermine les avis renvoyés par filter=local et le compteur local. |
lang | string | en_US | Pro | Langue de traduction des avis. originalContent conserve le texte de l’acheteur. |
Les paramètres inconnus renvoient 400. Un paramètre que votre plan n’inclut pas renvoie 403, même si sa valeur est celle par défaut.
Exemple de requête
curl "https://api.aliexpress-reviews.com/v1/reviews/1005006123456789?filter=5&pageSize=20" \
-H "x-api-key: $REVIEWS_API_KEY"const url = new URL('https://api.aliexpress-reviews.com/v1/reviews/1005006123456789');
url.search = new URLSearchParams({ filter: '5', pageSize: '20' }).toString();
const res = await fetch(url, { headers: { 'x-api-key': process.env.REVIEWS_API_KEY } });
if (!res.ok) throw new Error((await res.json()).error.message);
const { summary, data } = await res.json();import os, requests
res = requests.get(
"https://api.aliexpress-reviews.com/v1/reviews/1005006123456789",
params={"filter": "5", "pageSize": 20},
headers={"x-api-key": os.environ["REVIEWS_API_KEY"]},
)
res.raise_for_status()
body = res.json()Filtres
Les filtres sont les mêmes que ceux qu’AliExpress affiche sur la page produit, et c’est AliExpress qui les applique. Envoyez un seul filter par requête ; ils ne peuvent pas être combinés.
| Valeur | Plan | Renvoie |
|---|---|---|
filter=all | Free | Tous les avis (par défaut). |
filter=5 | Free | Avis 5 étoiles uniquement. |
filter=4 | Free | Avis 4 étoiles uniquement. |
filter=3 | Free | Avis 3 étoiles uniquement. |
filter=2 | Free | Avis 2 étoiles uniquement. |
filter=1 | Free | Avis 1 étoile uniquement. |
filter=additional | Pro | Avis avec commentaire complémentaire (suivi). |
filter=local | Pro | Avis d’acheteurs du pays indiqué dans le paramètre country. |
filter=image | Max | Avis avec photos. |
Le champ summary.filterCounts de la réponse indique combien d’avis chaque filtre renverrait, ce qui vous permet de masquer les filtres vides dans votre interface sans requête supplémentaire.
Langues
Avec lang (Pro), content et additionalFeedback sont traduits par AliExpress. originalContent conserve toujours les mots de l’acheteur.
| Valeur | Langue |
|---|---|
en_US | Anglais |
es_ES | Espagnol |
fr_FR | Français |
de_DE | Allemand |
it_IT | Italien |
pt_BR | Portugais (Brésil) |
nl_NL | Néerlandais |
pl_PL | Polonais |
Réponse
{
"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://..."]
}
]
}Champs de la page
| Champ | Type | Description |
|---|---|---|
productId | string | Le produit demandé. |
filter | string | Filtre appliqué. |
page, pageSize | integer | Page renvoyée et taille demandée. |
total | integer | Avis correspondant au filtre. |
totalPages | integer | Pages disponibles avec ce pageSize. |
summary.averageRating | number | null | Note moyenne du produit, null sans avis. |
summary.totalReviews | integer | Tous les avis du produit, quel que soit le filtre. |
summary.ratingDistribution | object | Avis par nombre d’étoiles, clés "1"–"5". |
summary.filterCounts | object | Avis par filtre : all, image, additional, local (dépend de country). |
data | Review[] | Les avis de cette page. |
Champs d’un avis
| Champ | Type | Description |
|---|---|---|
id | string | Identifiant de l’avis AliExpress. |
author | string | Nom de l’acheteur, masqué par AliExpress (p. ex. J***n). |
country | string | Pays de l’acheteur, ISO 3166-1 alpha-2. |
rating | integer | Étoiles, 1–5. |
content | string | Texte de l’avis traduit dans lang. |
originalContent | string | Texte de l’avis tel que l’acheteur l’a rédigé. |
additionalFeedback | string | null | Commentaire complémentaire, le cas échéant. |
date | string | Date de l’avis, YYYY-MM-DD. |
sku | string | null | Variante achetée par l’acheteur (p. ex. Color:Black). |
helpfulVotes | integer | Nombre de fois où d’autres acheteurs l’ont jugé utile. |
images | string[] | URL des photos en taille réelle. Plan Max uniquement. |
thumbnails | string[] | URL des miniatures. Plan Max uniquement. |
images et thumbnails sont omis avec Free et Pro.
Pagination
Demandez page=1, 2, … jusqu’à ce que page atteigne totalPages. Chaque page compte pour une requête sur votre quota : utilisez donc le pageSize le plus grand autorisé par votre 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;
}
}Limites de débit
| Plan | Requêtes par jour | pageSize max. |
|---|---|---|
| Free | 100 | 20 |
| Pro | 1 000 | 100 |
| Max | 10 000 | 100 |
Les quotas sont réinitialisés à 00:00 UTC. Chaque réponse décomptée du quota (200, 404, 429, 502) contient :
| En-tête | Description |
|---|---|
x-ratelimit-limit | Votre quota quotidien. |
x-ratelimit-remaining | Requêtes restantes aujourd’hui. |
x-ratelimit-reset | Heure Unix de la prochaine réinitialisation. |
Les requêtes rejetées avec 400/401/403 ne sont pas décomptées. Une fois le quota dépassé, vous recevez 429 jusqu’à la réinitialisation. Il existe aussi une limite globale de 50 requêtes par seconde, partagée entre tous les utilisateurs.
Cache
Chaque page (produit + paramètres) est mise en cache pendant 24 heures maximum : les nouveaux avis peuvent donc mettre jusqu’à un jour à apparaître. Les réponses en cache sont tout de même décomptées de votre quota.
Erreurs
Les erreurs utilisent les codes de statut HTTP standard et un corps JSON :
{ "error": { "message": "filter=image requires the MAX plan" } }| Statut | Signification | Décompté du quota |
|---|---|---|
400 | Paramètre invalide ou inconnu, ou identifiant de produit mal formé. | Non |
401 | En-tête x-api-key manquant. | Non |
403 | Clé API invalide, ou paramètre ou filtre non inclus dans votre plan. | Non |
404 | AliExpress n’a aucun produit avec cet identifiant. | Oui |
429 | Quota quotidien dépassé, ou limite de débit globale atteinte. | — |
502 | AliExpress n’a pas répondu. Réessayez plus tard. | Oui |
OpenAPI
La spécification complète est disponible sur /openapi.json (OpenAPI 3.0). Importez-la dans Postman, Insomnia ou un générateur de clients.