AliExpress Scraper
Pricing
from $0.80 / 1,000 products
AliExpress Scraper
Search AliExpress and collect product listings. Product details and reviews are optional and stay on the same product row.
Pricing
from $0.80 / 1,000 products
Rating
0.0
(0)
Developer
Farhan Ali
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
AliExpress Scraper creates a structured dataset of product listings collected from AliExpress. Each dataset item is one product and can include price, currency, rating, sold count, images, shipping hints, category ids, and optional nested productDetails and productReviews objects on the same row. Query the source using search phrases, product URLs, or numeric product ids, control volume with maxItems, and retrieve records through the Apify Dataset API or export them as JSON, CSV, Excel, XML, or another supported format. Pricing starts from $0.001 per product row, with optional $0.001 per details enrichment and $0.001 per review when those options are enabled.
Dataset at a glance
| Property | Value |
|---|---|
| Source | www.aliexpress.com |
| Record unit | One product listing |
| Input methods | searchQueries, productUrls, productIds |
| Main identifiers | productId, url |
| Delivery | Apify default dataset and Dataset API |
| Export formats | JSON, CSV, Excel, XML, RSS, HTML (via Apify export) |
| Update model | Fresh records per Actor run |
| Pricing | Pay per event: product row, optional details, optional reviews (see below) |
Coverage and available records
Supported
- Wholesale search results (about 60 products per search page) from a text query
- Direct lookup by AliExpress item URL or numeric
productId - Ship-to storefront context via
region(prices, language, shipping copy) - Search filters: sort, category id, min/max price, ship-from country, free-shipping switch, extra refine switches
- Optional product details on the same row: product-page title and full gallery (
productDetails), with listing fields filled from search when price was missing on the page - Optional reviews on the same row: summary stats, filter counts, impressions, and a
reviewsarray insideproductReviews, paginated up tomaxReviewsPerProduct(0 = all pages)
Observed behavior
- Listings reflect the selected ship-to country and residential proxy country; align
regionandproxyConfiguration.apifyProxyCountry - Review text may be translated for the selected locale; some listings aggregate reviews from similar products (
reviewScope/noteonproductReviews) - When details or reviews are enabled, products are enriched in parallel up to
concurrency
Not currently collected
- Full variant/SKU matrix and long-form description from the gated authenticated product API
- Separate dataset rows per review (reviews stay nested under
productReviews) - Historical price snapshots across runs (each run is a new extract)
Data dictionary
Product (top-level fields)
| Field | Type | Nullable | Description | Example |
|---|---|---|---|---|
productId | string | no | AliExpress product id | "3256812906139628" |
title | string | yes | Listing title from search or detail page | "For PD 35W Fast Quick Charger..." |
url | string | no | Canonical item URL | https://www.aliexpress.com/item/3256812906139628.html |
sourceQuery | string | yes | Search phrase that produced the row; null for id-only input | "usb c cable" |
price | number | yes | Sale price in ship-to currency | 0.33 |
priceFormatted | string | yes | Display price string | "US $0.33" |
currency | string | yes | ISO currency code | "USD" |
originPrice | number | yes | Reference/origin price when available | 3.78 |
discountPercent | integer | yes | Discount percentage | 91 |
skuId | string | yes | Listing sku id from search card | "12000060251500036" |
rating | number | yes | Star rating from search card | 4.9 |
sold | integer | yes | Sold count when exposed numerically | 83578 |
soldText | string | yes | Human-readable sold string | "50,000+ sold" |
imageUrl | string | yes | Primary image URL | https://ae-pic-a1.aliexpress-media.com/... |
images | string[] | no | Gallery URLs (may be empty) | [ "https://..." ] |
categoryIds | string[] | no | Category id path from search trace | [ "202192403", "100001205" ] |
shipFrom | string | yes | Ship-from country code | "CN" |
shipTo | string | yes | Ship-to country from run region | "US" |
delivery | string | yes | Delivery/ETA selling point when present | "Fastest delivery in 6 days" |
freeShipping | boolean | no | Free shipping flag from search card | false |
sellingPoints | string[] | no | Marketing tags from the card | [ "Free shipping" ] |
launchDate | string | yes | Launch time string from search card | "2026-09-01 00:00:00" |
productDetails | object | yes | Present when includeProductDetails is true; otherwise null | see below |
productReviews | object | yes | Present when includeReviews is true; otherwise null | see below |
Recommended deduplication key: productId (stable within AliExpress). For cross-run dedup, use productId plus your run timestamp or dataset id.
productDetails (when enabled)
| Field | Type | Nullable | Description |
|---|---|---|---|
title | string | yes | Title from product page Open Graph / embed |
url | string | no | Item page URL |
imageUrl | string | yes | Primary gallery image |
images | string[] | no | Full gallery from page embed |
Top-level price, rating, and sold fields may be filled from a matching search card when the product page shell does not expose them.
productReviews (when enabled)
| Field | Type | Nullable | Description |
|---|---|---|---|
productId | string | no | Queried product id |
total | integer | yes | Total reviews reported by the storefront |
totalPages | integer | yes | Total review pages |
fetched | integer | no | Reviews returned in this run (after limits/charges) |
pageSize | integer | yes | Page size used (20) |
filter | string | no | Review filter applied |
sort | string | no | Review sort applied |
note | string | yes | Storefront note (e.g. aggregated reviews) |
reviewScope | string | yes | Storefront product type (e.g. hyperchain listings) |
averageStars | number | yes | Average star rating |
starCounts | object | yes | Counts for five–one star buckets |
positiveCount | integer | yes | Positive review count |
neutralCount | integer | yes | Neutral review count |
negativeCount | integer | yes | Negative review count |
impressions | object[] | no | Frequent review phrases { phrase, count } |
filterCounts | object[] | no | Filter bucket counts { filter, count } |
reviews | object[] | no | Review objects (see below) |
Review object (productReviews.reviews[])
| Field | Type | Nullable | Description |
|---|---|---|---|
evaluationId | string | no | Review id |
productId | string | yes | Product id on the review (may differ on aggregated listings) |
buyerName | string | yes | Display name |
buyerCountry | string | yes | Buyer country code |
anonymous | boolean | no | Anonymous flag |
stars | number | yes | Star rating (0–5 scale) |
date | string | yes | Localized review date string |
text | string | yes | Translated or primary text |
textOriginal | string | yes | Original feedback when available |
sku | string | yes | Purchased variant description |
images | string[] | no | Review image URLs |
upvotes | integer | no | Helpful votes |
logistics | string | yes | Shipping line when present |
Example dataset record
Produced with searchQueries: ["usb c cable"], region: "US", maxItems: 10, details and reviews disabled:
{"productId": "3256812906139628","title": "For PD 35W Fast Quick Charger USB Type C For iPhone 15 14 13 12 11 Pro Max Mini Plus XR XS Charging Data Cable Accessories","url": "https://www.aliexpress.com/item/3256812906139628.html","sourceQuery": "usb c cable","price": 0.33,"priceFormatted": "US $0.33","currency": "USD","originPrice": 3.78,"discountPercent": 91,"skuId": "12000060251500036","rating": 4.9,"sold": 83578,"soldText": "50,000+ sold","imageUrl": "https://ae-pic-a1.aliexpress-media.com/kf/S44533c20a8614092bc17c156f9251bc2T.jpg","images": ["https://ae-pic-a1.aliexpress-media.com/kf/S44533c20a8614092bc17c156f9251bc2T.jpg"],"categoryIds": ["202192403", "100001205", "440504"],"shipFrom": "CN","shipTo": "US","delivery": "Fastest delivery in 6 days","freeShipping": false,"sellingPoints": ["Fastest delivery in 6 days"],"launchDate": "2026-09-01 00:00:00","productDetails": null,"productReviews": null}
Query and input reference
| Input | Type | Required | Default | Accepted values | Description |
|---|---|---|---|---|---|
searchQueries | string[] | no* | — | Non-empty strings | Product search phrases |
productUrls | string[] | no* | — | Item or wholesale URLs | Item URLs add ids; wholesale URLs become queries |
productIds | string[] | no* | — | Numeric ids | Direct product ids |
maxItems | integer | no | 0 | ≥ 0 | Max product rows; 0 = no cap |
region | string | no | US | US, DE, GB, … | Ship-to country for prices and locale |
currency | string | no | preset | 3-letter code | Override display currency |
locale | string | no | preset | e.g. en_US | Override locale |
sort | string | no | default | default, orders, price_asc, price_desc | Search sort |
categoryId | string | no | — | Category id | Narrow search |
minPrice | number | no | — | Number | Min price in ship-to currency |
maxPrice | number | no | — | Number | Max price in ship-to currency |
shipFrom | string | no | — | Country code | Ship-from filter |
freeShippingOnly | boolean | no | false | true/false | Free shipping filter |
switches | string[] | no | [] | e.g. freeshipping | Extra search refine codes |
includeProductDetails | boolean | no | false | true/false | Fill productDetails (parallel enrichment) |
includeReviews | boolean | no | false | true/false | Fill productReviews (parallel enrichment) |
maxReviewsPerProduct | integer | no | 20 | ≥ 0 | Cap reviews per product; 0 = all pages |
reviewFilter | string | no | all | all, image, local, … | Review subset |
reviewSort | string | no | default | default, newest | Review order |
concurrency | integer | no | 5 | 1–20 | Parallel products when details/reviews enabled |
proxyConfiguration | object | no | US residential | Apify proxy | Use residential; match proxy country to region |
*At least one of searchQueries, productUrls, or productIds is required.
Minimal request
{"searchQueries": ["usb c cable"],"maxItems": 100,"region": "US","proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"],"apifyProxyCountry": "US"}}
Advanced request (search + details + reviews)
{"searchQueries": ["wireless earbuds"],"maxItems": 50,"region": "DE","sort": "orders","freeShippingOnly": true,"includeProductDetails": true,"includeReviews": true,"maxReviewsPerProduct": 20,"reviewFilter": "image","reviewSort": "newest","concurrency": 8,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"],"apifyProxyCountry": "DE"}}
Retrieve the data through the API
- Start the Actor with JSON input (Apify Console, CLI, or HTTP API).
- Wait for the run to finish, or use the synchronous dataset endpoint for small jobs.
- Read items from the run’s default dataset (
GET /v2/datasets/{datasetId}/items). - Paginate with
offsetandlimit, or export the full dataset from the Console.
Python (Apify client)
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_API_TOKEN>")run = client.actor("datascrapers/aliexpress-scraper").call(run_input={"searchQueries": ["usb c cable"],"maxItems": 25,"region": "US","proxyConfiguration": {"useApifyProxy": True,"apifyProxyGroups": ["RESIDENTIAL"],"apifyProxyCountry": "US",},})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["productId"], item.get("price"), item.get("currency"))
cURL (start run)
curl -s -X POST "https://api.apify.com/v2/acts/datascrapers~aliexpress-scraper/runs" \-H "Authorization: Bearer <YOUR_APIFY_API_TOKEN>" \-H "Content-Type: application/json" \-d '{"searchQueries":["usb c cable"],"maxItems":10,"region":"US"}'
Agent-oriented docs: aliexpress-scraper.md. OpenAPI spec is published on the Actor API tab.
Data quality and record handling
- Completeness: Search cards populate most listing fields.
rating,sold, and price may be null on sparse cards. Optional columns staynullwhen disabled or when a single product fails enrichment. - Fail-soft: One bad product page or review page does not stop the run; that product’s optional object is set to
nulland processing continues. - Deduplication: Within a run, the same
productIdis emitted once even if it appears in multiple queries or pages. - Cross-run dedup: Not built in. Merge datasets on
productIdin your warehouse or use Apify webhooks to append only new ids. - Retries: Transient network errors are retried on HTTP fetches; block pages skip the affected request.
- Derived fields:
productDetailsmay overlay listing price/rating from search; reviewstarsare normalized to a 0–5 scale from storefront scores.
Run statistics (recordsScraped, detail and review charge counts, timestamps) are stored in the key-value store under run-stats.
Export and pipeline examples
| Destination | Recommended method | Typical use |
|---|---|---|
| PostgreSQL / Supabase | Dataset API + scheduled Actor | Product catalog monitoring |
| Google Sheets | Apify integration or CSV export | Merchandising samples |
| S3 / cloud storage | Apify dataset export or webhook | Raw JSON archive |
| BI tools (Looker, Power BI) | CSV/Excel export | Price and rating dashboards |
Pricing and cost examples
This Actor uses pay-per-event billing on the Apify platform. Placeholder Store prices (verify in Console before budgeting):
| Event | What triggers it | Placeholder unit price (Free tier) |
|---|---|---|
| Actor start | Each run | $0.00005 |
product | Each product row pushed to the dataset | $0.001 |
product-detail | Each product where productDetails is returned | $0.001 |
review | Each review object inside productReviews.reviews | $0.001 |
Higher Apify plans may receive tier discounts on result events. Residential proxy usage is billed separately through Apify proxy consumption.
Illustrative totals (product event only, details/reviews off)
| Products | Estimated product event cost |
|---|---|
| 1,000 | $1.00 |
| 10,000 | $10.00 |
Illustrative totals (100 products, details on, 20 reviews each)
| Charge | Count | Placeholder cost |
|---|---|---|
| Product rows | 100 | $0.10 |
| Details | 100 | $0.10 |
| Reviews | 2,000 | $2.00 |
| Total (events only) | ~$2.20 |
Estimates exclude compute, proxy, and plan discounts. Edit event prices in the Apify Console monetization tab.
Limitations and responsible data use
- Collects data exposed on the public AliExpress storefront for the selected ship-to context; availability and fields change when AliExpress updates its site.
- You are responsible for complying with AliExpress terms, applicable commerce and privacy laws, and your own data retention policies.
- Reviews and ratings may reference aggregated or translated content; do not treat them as verified purchase records without your own validation.
- The Actor does not guarantee complete marketplace coverage for a query—use pagination via repeated runs with different filters if you need broader samples.
Dataset questions
What does one dataset item represent?
One AliExpress product listing. Reviews and extra gallery metadata are nested objects on that same item, not separate rows.
Which field should I use as a unique identifier?
Use productId as the primary key. Pair it with region or shipTo if you compare the same id across countries.
Are fields nullable or conditional?
Yes. Listing metrics from search may be null. productDetails and productReviews are null unless you enable them. Individual review fields can be null when buyers post anonymously or without text.
Can I retrieve the records as CSV or JSON?
Yes. Export from the Apify Console or call the Dataset API with format=csv or format=json.
How do I paginate large datasets?
Use dataset API offset and limit parameters, or download split files from the Console export dialog.
Does the Actor return historical data?
Each run captures a current snapshot. Store dataset exports yourself if you need history.
What counts as a billable result?
Each product row bills the product event. Enabling details bills product-detail once per successful enrichment. Each review object returned in productReviews.reviews bills one review event.
Related datasets from Data Scrapers
| Actor | Relationship |
|---|---|
| Amazon Search Scraper | Compare marketplace search results and pricing fields |
| HomeDepot Scraper | Retail product catalog with sku-oriented listings |
Browse the full Data Scrapers Store profile for more commerce and catalog Actors.
Data Scrapers support
Need an additional field, ship-to preset, or export workflow? Contact Data Scrapers at stardustspotlight@gmail.com. Include a sample AliExpress URL or search phrase, required fields, expected product volume, and whether you need nested reviews or details on every row.
