Riferimento API
Introduzione
AliExpress Reviews API restituisce le recensioni dei prodotti AliExpress in JSON. È un unico endpoint REST su HTTPS; ogni risposta, errori compresi, è in JSON.
- URL di base
https://api.aliexpress-reviews.com- Autenticazione
- Header
x-api-key - Formato
- JSON, UTF-8
Per iniziare: crea una chiave gratuita, poi provala nell’API tester della dashboard o esegui:
curl "https://api.aliexpress-reviews.com/v1/reviews/1005006123456789?filter=5&pageSize=20" \
-H "x-api-key: $REVIEWS_API_KEY"Autenticazione
Crea una API key nella dashboard e inviala nell’header x-api-key di ogni richiesta. Le chiavi iniziano con rv_.
La chiave viene mostrata una sola volta, al momento della creazione: noi conserviamo un hash, non la chiave. Se la perdi, rigenerala dalla dashboard; la vecchia chiave smette di funzionare entro 5 minuti.
Tieni la chiave lato server. Chiunque la possieda può consumare la tua quota.
GET /v1/reviews/{productId}
Restituisce una pagina di recensioni di un prodotto, insieme a un riepilogo delle sue valutazioni.
Parametri del percorso
| Nome | Tipo | Descrizione |
|---|---|---|
productId obbligatorio | string | Id numerico del prodotto AliExpress: il numero in aliexpress.com/item/<id>.html. |
Parametri della query
| Nome | Tipo | Predefinito | Piano | Descrizione |
|---|---|---|---|---|
page | integer | 1 | Free | Numero di pagina, 1–1000. |
pageSize | integer | 20 | Free | Recensioni per pagina: fino a 20 su Free, fino a 100 su Pro e Max. |
filter | string | all | Free | Uno dei filtri qui sotto. Alcuni valori richiedono un piano superiore. |
country | string | US | Pro | Paese dell’acquirente, ISO 3166-1 alpha-2. Determina quali recensioni restituisce filter=local e il conteggio local. |
lang | string | en_US | Pro | Lingua in cui vengono tradotte le recensioni. originalContent conserva il testo dell’acquirente. |
I parametri sconosciuti restituiscono 400. Un parametro non incluso nel tuo piano restituisce 403, anche se il suo valore è quello predefinito.
Esempio di richiesta
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()Filtri
I filtri sono gli stessi che AliExpress mostra nella pagina del prodotto, ed è AliExpress ad applicarli. Invia un solo filter per richiesta; non possono essere combinati.
| Valore | Piano | Restituisce |
|---|---|---|
filter=all | Free | Tutte le recensioni (predefinito). |
filter=5 | Free | Solo recensioni da 5 stelle. |
filter=4 | Free | Solo recensioni da 4 stelle. |
filter=3 | Free | Solo recensioni da 3 stelle. |
filter=2 | Free | Solo recensioni da 2 stelle. |
filter=1 | Free | Solo recensioni da 1 stella. |
filter=additional | Pro | Recensioni con feedback aggiuntivo (di follow-up). |
filter=local | Pro | Recensioni di acquirenti del paese indicato nel parametro country. |
filter=image | Max | Recensioni con foto. |
summary.filterCounts nella risposta indica quante recensioni restituirebbe ciascun filtro, così puoi nascondere i filtri vuoti nella tua interfaccia senza richieste aggiuntive.
Lingue
Con lang (Pro), content e additionalFeedback arrivano tradotti da AliExpress. originalContent conserva sempre le parole originali dell’acquirente.
| Valore | Lingua |
|---|---|
en_US | Inglese |
es_ES | Spagnolo |
fr_FR | Francese |
de_DE | Tedesco |
it_IT | Italiano |
pt_BR | Portoghese (Brasile) |
nl_NL | Olandese |
pl_PL | Polacco |
Risposta
{
"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://..."]
}
]
}Campi della pagina
| Campo | Tipo | Descrizione |
|---|---|---|
productId | string | Il prodotto richiesto. |
filter | string | Filtro applicato. |
page, pageSize | integer | Pagina restituita e dimensione richiesta. |
total | integer | Recensioni che corrispondono al filtro. |
totalPages | integer | Pagine disponibili con questo pageSize. |
summary.averageRating | number | null | Media delle stelle del prodotto, null senza recensioni. |
summary.totalReviews | integer | Tutte le recensioni del prodotto, indipendentemente dal filtro. |
summary.ratingDistribution | object | Recensioni per numero di stelle, chiavi da "1" a "5". |
summary.filterCounts | object | Recensioni per filtro: all, image, additional, local (dipende da country). |
data | Review[] | Le recensioni di questa pagina. |
Campi della recensione
| Campo | Tipo | Descrizione |
|---|---|---|
id | string | Id della recensione su AliExpress. |
author | string | Nome dell’acquirente, mascherato da AliExpress (es. J***n). |
country | string | Paese dell’acquirente, ISO 3166-1 alpha-2. |
rating | integer | Stelle, 1–5. |
content | string | Testo della recensione tradotto in lang. |
originalContent | string | Testo della recensione come l’ha scritto l’acquirente. |
additionalFeedback | string | null | Feedback di follow-up, se presente. |
date | string | Data della recensione, YYYY-MM-DD. |
sku | string | null | Variante acquistata dall’acquirente (es. Color:Black). |
helpfulVotes | integer | Quante volte altri acquirenti l’hanno trovata utile. |
images | string[] | URL delle foto a dimensione intera. Solo piano Max. |
thumbnails | string[] | URL delle miniature. Solo piano Max. |
images e thumbnails sono omessi nei piani Free e Pro.
Paginazione
Richiedi page=1, 2, … finché page non raggiunge totalPages. Ogni pagina è una richiesta conteggiata nella tua quota, quindi usa il pageSize più grande consentito dal tuo piano.
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;
}
}Rate limit
| Piano | Richieste al giorno | pageSize massimo |
|---|---|---|
| Free | 100 | 20 |
| Pro | 1000 | 100 |
| Max | 10.000 | 100 |
Le quote si azzerano alle 00:00 UTC. Ogni risposta che conta nella quota (200, 404, 429, 502) include:
| Header | Descrizione |
|---|---|
x-ratelimit-limit | La tua quota giornaliera. |
x-ratelimit-remaining | Richieste rimaste oggi. |
x-ratelimit-reset | Unix time del prossimo azzeramento. |
Le richieste rifiutate con 400/401/403 non vengono conteggiate. Oltre la quota ricevi 429 fino all’azzeramento. Esiste inoltre un limite globale di 50 richieste al secondo condiviso da tutti gli utenti.
Cache
Ogni pagina (prodotto + parametri) viene messa in cache per un massimo di 24 ore, quindi le nuove recensioni possono impiegare fino a un giorno per comparire. Le risposte dalla cache contano comunque nella tua quota.
Errori
Gli errori usano i codici di stato HTTP standard e un corpo JSON:
{ "error": { "message": "filter=image requires the MAX plan" } }| Stato | Significato | Conta nella quota |
|---|---|---|
400 | Parametro non valido o sconosciuto, oppure id del prodotto malformato. | No |
401 | Header x-api-key mancante. | No |
403 | API key non valida, oppure parametro o filtro non incluso nel tuo piano. | No |
404 | AliExpress non ha nessun prodotto con quell’id. | Sì |
429 | Quota giornaliera superata, oppure raggiunto il rate limit globale. | — |
502 | AliExpress non ha risposto. Riprova più tardi. | Sì |
OpenAPI
La specifica completa è su /openapi.json (OpenAPI 3.0). Importala in Postman, Insomnia o in un generatore di client.