{
  "data": {
    "id": "BqmW8MdoJaOgZceAU",
    "actId": "fViwyNdEyDapUpGXy",
    "userId": "NL4ThgItAwaoBlffQ",
    "startedAt": "2026-10-22T11:54:25.369Z",
    "finishedAt": "2026-10-22T11:54:28.342Z",
    "status": "SUCCEEDED",
    "meta": {
      "origin": "CLI"
    },
    "stats": {
      "durationMillis": 2877,
      "runTimeSecs": 2.877,
      "computeUnits": 0.0031966666666666667,
      "imageSizeBytes": 354856960
    },
    "options": {
      "useCache": true,
      "betaPackages": false,
      "memoryMbytes": 4096,
      "diskMbytes": 8192
    },
    "createdByOrganizationMemberUserId": "zifX0mkAFMHe8CatY",
    "exitCode": 0,
    "inputSchema": "{\n  \"title\": \"AliExpress Scraper Input\",\n  \"description\": \"Search AliExpress by keyword, look up products and stores, or collect customer reviews across major shopper regions.\",\n  \"type\": \"object\",\n  \"schemaVersion\": 1,\n  \"properties\": {\n    \"mode\": {\n      \"title\": \"Mode\",\n      \"type\": \"string\",\n      \"editor\": \"select\",\n      \"description\": \"What to collect. search: keyword results. byProduct: product lookup by ID or URL. byStore: store lookup. byReviews: customer reviews. byUrl: auto-detect from pasted AliExpress links.\",\n      \"enum\": [\n        \"search\",\n        \"byProduct\",\n        \"byStore\",\n        \"byReviews\",\n        \"byUrl\"\n      ],\n      \"enumTitles\": [\n        \"Search by keyword\",\n        \"Look up products\",\n        \"Look up stores\",\n        \"Collect reviews\",\n        \"Auto-detect from URLs\"\n      ],\n      \"default\": \"search\",\n      \"prefill\": \"search\",\n      \"sectionCaption\": \"Mode & Inputs\"\n    },\n    \"searchQueries\": {\n      \"title\": \"Search queries (mode=search)\",\n      \"type\": \"array\",\n      \"editor\": \"stringList\",\n      \"description\": \"One or more keywords, e.g. \\\"phone case\\\" or \\\"wireless earbuds\\\". Each query is scraped up to maxPages pages.\",\n      \"prefill\": [\n        \"phone case\"\n      ]\n    },\n    \"productIds\": {\n      \"title\": \"Product IDs or URLs (mode=byProduct or byReviews)\",\n      \"type\": \"array\",\n      \"editor\": \"stringList\",\n      \"description\": \"Numeric AliExpress product IDs or item URLs. Both 1005… and 3256… ID formats are accepted.\",\n      \"prefill\": [\n        \"1005010155028387\"\n      ]\n    },\n    \"storeIds\": {\n      \"title\": \"Store IDs or URLs (mode=byStore)\",\n      \"type\": \"array\",\n      \"editor\": \"stringList\",\n      \"description\": \"Numeric store IDs or /store/… URLs.\",\n      \"prefill\": [\n        \"1101493050\"\n      ]\n    },\n    \"urls\": {\n      \"title\": \"AliExpress URLs (mode=byUrl)\",\n      \"type\": \"array\",\n      \"editor\": \"stringList\",\n      \"description\": \"Any mix of search, item, store and review URLs. The mode is detected per URL.\",\n      \"prefill\": [\n        \"https://www.aliexpress.com/item/1005010155028387.html\"\n      ]\n    },\n    \"region\": {\n      \"title\": \"Shopper region\",\n      \"type\": \"string\",\n      \"editor\": \"select\",\n      \"description\": \"Country used for prices, availability and the storefront locale. Global leaves the region to the requesting IP.\",\n      \"default\": \"US\",\n      \"prefill\": \"US\",\n      \"sectionCaption\": \"Region & Locale\",\n      \"enumSuggestedValues\": [\n        \"US\",\n        \"GB\",\n        \"DE\",\n        \"FR\",\n        \"ES\",\n        \"IT\",\n        \"NL\",\n        \"PT\",\n        \"PL\",\n        \"BR\",\n        \"MX\",\n        \"CA\",\n        \"AU\",\n        \"JP\",\n        \"KR\",\n        \"TR\",\n        \"SA\",\n        \"AE\",\n        \"IL\",\n        \"GLOBAL\"\n      ]\n    },\n    \"currency\": {\n      \"title\": \"Currency override\",\n      \"type\": \"string\",\n      \"editor\": \"select\",\n      \"description\": \"Optional ISO-4217 currency. Leave blank to use the region's usual currency. The currency actually returned is recorded in every record.\",\n      \"enum\": [\n        \"\",\n        \"USD\",\n        \"EUR\",\n        \"GBP\",\n        \"JPY\",\n        \"CNY\",\n        \"RUB\",\n        \"BRL\",\n        \"INR\",\n        \"AUD\",\n        \"CAD\",\n        \"HKD\",\n        \"TWD\",\n        \"KRW\",\n        \"SGD\",\n        \"MXN\",\n        \"ARS\",\n        \"CLP\",\n        \"COP\",\n        \"PEN\",\n        \"UYU\",\n        \"ILS\",\n        \"TRY\",\n        \"AED\",\n        \"SAR\",\n        \"ZAR\",\n        \"PLN\",\n        \"CHF\",\n        \"SEK\",\n        \"NOK\",\n        \"DKK\",\n        \"CZK\",\n        \"HUF\",\n        \"RON\",\n        \"THB\",\n        \"VND\",\n        \"PHP\",\n        \"IDR\",\n        \"MYR\",\n        \"NZD\",\n        \"PKR\",\n        \"EGP\",\n        \"NGN\"\n      ],\n      \"enumTitles\": [\n        \"(use region currency)\",\n        \"USD\",\n        \"EUR\",\n        \"GBP\",\n        \"JPY\",\n        \"CNY\",\n        \"RUB\",\n        \"BRL\",\n        \"INR\",\n        \"AUD\",\n        \"CAD\",\n        \"HKD\",\n        \"TWD\",\n        \"KRW\",\n        \"SGD\",\n        \"MXN\",\n        \"ARS\",\n        \"CLP\",\n        \"COP\",\n        \"PEN\",\n        \"UYU\",\n        \"ILS\",\n        \"TRY\",\n        \"AED\",\n        \"SAR\",\n        \"ZAR\",\n        \"PLN\",\n        \"CHF\",\n        \"SEK\",\n        \"NOK\",\n        \"DKK\",\n        \"CZK\",\n        \"HUF\",\n        \"RON\",\n        \"THB\",\n        \"VND\",\n        \"PHP\",\n        \"IDR\",\n        \"MYR\",\n        \"NZD\",\n        \"PKR\",\n        \"EGP\",\n        \"NGN\"\n      ],\n      \"default\": \"\",\n      \"prefill\": \"USD\"\n    },\n    \"language\": {\n      \"title\": \"Language\",\n      \"type\": \"string\",\n      \"editor\": \"select\",\n      \"description\": \"Storefront language and the language used to translate review text.\",\n      \"enum\": [\n        \"en_US\",\n        \"es_ES\",\n        \"fr_FR\",\n        \"de_DE\",\n        \"it_IT\",\n        \"pt_BR\",\n        \"pt_PT\",\n        \"ru_RU\",\n        \"ja_JP\",\n        \"ko_KR\",\n        \"ar_MA\",\n        \"tr_TR\",\n        \"th_TH\",\n        \"vi_VN\",\n        \"id_ID\",\n        \"nl_NL\",\n        \"pl_PL\",\n        \"iw_IL\"\n      ],\n      \"enumTitles\": [\n        \"English (US)\",\n        \"Spanish (Spain)\",\n        \"French (France)\",\n        \"German (Germany)\",\n        \"Italian (Italy)\",\n        \"Portuguese (Brazil)\",\n        \"Portuguese (Portugal)\",\n        \"Russian (Russia)\",\n        \"Japanese (Japan)\",\n        \"Korean (Korea)\",\n        \"Arabic (Morocco)\",\n        \"Turkish (Turkey)\",\n        \"Thai (Thailand)\",\n        \"Vietnamese (Vietnam)\",\n        \"Indonesian (Indonesia)\",\n        \"Dutch (Netherlands)\",\n        \"Polish (Poland)\",\n        \"Hebrew (Israel)\"\n      ],\n      \"default\": \"en_US\",\n      \"prefill\": \"en_US\"\n    },\n    \"sortBy\": {\n      \"title\": \"Sort order (mode=search)\",\n      \"type\": \"string\",\n      \"editor\": \"select\",\n      \"description\": \"How keyword results are ordered. AliExpress does not expose a newest sort.\",\n      \"default\": \"default\",\n      \"prefill\": \"default\",\n      \"sectionCaption\": \"Filters\",\n      \"enumSuggestedValues\": [\n        \"default\",\n        \"orders_desc\",\n        \"price_asc\",\n        \"price_desc\",\n        \"newest\"\n      ]\n    },\n    \"priceMin\": {\n      \"title\": \"Minimum price\",\n      \"type\": \"number\",\n      \"description\": \"Minimum price in the selected currency. 0 disables the lower bound.\",\n      \"minimum\": 0,\n      \"maximum\": 1000000,\n      \"default\": 0,\n      \"prefill\": 0\n    },\n    \"priceMax\": {\n      \"title\": \"Maximum price\",\n      \"type\": \"number\",\n      \"description\": \"Maximum price in the selected currency. 0 disables the upper bound.\",\n      \"minimum\": 0,\n      \"maximum\": 1000000,\n      \"default\": 0,\n      \"prefill\": 0\n    },\n    \"ratingMin\": {\n      \"title\": \"Minimum rating\",\n      \"type\": \"number\",\n      \"description\": \"Minimum star rating from 0 to 5. Products without a rating are skipped when a threshold is set.\",\n      \"minimum\": 0,\n      \"maximum\": 5,\n      \"default\": 0,\n      \"prefill\": 0\n    },\n    \"shipFrom\": {\n      \"title\": \"Ship from country\",\n      \"type\": \"string\",\n      \"editor\": \"select\",\n      \"description\": \"Only show items stocked in this country. Leave blank for any warehouse.\",\n      \"enum\": [\n        \"\",\n        \"CN\",\n        \"US\",\n        \"RU\",\n        \"ES\",\n        \"FR\",\n        \"DE\",\n        \"IT\",\n        \"GB\",\n        \"PL\",\n        \"TR\",\n        \"BR\",\n        \"JP\",\n        \"KR\",\n        \"AU\",\n        \"CA\",\n        \"MX\",\n        \"AE\",\n        \"SA\",\n        \"IL\",\n        \"TH\",\n        \"VN\",\n        \"ID\",\n        \"MY\",\n        \"NL\",\n        \"BE\",\n        \"PT\"\n      ],\n      \"enumTitles\": [\n        \"(any warehouse)\",\n        \"CN\",\n        \"US\",\n        \"RU\",\n        \"ES\",\n        \"FR\",\n        \"DE\",\n        \"IT\",\n        \"GB\",\n        \"PL\",\n        \"TR\",\n        \"BR\",\n        \"JP\",\n        \"KR\",\n        \"AU\",\n        \"CA\",\n        \"MX\",\n        \"AE\",\n        \"SA\",\n        \"IL\",\n        \"TH\",\n        \"VN\",\n        \"ID\",\n        \"MY\",\n        \"NL\",\n        \"BE\",\n        \"PT\"\n      ],\n      \"default\": \"\",\n      \"prefill\": \"\"\n    },\n    \"freeShippingOnly\": {\n      \"title\": \"Free shipping only\",\n      \"type\": \"boolean\",\n      \"description\": \"Only show items advertised with free shipping.\",\n      \"editor\": \"checkbox\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"choiceOnly\": {\n      \"title\": \"AliExpress Choice only\",\n      \"type\": \"boolean\",\n      \"description\": \"Only show AliExpress Choice items.\",\n      \"editor\": \"checkbox\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"fourStarPlus\": {\n      \"title\": \"4 stars and up only\",\n      \"type\": \"boolean\",\n      \"description\": \"Only show items rated 4.0 or higher. The actor enforces the 4.0 threshold after AliExpress returns its filtered page.\",\n      \"editor\": \"checkbox\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"includeSponsored\": {\n      \"title\": \"Include sponsored results\",\n      \"type\": \"boolean\",\n      \"description\": \"Include promoted product cards; they are marked isSponsored in the output.\",\n      \"editor\": \"checkbox\",\n      \"default\": true,\n      \"prefill\": true\n    },\n    \"includeWelcomeGifts\": {\n      \"title\": \"Include welcome-gift cards\",\n      \"type\": \"boolean\",\n      \"description\": \"Include $0.00 new-shopper gift cards; they are marked isWelcomeGift and have no normal price.\",\n      \"editor\": \"checkbox\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"maxItems\": {\n      \"title\": \"Max items\",\n      \"type\": \"integer\",\n      \"description\": \"Hard cap on records emitted by the run.\",\n      \"editor\": \"number\",\n      \"minimum\": 1,\n      \"maximum\": 10000,\n      \"default\": 100,\n      \"prefill\": 3,\n      \"sectionCaption\": \"Limits\"\n    },\n    \"maxPages\": {\n      \"title\": \"Max search pages\",\n      \"type\": \"integer\",\n      \"description\": \"Maximum result pages per query (60 products per page, up to 60 pages).\",\n      \"editor\": \"number\",\n      \"minimum\": 1,\n      \"maximum\": 60,\n      \"default\": 3,\n      \"prefill\": 1\n    },\n    \"includeReviews\": {\n      \"title\": \"Attach reviews\",\n      \"type\": \"boolean\",\n      \"description\": \"Fetch customer reviews for each product (slow and adds records to the product).\",\n      \"editor\": \"checkbox\",\n      \"default\": false,\n      \"prefill\": false,\n      \"sectionCaption\": \"Reviews\"\n    },\n    \"maxReviewsPerProduct\": {\n      \"title\": \"Max reviews per product\",\n      \"type\": \"integer\",\n      \"description\": \"Review cap per product when reviews are fetched. 0 uses the default of 20.\",\n      \"editor\": \"number\",\n      \"minimum\": 0,\n      \"maximum\": 200,\n      \"default\": 20,\n      \"prefill\": 20\n    },\n    \"reviewFilter\": {\n      \"title\": \"Review filter\",\n      \"type\": \"string\",\n      \"editor\": \"select\",\n      \"description\": \"Which reviews to collect.\",\n      \"enum\": [\n        \"all\",\n        \"withPhotos\",\n        \"additional\"\n      ],\n      \"enumTitles\": [\n        \"All reviews\",\n        \"With photos\",\n        \"With follow-up\"\n      ],\n      \"default\": \"all\",\n      \"prefill\": \"all\"\n    },\n    \"includeProductStats\": {\n      \"title\": \"Include review summary\",\n      \"type\": \"boolean\",\n      \"description\": \"Add each product's average rating and total review count to review records.\",\n      \"editor\": \"checkbox\",\n      \"default\": true,\n      \"prefill\": true\n    }\n  },\n  \"required\": [\n    \"mode\"\n  ]\n}",
    "readme": "# AliExpress Multi-Region Search, Store & Review Scraper\n\nCollect AliExpress search results, customer reviews, and basic product or store lookups for 19 shopper regions. Prices, currency, and review language follow the region you choose. No AliExpress login, cookies, or manual proxy setup is required.\n\n## What this actor does\n\n- Searches AliExpress by keyword and returns product cards (up to 60 per page before gift filtering), with price, original price, discount, rating, sold count, images, selling points, category, and ship-from country\n- Supports 19 shopper regions and 42 currencies, with sort, price range, rating, ship-from, free-shipping, Choice, and 4-star filters\n- Flags sponsored cards and $0.00 welcome-gift cards so you can keep or drop them\n- Collects customer reviews page by page, including original text, translated text, rating, buyer country, photos, variant, shipping method, and follow-up reviews\n- Looks up a product by ID or URL for its title, main image, canonical URL, and availability status\n- Looks up a store by ID or URL for its store name, canonical store ID, seller ID, and description\n- Omits empty fields from every record; dates are ISO when present and image URLs are absolute\n\n## Modes and output\n\n### Keyword search (`mode=search`)\n\nOne record per product card:\n\n`productId`, `title`, `productUrl`, `imageUrl`, `imageUrls[]`, `salePrice{amount,currencyCode,formatted,discountPercent}`, `originalPrice{amount,currencyCode,formatted}`, `discountPercent`, `currencyCode`, `rating`, `ordersText`, `ordersCount`, `sellingPoints[]`, `listedAt`, `productType`, `itemType`, `shipFromCountry`, `categoryId`, `isChoice`, `isSponsored`, `isWelcomeGift`, `region`, `sourceUrl`, `recordType`, `siteName`, `scrapedAt`.\n\n`salePrice.amount` is the lowest price shown for the listing on the search card, not a selected variant's price.\n\n### Product lookup (`mode=byProduct`, or an item URL in `mode=byUrl`)\n\nOne record per requested product:\n\n`productId`, `productUrl`, `canonicalUrl`, `title`, `imageUrl`, `status` (`ok`, `not_found`, or `blocked`), `region`, `recordType`, `siteName`, `scrapedAt`.\n\nWith `includeReviews` enabled, a `reviews[]` array is attached. This mode is a title/image/existence lookup: AliExpress loads price, rating, variants, specifications, shipping, and seller statistics through a separate anti-bot API that this actor does not promise. Use keyword search for card price and rating.\n\n### Store lookup (`mode=byStore`, or a store URL in `mode=byUrl`)\n\nOne record per requested store:\n\n`storeId` (canonical), `storeNumber`, `storeName`, `storeUrl`, `storeDescription`, `sellerId`, `status`, `region`, `recordType`, `siteName`, `scrapedAt`.\n\nAliExpress's store statistics API (positive-feedback rate, opening date, 180-day sales, followers) is not publicly reachable without the same protected API. Those fields are deliberately not advertised.\n\n### Reviews (`mode=byReviews`, a product ID list, or a review URL in `mode=byUrl`)\n\nOne record per review:\n\n`productId`, `productRating`, `productReviewCount`, `reviewId`, `rating` (1–5), `reviewText`, `reviewTextTranslated`, `translationLanguage`, `reviewerName`, `reviewerCountry`, `reviewerHeadUrl`, `reviewedAt`, `skuInfo`, `imageUrls[]`, `helpfulCount`, `logistics`, `isFollowUp`, `followUpText`, `followUpDate`, `recordType`, `siteName`, `scrapedAt`.\n\n## Input\n\n| Field | Type | Default | Description |\n|---|---|---|---|\n| `mode` | string | `search` | `search`, `byProduct`, `byStore`, `byReviews`, or `byUrl` |\n| `searchQueries` | array | – | Keywords for `search`; one to 50 queries (the prefill example is `[\"phone case\"]`) |\n| `productIds` | array | – | Product IDs or item URLs for `byProduct` / `byReviews` |\n| `storeIds` | array | – | Store IDs or store URLs for `byStore` |\n| `urls` | array | – | Any AliExpress search, item, store, or review URLs for `byUrl` |\n| `region` | string | `US` | Shopper country: `US`, `GB`, `DE`, `FR`, `ES`, `IT`, `NL`, `PT`, `PL`, `BR`, `MX`, `CA`, `AU`, `JP`, `KR`, `TR`, `SA`, `AE`, `IL`, or `GLOBAL` |\n| `currency` | string | region default | Optional ISO-4217 override, e.g. `USD`, `EUR`, `BRL` |\n| `language` | string | `en_US` | Storefront language and review translation language |\n| `sortBy` | string | `default` | `default`, `orders_desc`, `price_asc`, or `price_desc` |\n| `priceMin` / `priceMax` | number | `0` | Price bounds in the selected currency; `0` disables a bound |\n| `ratingMin` | number | `0` | Minimum stars from 0 to 5; unrated items are skipped when set |\n| `shipFrom` | string | any | Warehouse country code, e.g. `CN`, `US`, `ES` |\n| `freeShippingOnly` | boolean | `false` | Only items with free-shipping advertising |\n| `choiceOnly` | boolean | `false` | Only AliExpress Choice items |\n| `fourStarPlus` | boolean | `false` | Only items rated 4.0 or higher. AliExpress's own 4-star filter can include 3.x cards, so the actor enforces the 4.0 cutoff after the page is fetched |\n| `includeSponsored` | boolean | `true` | Include promoted cards, marked `isSponsored` |\n| `includeWelcomeGifts` | boolean | `false` | Include $0.00 new-shopper gift cards, marked `isWelcomeGift` |\n| `maxItems` | integer | `100` | Hard cap on emitted records (1–10,000) |\n| `maxPages` | integer | `3` | Pages per query (1–60; 60 cards per page) |\n| `includeReviews` | boolean | `false` | Attach reviews to product records |\n| `maxReviewsPerProduct` | integer | `20` | Review cap per product (0–200; 0 uses 20) |\n| `reviewFilter` | string | `all` | `all`, `withPhotos`, or `additional` |\n| `includeProductStats` | boolean | `true` | Add product average rating and review count to review rows |\n\n### Example: search three regions\n\n```json\n{\n  \"mode\": \"search\",\n  \"searchQueries\": [\"phone case\", \"wireless earbuds\"],\n  \"region\": \"ES\",\n  \"currency\": \"EUR\",\n  \"sortBy\": \"orders_desc\",\n  \"freeShippingOnly\": true,\n  \"maxItems\": 200,\n  \"maxPages\": 3\n}\n```\n\n### Example: collect translated reviews\n\n```json\n{\n  \"mode\": \"byReviews\",\n  \"productIds\": [\"1005010155028387\", \"1005012594256426\"],\n  \"language\": \"es_ES\",\n  \"maxReviewsPerProduct\": 60,\n  \"reviewFilter\": \"withPhotos\",\n  \"includeProductStats\": true\n}\n```\n\n### Example: resolve mixed URLs\n\n```json\n{\n  \"mode\": \"byUrl\",\n  \"urls\": [\n    \"https://www.aliexpress.com/item/1005010155028387.html\",\n    \"https://www.aliexpress.com/store/1101493050\",\n    \"https://www.aliexpress.com/w/wholesale-phone-case.html\"\n  ]\n}\n```\n\n## Use cases\n\n- Compare keyword pricing and sales signals across countries and currencies\n- Build a review corpus with translated text for sentiment analysis\n- Monitor a product line's card prices and discounts on a schedule\n- Resolve pasted AliExpress product or store links into structured records\n- Feed product-card and review data into spreadsheets, databases, or AI pipelines\n\n## Limits\n\n- **No full item-detail scraping.** AliExpress renders item price/rating/variants/specs/shipping/seller data through a protected client-side API. This actor returns an item's title, image, and canonical URL; it does not promise the rest.\n- **No store statistics.** The store profile API is behind the same protection, so store rating, positive-feedback rate, opening date, and 180-day sales are not returned.\n- **Search cap.** AliExpress serves 60 cards per page and stops at page 60, so one query exposes at most 3,600 raw cards (60 pages x 60). Cross-page dedupe and the default gift filter usually return fewer; a default US page produced roughly 30-45 rows in tests. Split broad searches by price, sort order, or narrower keywords for more coverage.\n- **Card price is a listing minimum.** It is the lowest price across variants shown on the card, not a selected SKU's price.\n- **Conditional fields.** Ratings, discounts, photos, avatars, and follow-ups are only present when the source has them. They are omitted, never filled with a placeholder.\n- **Review dates in non-English languages.** AliExpress localizes review month names (for example `ENE`, `FEV`, `ABR`). The current parser recognizes English month abbreviations, so some `reviewedAt` values are omitted when `language` is not `en_US` even though the source has a date. Use `language=en_US` when every review needs a date.\n- **The 4-star filter is enforced by the actor.** AliExpress's own 4-star filter can include 3.x cards (3.7-3.9 was observed); when `fourStarPlus` is on, the actor removes anything below 4.0.\n- **Review order.** The public review endpoint does not support a sort parameter; reviews are returned in AliExpress's default order.\n- **Welcome gifts.** Some US searches show $0.00 gift cards. They are excluded by default; enable `includeWelcomeGifts` to keep them with the `isWelcomeGift` flag.\n\n## FAQ\n\n**Do I need an AliExpress account or cookies?**\nNo. The actor reads public search, review, product, and store pages without logging in.\n\n**Do I need to configure a proxy?**\nNo. AliExpress rate limits are handled automatically; there is nothing to configure.\n\n**Why does `byProduct` not return price, rating, or variants?**\nAliExpress loads those fields through a separate protected API that is not reliably reachable without a browser session. The actor returns the reliable part — title, image, canonical URL, and status — rather than pretending to have the rest. Use keyword search for card price and rating.\n\n**Why is there no store rating or follower count?**\nAliExpress serves store statistics from a protected profile API. Only the public store name, canonical ID, seller ID, and description are returned.\n\n**Why does the returned currency sometimes differ from what I picked?**\nThe actor sets the shopper region and currency, and records the currency AliExpress actually returned. If you need a specific currency, set both `region` and `currency`.\n\n**How many products can one search return?**\nUp to 60 cards per page and 60 pages per query (3,600 raw cards; fewer after gift filtering and cross-page dedupe). Use narrower keywords or price ranges to partition larger catalogs.\n\n**Why are some reviews missing photos or translations?**\nPhotos, avatars, and follow-ups are optional on AliExpress. Translation depends on the review language and the selected `language`; translated text is omitted when the source does not provide it. Review dates are normalized from localized month names (Spanish, Portuguese, French, German, Italian, Russian, and English).\n\n**Can I get more than 200 reviews for one product?**\nNo in one pass; the review cap is 200 per product. Run multiple products or split the review set.\n\n**Is this affiliated with AliExpress?**\nNo. This is an independent actor that reads public AliExpress pages and is not operated or endorsed by AliExpress or Alibaba Group.\n",
    "actorDefinition": {
      "actorSpecification": 1,
      "name": "aliexpress-multi-region-search-store-and-review",
      "title": "AliExpress Multi-Region Search, Store & Review Scraper",
      "description": "Search AliExpress across 19 shopper regions, collect product cards with prices, ratings and sales, and pull customer reviews with translation. Store and product lookups included; no login or cookies.",
      "version": "1.0",
      "buildTag": "latest",
      "defaultRunOptions": {
        "build": "latest",
        "timeoutSecs": 1800,
        "memoryMbytes": 1024
      },
      "dockerfile": "./Dockerfile",
      "readme": "# AliExpress Multi-Region Search, Store & Review Scraper\n\nCollect AliExpress search results, customer reviews, and basic product or store lookups for 19 shopper regions. Prices, currency, and review language follow the region you choose. No AliExpress login, cookies, or manual proxy setup is required.\n\n## What this actor does\n\n- Searches AliExpress by keyword and returns product cards (up to 60 per page before gift filtering), with price, original price, discount, rating, sold count, images, selling points, category, and ship-from country\n- Supports 19 shopper regions and 42 currencies, with sort, price range, rating, ship-from, free-shipping, Choice, and 4-star filters\n- Flags sponsored cards and $0.00 welcome-gift cards so you can keep or drop them\n- Collects customer reviews page by page, including original text, translated text, rating, buyer country, photos, variant, shipping method, and follow-up reviews\n- Looks up a product by ID or URL for its title, main image, canonical URL, and availability status\n- Looks up a store by ID or URL for its store name, canonical store ID, seller ID, and description\n- Omits empty fields from every record; dates are ISO when present and image URLs are absolute\n\n## Modes and output\n\n### Keyword search (`mode=search`)\n\nOne record per product card:\n\n`productId`, `title`, `productUrl`, `imageUrl`, `imageUrls[]`, `salePrice{amount,currencyCode,formatted,discountPercent}`, `originalPrice{amount,currencyCode,formatted}`, `discountPercent`, `currencyCode`, `rating`, `ordersText`, `ordersCount`, `sellingPoints[]`, `listedAt`, `productType`, `itemType`, `shipFromCountry`, `categoryId`, `isChoice`, `isSponsored`, `isWelcomeGift`, `region`, `sourceUrl`, `recordType`, `siteName`, `scrapedAt`.\n\n`salePrice.amount` is the lowest price shown for the listing on the search card, not a selected variant's price.\n\n### Product lookup (`mode=byProduct`, or an item URL in `mode=byUrl`)\n\nOne record per requested product:\n\n`productId`, `productUrl`, `canonicalUrl`, `title`, `imageUrl`, `status` (`ok`, `not_found`, or `blocked`), `region`, `recordType`, `siteName`, `scrapedAt`.\n\nWith `includeReviews` enabled, a `reviews[]` array is attached. This mode is a title/image/existence lookup: AliExpress loads price, rating, variants, specifications, shipping, and seller statistics through a separate anti-bot API that this actor does not promise. Use keyword search for card price and rating.\n\n### Store lookup (`mode=byStore`, or a store URL in `mode=byUrl`)\n\nOne record per requested store:\n\n`storeId` (canonical), `storeNumber`, `storeName`, `storeUrl`, `storeDescription`, `sellerId`, `status`, `region`, `recordType`, `siteName`, `scrapedAt`.\n\nAliExpress's store statistics API (positive-feedback rate, opening date, 180-day sales, followers) is not publicly reachable without the same protected API. Those fields are deliberately not advertised.\n\n### Reviews (`mode=byReviews`, a product ID list, or a review URL in `mode=byUrl`)\n\nOne record per review:\n\n`productId`, `productRating`, `productReviewCount`, `reviewId`, `rating` (1–5), `reviewText`, `reviewTextTranslated`, `translationLanguage`, `reviewerName`, `reviewerCountry`, `reviewerHeadUrl`, `reviewedAt`, `skuInfo`, `imageUrls[]`, `helpfulCount`, `logistics`, `isFollowUp`, `followUpText`, `followUpDate`, `recordType`, `siteName`, `scrapedAt`.\n\n## Input\n\n| Field | Type | Default | Description |\n|---|---|---|---|\n| `mode` | string | `search` | `search`, `byProduct`, `byStore`, `byReviews`, or `byUrl` |\n| `searchQueries` | array | – | Keywords for `search`; one to 50 queries (the prefill example is `[\"phone case\"]`) |\n| `productIds` | array | – | Product IDs or item URLs for `byProduct` / `byReviews` |\n| `storeIds` | array | – | Store IDs or store URLs for `byStore` |\n| `urls` | array | – | Any AliExpress search, item, store, or review URLs for `byUrl` |\n| `region` | string | `US` | Shopper country: `US`, `GB`, `DE`, `FR`, `ES`, `IT`, `NL`, `PT`, `PL`, `BR`, `MX`, `CA`, `AU`, `JP`, `KR`, `TR`, `SA`, `AE`, `IL`, or `GLOBAL` |\n| `currency` | string | region default | Optional ISO-4217 override, e.g. `USD`, `EUR`, `BRL` |\n| `language` | string | `en_US` | Storefront language and review translation language |\n| `sortBy` | string | `default` | `default`, `orders_desc`, `price_asc`, or `price_desc` |\n| `priceMin` / `priceMax` | number | `0` | Price bounds in the selected currency; `0` disables a bound |\n| `ratingMin` | number | `0` | Minimum stars from 0 to 5; unrated items are skipped when set |\n| `shipFrom` | string | any | Warehouse country code, e.g. `CN`, `US`, `ES` |\n| `freeShippingOnly` | boolean | `false` | Only items with free-shipping advertising |\n| `choiceOnly` | boolean | `false` | Only AliExpress Choice items |\n| `fourStarPlus` | boolean | `false` | Only items rated 4.0 or higher. AliExpress's own 4-star filter can include 3.x cards, so the actor enforces the 4.0 cutoff after the page is fetched |\n| `includeSponsored` | boolean | `true` | Include promoted cards, marked `isSponsored` |\n| `includeWelcomeGifts` | boolean | `false` | Include $0.00 new-shopper gift cards, marked `isWelcomeGift` |\n| `maxItems` | integer | `100` | Hard cap on emitted records (1–10,000) |\n| `maxPages` | integer | `3` | Pages per query (1–60; 60 cards per page) |\n| `includeReviews` | boolean | `false` | Attach reviews to product records |\n| `maxReviewsPerProduct` | integer | `20` | Review cap per product (0–200; 0 uses 20) |\n| `reviewFilter` | string | `all` | `all`, `withPhotos`, or `additional` |\n| `includeProductStats` | boolean | `true` | Add product average rating and review count to review rows |\n\n### Example: search three regions\n\n```json\n{\n  \"mode\": \"search\",\n  \"searchQueries\": [\"phone case\", \"wireless earbuds\"],\n  \"region\": \"ES\",\n  \"currency\": \"EUR\",\n  \"sortBy\": \"orders_desc\",\n  \"freeShippingOnly\": true,\n  \"maxItems\": 200,\n  \"maxPages\": 3\n}\n```\n\n### Example: collect translated reviews\n\n```json\n{\n  \"mode\": \"byReviews\",\n  \"productIds\": [\"1005010155028387\", \"1005012594256426\"],\n  \"language\": \"es_ES\",\n  \"maxReviewsPerProduct\": 60,\n  \"reviewFilter\": \"withPhotos\",\n  \"includeProductStats\": true\n}\n```\n\n### Example: resolve mixed URLs\n\n```json\n{\n  \"mode\": \"byUrl\",\n  \"urls\": [\n    \"https://www.aliexpress.com/item/1005010155028387.html\",\n    \"https://www.aliexpress.com/store/1101493050\",\n    \"https://www.aliexpress.com/w/wholesale-phone-case.html\"\n  ]\n}\n```\n\n## Use cases\n\n- Compare keyword pricing and sales signals across countries and currencies\n- Build a review corpus with translated text for sentiment analysis\n- Monitor a product line's card prices and discounts on a schedule\n- Resolve pasted AliExpress product or store links into structured records\n- Feed product-card and review data into spreadsheets, databases, or AI pipelines\n\n## Limits\n\n- **No full item-detail scraping.** AliExpress renders item price/rating/variants/specs/shipping/seller data through a protected client-side API. This actor returns an item's title, image, and canonical URL; it does not promise the rest.\n- **No store statistics.** The store profile API is behind the same protection, so store rating, positive-feedback rate, opening date, and 180-day sales are not returned.\n- **Search cap.** AliExpress serves 60 cards per page and stops at page 60, so one query exposes at most 3,600 raw cards (60 pages x 60). Cross-page dedupe and the default gift filter usually return fewer; a default US page produced roughly 30-45 rows in tests. Split broad searches by price, sort order, or narrower keywords for more coverage.\n- **Card price is a listing minimum.** It is the lowest price across variants shown on the card, not a selected SKU's price.\n- **Conditional fields.** Ratings, discounts, photos, avatars, and follow-ups are only present when the source has them. They are omitted, never filled with a placeholder.\n- **Review dates in non-English languages.** AliExpress localizes review month names (for example `ENE`, `FEV`, `ABR`). The current parser recognizes English month abbreviations, so some `reviewedAt` values are omitted when `language` is not `en_US` even though the source has a date. Use `language=en_US` when every review needs a date.\n- **The 4-star filter is enforced by the actor.** AliExpress's own 4-star filter can include 3.x cards (3.7-3.9 was observed); when `fourStarPlus` is on, the actor removes anything below 4.0.\n- **Review order.** The public review endpoint does not support a sort parameter; reviews are returned in AliExpress's default order.\n- **Welcome gifts.** Some US searches show $0.00 gift cards. They are excluded by default; enable `includeWelcomeGifts` to keep them with the `isWelcomeGift` flag.\n\n## FAQ\n\n**Do I need an AliExpress account or cookies?**\nNo. The actor reads public search, review, product, and store pages without logging in.\n\n**Do I need to configure a proxy?**\nNo. AliExpress rate limits are handled automatically; there is nothing to configure.\n\n**Why does `byProduct` not return price, rating, or variants?**\nAliExpress loads those fields through a separate protected API that is not reliably reachable without a browser session. The actor returns the reliable part — title, image, canonical URL, and status — rather than pretending to have the rest. Use keyword search for card price and rating.\n\n**Why is there no store rating or follower count?**\nAliExpress serves store statistics from a protected profile API. Only the public store name, canonical ID, seller ID, and description are returned.\n\n**Why does the returned currency sometimes differ from what I picked?**\nThe actor sets the shopper region and currency, and records the currency AliExpress actually returned. If you need a specific currency, set both `region` and `currency`.\n\n**How many products can one search return?**\nUp to 60 cards per page and 60 pages per query (3,600 raw cards; fewer after gift filtering and cross-page dedupe). Use narrower keywords or price ranges to partition larger catalogs.\n\n**Why are some reviews missing photos or translations?**\nPhotos, avatars, and follow-ups are optional on AliExpress. Translation depends on the review language and the selected `language`; translated text is omitted when the source does not provide it. Review dates are normalized from localized month names (Spanish, Portuguese, French, German, Italian, Russian, and English).\n\n**Can I get more than 200 reviews for one product?**\nNo in one pass; the review cap is 200 per product. Run multiple products or split the review set.\n\n**Is this affiliated with AliExpress?**\nNo. This is an independent actor that reads public AliExpress pages and is not operated or endorsed by AliExpress or Alibaba Group.\n",
      "input": {
        "title": "AliExpress Scraper Input",
        "description": "Search AliExpress by keyword, look up products and stores, or collect customer reviews across major shopper regions.",
        "type": "object",
        "schemaVersion": 1,
        "properties": {
          "mode": {
            "title": "Mode",
            "type": "string",
            "editor": "select",
            "description": "What to collect. search: keyword results. byProduct: product lookup by ID or URL. byStore: store lookup. byReviews: customer reviews. byUrl: auto-detect from pasted AliExpress links.",
            "enum": [
              "search",
              "byProduct",
              "byStore",
              "byReviews",
              "byUrl"
            ],
            "enumTitles": [
              "Search by keyword",
              "Look up products",
              "Look up stores",
              "Collect reviews",
              "Auto-detect from URLs"
            ],
            "default": "search",
            "prefill": "search",
            "sectionCaption": "Mode & Inputs"
          },
          "searchQueries": {
            "title": "Search queries (mode=search)",
            "type": "array",
            "editor": "stringList",
            "description": "One or more keywords, e.g. \"phone case\" or \"wireless earbuds\". Each query is scraped up to maxPages pages.",
            "prefill": [
              "phone case"
            ]
          },
          "productIds": {
            "title": "Product IDs or URLs (mode=byProduct or byReviews)",
            "type": "array",
            "editor": "stringList",
            "description": "Numeric AliExpress product IDs or item URLs. Both 1005… and 3256… ID formats are accepted.",
            "prefill": [
              "1005010155028387"
            ]
          },
          "storeIds": {
            "title": "Store IDs or URLs (mode=byStore)",
            "type": "array",
            "editor": "stringList",
            "description": "Numeric store IDs or /store/… URLs.",
            "prefill": [
              "1101493050"
            ]
          },
          "urls": {
            "title": "AliExpress URLs (mode=byUrl)",
            "type": "array",
            "editor": "stringList",
            "description": "Any mix of search, item, store and review URLs. The mode is detected per URL.",
            "prefill": [
              "https://www.aliexpress.com/item/1005010155028387.html"
            ]
          },
          "region": {
            "title": "Shopper region",
            "type": "string",
            "editor": "select",
            "description": "Country used for prices, availability and the storefront locale. Global leaves the region to the requesting IP.",
            "default": "US",
            "prefill": "US",
            "sectionCaption": "Region & Locale",
            "enumSuggestedValues": [
              "US",
              "GB",
              "DE",
              "FR",
              "ES",
              "IT",
              "NL",
              "PT",
              "PL",
              "BR",
              "MX",
              "CA",
              "AU",
              "JP",
              "KR",
              "TR",
              "SA",
              "AE",
              "IL",
              "GLOBAL"
            ]
          },
          "currency": {
            "title": "Currency override",
            "type": "string",
            "editor": "select",
            "description": "Optional ISO-4217 currency. Leave blank to use the region's usual currency. The currency actually returned is recorded in every record.",
            "enum": [
              "",
              "USD",
              "EUR",
              "GBP",
              "JPY",
              "CNY",
              "RUB",
              "BRL",
              "INR",
              "AUD",
              "CAD",
              "HKD",
              "TWD",
              "KRW",
              "SGD",
              "MXN",
              "ARS",
              "CLP",
              "COP",
              "PEN",
              "UYU",
              "ILS",
              "TRY",
              "AED",
              "SAR",
              "ZAR",
              "PLN",
              "CHF",
              "SEK",
              "NOK",
              "DKK",
              "CZK",
              "HUF",
              "RON",
              "THB",
              "VND",
              "PHP",
              "IDR",
              "MYR",
              "NZD",
              "PKR",
              "EGP",
              "NGN"
            ],
            "enumTitles": [
              "(use region currency)",
              "USD",
              "EUR",
              "GBP",
              "JPY",
              "CNY",
              "RUB",
              "BRL",
              "INR",
              "AUD",
              "CAD",
              "HKD",
              "TWD",
              "KRW",
              "SGD",
              "MXN",
              "ARS",
              "CLP",
              "COP",
              "PEN",
              "UYU",
              "ILS",
              "TRY",
              "AED",
              "SAR",
              "ZAR",
              "PLN",
              "CHF",
              "SEK",
              "NOK",
              "DKK",
              "CZK",
              "HUF",
              "RON",
              "THB",
              "VND",
              "PHP",
              "IDR",
              "MYR",
              "NZD",
              "PKR",
              "EGP",
              "NGN"
            ],
            "default": "",
            "prefill": "USD"
          },
          "language": {
            "title": "Language",
            "type": "string",
            "editor": "select",
            "description": "Storefront language and the language used to translate review text.",
            "enum": [
              "en_US",
              "es_ES",
              "fr_FR",
              "de_DE",
              "it_IT",
              "pt_BR",
              "pt_PT",
              "ru_RU",
              "ja_JP",
              "ko_KR",
              "ar_MA",
              "tr_TR",
              "th_TH",
              "vi_VN",
              "id_ID",
              "nl_NL",
              "pl_PL",
              "iw_IL"
            ],
            "enumTitles": [
              "English (US)",
              "Spanish (Spain)",
              "French (France)",
              "German (Germany)",
              "Italian (Italy)",
              "Portuguese (Brazil)",
              "Portuguese (Portugal)",
              "Russian (Russia)",
              "Japanese (Japan)",
              "Korean (Korea)",
              "Arabic (Morocco)",
              "Turkish (Turkey)",
              "Thai (Thailand)",
              "Vietnamese (Vietnam)",
              "Indonesian (Indonesia)",
              "Dutch (Netherlands)",
              "Polish (Poland)",
              "Hebrew (Israel)"
            ],
            "default": "en_US",
            "prefill": "en_US"
          },
          "sortBy": {
            "title": "Sort order (mode=search)",
            "type": "string",
            "editor": "select",
            "description": "How keyword results are ordered. AliExpress does not expose a newest sort.",
            "default": "default",
            "prefill": "default",
            "sectionCaption": "Filters",
            "enumSuggestedValues": [
              "default",
              "orders_desc",
              "price_asc",
              "price_desc",
              "newest"
            ]
          },
          "priceMin": {
            "title": "Minimum price",
            "type": "number",
            "description": "Minimum price in the selected currency. 0 disables the lower bound.",
            "minimum": 0,
            "maximum": 1000000,
            "default": 0,
            "prefill": 0
          },
          "priceMax": {
            "title": "Maximum price",
            "type": "number",
            "description": "Maximum price in the selected currency. 0 disables the upper bound.",
            "minimum": 0,
            "maximum": 1000000,
            "default": 0,
            "prefill": 0
          },
          "ratingMin": {
            "title": "Minimum rating",
            "type": "number",
            "description": "Minimum star rating from 0 to 5. Products without a rating are skipped when a threshold is set.",
            "minimum": 0,
            "maximum": 5,
            "default": 0,
            "prefill": 0
          },
          "shipFrom": {
            "title": "Ship from country",
            "type": "string",
            "editor": "select",
            "description": "Only show items stocked in this country. Leave blank for any warehouse.",
            "enum": [
              "",
              "CN",
              "US",
              "RU",
              "ES",
              "FR",
              "DE",
              "IT",
              "GB",
              "PL",
              "TR",
              "BR",
              "JP",
              "KR",
              "AU",
              "CA",
              "MX",
              "AE",
              "SA",
              "IL",
              "TH",
              "VN",
              "ID",
              "MY",
              "NL",
              "BE",
              "PT"
            ],
            "enumTitles": [
              "(any warehouse)",
              "CN",
              "US",
              "RU",
              "ES",
              "FR",
              "DE",
              "IT",
              "GB",
              "PL",
              "TR",
              "BR",
              "JP",
              "KR",
              "AU",
              "CA",
              "MX",
              "AE",
              "SA",
              "IL",
              "TH",
              "VN",
              "ID",
              "MY",
              "NL",
              "BE",
              "PT"
            ],
            "default": "",
            "prefill": ""
          },
          "freeShippingOnly": {
            "title": "Free shipping only",
            "type": "boolean",
            "description": "Only show items advertised with free shipping.",
            "editor": "checkbox",
            "default": false,
            "prefill": false
          },
          "choiceOnly": {
            "title": "AliExpress Choice only",
            "type": "boolean",
            "description": "Only show AliExpress Choice items.",
            "editor": "checkbox",
            "default": false,
            "prefill": false
          },
          "fourStarPlus": {
            "title": "4 stars and up only",
            "type": "boolean",
            "description": "Only show items rated 4.0 or higher. The actor enforces the 4.0 threshold after AliExpress returns its filtered page.",
            "editor": "checkbox",
            "default": false,
            "prefill": false
          },
          "includeSponsored": {
            "title": "Include sponsored results",
            "type": "boolean",
            "description": "Include promoted product cards; they are marked isSponsored in the output.",
            "editor": "checkbox",
            "default": true,
            "prefill": true
          },
          "includeWelcomeGifts": {
            "title": "Include welcome-gift cards",
            "type": "boolean",
            "description": "Include $0.00 new-shopper gift cards; they are marked isWelcomeGift and have no normal price.",
            "editor": "checkbox",
            "default": false,
            "prefill": false
          },
          "maxItems": {
            "title": "Max items",
            "type": "integer",
            "description": "Hard cap on records emitted by the run.",
            "editor": "number",
            "minimum": 1,
            "maximum": 10000,
            "default": 100,
            "prefill": 3,
            "sectionCaption": "Limits"
          },
          "maxPages": {
            "title": "Max search pages",
            "type": "integer",
            "description": "Maximum result pages per query (60 products per page, up to 60 pages).",
            "editor": "number",
            "minimum": 1,
            "maximum": 60,
            "default": 3,
            "prefill": 1
          },
          "includeReviews": {
            "title": "Attach reviews",
            "type": "boolean",
            "description": "Fetch customer reviews for each product (slow and adds records to the product).",
            "editor": "checkbox",
            "default": false,
            "prefill": false,
            "sectionCaption": "Reviews"
          },
          "maxReviewsPerProduct": {
            "title": "Max reviews per product",
            "type": "integer",
            "description": "Review cap per product when reviews are fetched. 0 uses the default of 20.",
            "editor": "number",
            "minimum": 0,
            "maximum": 200,
            "default": 20,
            "prefill": 20
          },
          "reviewFilter": {
            "title": "Review filter",
            "type": "string",
            "editor": "select",
            "description": "Which reviews to collect.",
            "enum": [
              "all",
              "withPhotos",
              "additional"
            ],
            "enumTitles": [
              "All reviews",
              "With photos",
              "With follow-up"
            ],
            "default": "all",
            "prefill": "all"
          },
          "includeProductStats": {
            "title": "Include review summary",
            "type": "boolean",
            "description": "Add each product's average rating and total review count to review records.",
            "editor": "checkbox",
            "default": true,
            "prefill": true
          }
        },
        "required": [
          "mode"
        ]
      },
      "output": {
        "actorOutputSchemaVersion": 1,
        "title": "AliExpress Multi-Region Search, Store & Review Scraper Output",
        "description": "Dataset containing AliExpress product cards, store lookups, or customer reviews, depending on the selected mode.",
        "properties": {
          "products": {
            "type": "string",
            "title": "AliExpress records",
            "description": "Dataset containing AliExpress product, store, or review records for the selected mode.",
            "template": "{{links.apiDefaultDatasetUrl}}/items"
          }
        }
      },
      "storages": {
        "dataset": {
          "actorSpecification": 1,
          "views": {
            "overview": {
              "title": "Products",
              "transformation": {
                "fields": [
                  "title",
                  "productId",
                  "salePrice",
                  "originalPrice",
                  "currencyCode",
                  "discountPercent",
                  "rating",
                  "ordersCount",
                  "shipFromCountry",
                  "productUrl",
                  "isSponsored"
                ]
              },
              "display": {
                "component": "table",
                "properties": {}
              }
            }
          }
        }
      },
      "environmentVariables": {}
    },
    "buildNumber": "1.0.2",
    "imageDigest": "b608c98ca3a19d003961b5fabf720dc151b00a5704cfdd35b0865105541a895d",
    "actVersion": {
      "sourceType": "SOURCE_FILES",
      "buildTag": "latest",
      "versionNumber": "1.0"
    },
    "usage": {
      "ACTOR_COMPUTE_UNITS": 0.0031966666666666667
    }
  }
}