{
  "openapi": "3.0.1",
  "info": {
    "title": "AliExpress Reviews Scraper — AI complaints, no login · $1.5/1k",
    "description": "AliExpress reviews scraper with review analysis: translation, stars, country, photos; AliExpress review complaints and sentiment. Use for known products; for keyword search use leoworks/aliexpress-search-scraper. productUrls or IDs. No login, ~8 min/1,000 reviews, pay per review.",
    "version": "0.2",
    "x-build-id": "EEwymdLaiGWvoDlyI"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/leoworks~aliexpress-reviews-classifier/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-leoworks-aliexpress-reviews-classifier",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/leoworks~aliexpress-reviews-classifier/runs": {
      "post": {
        "operationId": "runs-sync-leoworks-aliexpress-reviews-classifier",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/leoworks~aliexpress-reviews-classifier/run-sync": {
      "post": {
        "operationId": "run-sync-leoworks-aliexpress-reviews-classifier",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "required": [
          "productUrls"
        ],
        "properties": {
          "productUrls": {
            "title": "Product URLs or IDs",
            "type": "array",
            "description": "AliExpress product pages (any site: www.aliexpress.com, aliexpress.us, ko.aliexpress.com …) or product IDs, e.g. https://www.aliexpress.com/item/1005008549911526.html or 1005008549911526.",
            "items": {
              "type": "string"
            }
          },
          "reviewsPerProduct": {
            "title": "Reviews per product",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Maximum reviews to collect for each product (charged per review: $1.5 per 1,000, or $2.0 per 1,000 with AI classification). The form starts at 20 for a quick, low-cost first run; raise it up to 5,000 (default when omitted via API: 100).",
            "default": 100
          },
          "reviewFilter": {
            "title": "Which reviews",
            "enum": [
              "all",
              "with_photos",
              "additional",
              "local"
            ],
            "type": "string",
            "description": "Reviews come in AliExpress' default order. Star and date sorting are not offered by the source. \"Only reviews from buyers in the shipping country\" uses the Shipping country under Advanced.",
            "default": "all"
          },
          "classifyReviews": {
            "title": "Classify reviews with AI",
            "type": "boolean",
            "description": "Add complaint types (delivery, quality/defect, size/fit, price/value, customer service, packaging, no effect, skin/body reaction, other), sentiment and purchase motive to each review. Reviews in other languages are classified from AliExpress' English translation. Adds $0.5 per 1,000 classified reviews on top of the $1.5 per 1,000 collection price — turn off for collection only.",
            "default": true
          },
          "customLabels": {
            "title": "Custom labels",
            "type": "array",
            "description": "Up to 10 yes/no criteria in plain language, e.g. \"arrived broken or damaged\", \"mentions the battery\", \"looks different from the photos\". Each classified review gets a probability and `matched` per label. Included in the classification price.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "minStars": {
            "title": "Minimum stars",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "Keep only reviews with at least this many stars. Leave empty for all."
          },
          "maxStars": {
            "title": "Maximum stars",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "Keep only reviews with at most this many stars — e.g. 3 to read only the critical ones before sourcing a product."
          },
          "reviewsNewerThan": {
            "title": "Only reviews newer than",
            "type": "string",
            "description": "A date (`2026-09-01`) or a period (`30 days`, `6 months`)."
          },
          "keywords": {
            "title": "Review must mention one of",
            "type": "array",
            "description": "Keep only reviews whose text, English translation or follow-up contains one of these words (not case-sensitive), e.g. \"broken\", \"battery\", \"size\".",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "buyerCountries": {
            "title": "Buyer countries",
            "type": "array",
            "description": "Keep only reviews from buyers in these countries (two-letter codes, e.g. US, FR, BR).",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "includeStarOnly": {
            "title": "Include star-only reviews",
            "type": "boolean",
            "description": "AliExpress has many reviews with a star rating but no text or photos. They are skipped (not charged) by default; turn this on to collect them too (charged as review).",
            "default": false
          },
          "photoJudging": {
            "title": "Judge review photos (beta)",
            "enum": [
              "off",
              "complaints",
              "all"
            ],
            "type": "string",
            "description": "Adds `photoEvidence` (supports_complaint_product, supports_complaint_packaging, damage_seen_text_silent, no_evidence, not_product_photo) and puts photo-backed product defects, then photo-backed packaging damage, at the top of ACTION_QUEUE.csv. \"Only reviews with a complaint or 3 stars or fewer\" judges far fewer photos and is the recommended setting.",
            "default": "off"
          },
          "maxPhotosPerReview": {
            "title": "Photos judged per review",
            "minimum": 1,
            "maximum": 3,
            "type": "integer",
            "description": "The first photos of each review. With \"All reviews that have photos\", at most 2 photos per review are judged.",
            "default": 2
          },
          "photoMaxSide": {
            "title": "Photo size",
            "minimum": 512,
            "maximum": 1024,
            "type": "integer",
            "description": "Longest side in pixels requested from the photo server (512, 768 or 1024; other values are rounded). Smaller is faster; photos under 280 pixels on the short side are skipped.",
            "default": 768
          },
          "complaintThreshold": {
            "title": "Complaint threshold",
            "minimum": 0.05,
            "maximum": 0.95,
            "type": "number",
            "description": "Minimum probability (0–1) for a complaint type to be reported.",
            "default": 0.5
          },
          "country": {
            "title": "Shipping country",
            "type": "string",
            "description": "Two-letter country code used for the request (affects which reviews AliExpress shows first and the translation language base). Default US.",
            "default": "US"
          },
          "monitorKey": {
            "title": "Monitor key (compare with the last run)",
            "maxLength": 64,
            "type": "string",
            "description": "Any name for this watch list, e.g. `my-suppliers`. Run again with the same key and each product row gets `previousRunAt`, `ratingDelta`, `newReviews` and `newCriticalIssues` (new reviews that need action) — the change since the last run with that key; the first run only saves the baseline. Leave empty to switch comparison off. Only summary figures are stored (average rating, review count, newest review date), never review text, names or IDs, in a key-value store named `monitor-aliexpress-reviews` in your account. No extra charge."
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "Products processed in parallel.",
            "default": 5
          },
          "residentialFallback": {
            "title": "Residential proxy fallback",
            "type": "boolean",
            "description": "Retry failing requests through residential proxy in the shipping country.",
            "default": true
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Default Apify datacenter proxy works.",
            "default": {
              "useApifyProxy": true
            }
          },
          "healthCheck": {
            "title": "Health check mode (internal)",
            "type": "boolean",
            "description": "Internal: fail the run when results look degraded (used by the developer's scheduled checks).",
            "default": false
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}