AliExpress Product Details Scraper & AliExpress Scraper API
Pricing
from $3.00 / 1,000 product records
AliExpress Product Details Scraper & AliExpress Scraper API
AliExpress product data by product URL or item id, no login: price, original price and stock for every SKU, product variants with images, AliExpress shipping to your country with carrier, fee and dates, store and seller ids, rating, review count, orders sold, images, video, specs, category.
Pricing
from $3.00 / 1,000 product records
Rating
0.0
(0)
Developer
Hyperbach
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
13 hours ago
Last modified
Categories
Share
AliExpress product details from a list of product URLs or item ids, logged out, for the country and currency you choose: every SKU with its own price, original price, stock and purchase limit; the variant matrix with swatch images and colours; the shipping options to your country with carrier, fee, delivery days and dates, or a clear not_shippable; both store ids, the store's rating, positive rate, followers and sales; rating, review count and orders sold; images, video, specifications, category ids and names; coupons, promotions and the return policy; the description links, the text on request, and the manuals. One row per product and ship-to country, and a free row that says why for an id that does not exist or a product not sold there. Save your list as a task and run it every day: a price and stock check of 5 products. No login, no AliExpress account, no API key, no browser, proxies handled for you.
Why this AliExpress product scraper
- The shipping state is typed, never an empty box. In our test of the lane, five of six full rows returned one shipping option with carrier, fee and days all null for a product the store does not ship to the US, and one gave a GBP fee for a US ship-to. Here
shipping_statussaysshippablewith the options (carrier, code, fee, free, ship-from, delivery days, the ETA dates, tracking, warehouse, the on-time guarantee) ornot_shippablewith the reason, and a product not sold in the country at all is a freeunavailablerow. Ready-made: AliExpress prices and shipping to Germany in EUR, VAT included. - Both store ids, each in its own column. AliExpress carries two numbers for a store: the one in the store URL (
store_id) and the seller's store entity (store_number). Three rivals put the second in a field called storeId and one put the seller id there. Here both are named, with the seller id, the store name and URL, the country, the opening date, the level, the positive-feedback rate and count, the feedback count, the store rating, the sales of the last 180 days and the followers. - Several countries and currencies in one run. No rival takes a list of countries. Here
shipToCountriesreads each product once per country, each row in the country's own currency unless you set one: the price a shopper in Germany, Brazil or the UK sees, with that country's shipping options, side by side, and a free row where it is not sold. Ready-made: One AliExpress product in 8 countries: sold there or not, price. - Every SKU, with its matrix. Each variant with its own price, original price, stock, availability, purchase limit, image and, where the listing offers a choice of warehouse, its ship-from country (133 SKUs for a pair of earbuds, 208 for a filament); the attribute matrix with property ids, value ids, swatch images and hex colours where the seller set them. Ready-made: AliExpress catalogue sync: every SKU with its price and stock.
- No silent failures, no charge for a miss. A dead id is a free
not_foundrow (the source's own SITEM_NOT_EXIST); a product not sold in your country a freeunavailablerow; a value that is not a product a freeinvalidrow; the US-site form of a product you already named a freeduplicaterow. The slider wall AliExpress puts on an IP after about ten records is passed by probing fresh exits and rotating, and a product that could not be read is never charged.fields_not_shownnames what a record did not carry, so a null never reads as a broken field. - The price, said for whom it is. AliExpress shows a visitor who is not logged in its new-shopper offer: the price of a first order, $1.09 on 20 of 24 ordinary products in our US sample. Each row says so in
new_shopper_priceand names the offer inpromotions, next to the original price, so a deal for new shoppers never reads as the price everyone pays. - One call per product, no browser. The record is one signed call to the product gateway (about 25 KB on the wire), so a run reads about 12 products a minute per exit and the price carries no browser or platform usage on top.
Who it's for
- Dropshippers and sellers — sync a catalogue: every SKU with price, stock and purchase limit, the images and the variant matrix, the shipping options and days to your customers' country.
- Price and stock monitors — one product in several countries and currencies in one run, on a schedule; the discount, the lowest price of the last 30 days on EU views, coupons and promotions.
- Sourcing and supplier vetting — the store behind a product: both ids, level, positive rate, followers, sales in 180 days, opening date, country; the orders sold and the rating of the listing.
- Developers and agents — typed fields, one row per input in input order, a free labelled row for every miss, and a run summary with the entry rate to check a pipeline against.
Quick start
Products by URL or item id
{"products": ["https://www.aliexpress.com/item/1005009383937691.html","1005006959700436"]}
Prices for a country, in its currency
{"products": ["1005006959700436"],"shipTo": "DE","language": "de_DE"}
One product in three countries
{"products": ["1005006959700436"],"shipTo": "US","shipToCountries": ["GB","DE"]}
With the description text
{"products": ["1005009383937691"],"includeDescription": true,"maxItems": 10}
Output
One row per product and ship-to country you asked (or a free row saying why there is none):
| field | meaning |
|---|---|
input | The value as you gave it (the first form, when the same product was given several ways). |
input_index | The input's 1-based position in your list. |
inputs_merged | Later values of your list that named the same product (its URL after its id); read once, one row. |
status | ok = the record was served (charged). Free rows: not_found (no product with this id: the source's SITEM_NOT_EXIST), unavailable (not sold in the ship-to country: SITEM_BAN_NO_AVAIL_SKU), invalid (not an item id or product URL), duplicate (the US-site form of a product another input already named), failed (the source's own error, a view of another country than the one asked, or no served exit in 40 fresh ones; read again later). |
status_detail | Why a row has no record, in words; on an ok row, a note about the record (not shippable, read by its US local id, the description file not loaded). |
scraped_at | When the row was read (UTC). |
product_id | The product's global item id (1005…), read from the record even when you gave the US-site local id. |
product_id_given | The id your input named (the global 1005… form or the US-site local 3256… form). |
url | The product page: https://www.aliexpress.com/item/<item id>.html. |
ship_to | The two-letter ship-to country this row was read for. |
currency | The ISO currency of every price on this row (the one you asked, or the ship-to country's own). |
language | The language of the texts on this row as asked (en_US, de_DE, …). The row is the ship-to country's own view (prices, currency, VAT note, stock, shipping) in this language. |
title | The product title, in the language asked. |
brand | The brand, from the specifications' brand attribute (Brand Name), when the seller set one. |
price_min | The lowest sale price over the SKUs (sold-out SKUs included), as a number in currency: the price AliExpress shows a visitor who is not logged in, which on most US, UK, Brazil and Australia views is its new-shopper offer (new_shopper_price). |
price_max | The highest sale price over the SKUs (sold-out SKUs included: skus[].available tells them apart). |
original_price_min | The lowest original (strike-through) price over the SKUs; null when the view shows none (EU views show the 30-day lowest price instead). |
original_price_max | The highest original price over the SKUs. |
discount_percent | The discount the source states for the listing (its own figure), else the selected SKU's saving against its original price. |
price_text | The selected SKU's sale price as the page writes it ($28.24, £21.96, 29,79€). |
original_price_text | The selected SKU's original price as written. |
lowest_price_30d | The lowest price of the last 30 days, when the view carries it (EU price rule: German, French … views). |
price_notes | The notes under the price ("Price includes VAT", "Extra 2% off with coins"). |
new_shopper_price | true when the view shows AliExpress's new-shopper offer on this product (a promotions entry of kind new_user_platform_allowance_atm, "New shoppers save $2.22"): the sale prices of the row are then the price of a first order by a new shopper; original_price_* is the price before it. false when the view shows no such offer. |
sku_count | How many SKUs (variants) the product has. |
skus_available | How many SKUs are available for sale (in stock and salable). |
stock_total | The total available stock over the SKUs, as the source states it. |
max_buy | The purchase limit per shopper for the selected SKU (Max. 1 pcs/shopper). |
sold_by_lot | true when the product is sold by lot: every price is per lot, not per piece. The lot size is in the title or the SKU names; the row has no count of its own. |
selected_sku_id | The SKU the product page opens on (its price is price_text). |
skus | Every SKU: sku_id, attributes (property name → value), ships_from (the warehouse country code, when the listing has a Ships From choice), price, original_price (null on a SKU the view shows no strike price for), price_text, original_price_text, lowest_price_30d, stock, available, max_buy, image. |
sku_properties | The variant matrix: each property with property_id, name, ships_from (true for the warehouse property) and its values (value_id, name, catalog_name, image, color hex, ships_from_code). |
rating | The listing's star rating (0–5). |
review_count | The number of reviews the rating is over. |
sold_text | The orders-sold text as shown ("10,000+ sold"; on aggregate listings "This seller: 414 sales |
sold_min | The floor of the sold bucket ("10,000+" → 10000). |
seller_sold | On an aggregate listing, this seller's own sales count. |
wishlist_count | How many shoppers wish-listed the product. |
main_image | The main product image (the CDN link). |
images | The product's image gallery (CDN links, full size). |
video | The product video when the listing has one: url (.mp4), poster, video_id. |
description_video_url | A second video inside the description, when the listing has one. |
specs | The specifications table: name, value (in the language asked). |
category_id | The category leaf id. |
category_path | The category id path, root first (15, 1541, 100003887). |
category_names | The category names, root first, when the source fills the breadcrumb for the listing (about 1 product in 20); null otherwise. |
category_breadcrumb | The breadcrumb items when the source fills them: id, name, url. Their ids are the storefront's display tree and can differ from category_path in number and value (one product: 4 breadcrumb levels, 3 path ids): match the names by id, never by position. |
shipping_status | shippable (the options are in shipping_options), not_shippable (the store's warehouses do not deliver to the ship-to country), or null when the record carries no delivery entry. |
shipping_count | How many shipping options the ship-to country has. |
shipping_options | Each option: carrier, company, code, fee (0 when free), fee_text, free, currency, ship_from / ship_from_code, ship_to / ship_to_code, delivery_days_min / delivery_days_max, eta_min / eta_max (as shown), tracking, warehouse, guaranteed_days, delay_compensation, stock. |
store_id | The store id as it appears in the store URL of the view (1104486231 on the US view). |
store_number | The seller's store entity number (storeNum: 1104484266 for the same store) — the other id rivals call storeId. |
store_name | The store name. |
store_url | The store's page. |
store_logo | The store's logo (CDN link). |
seller_id | The seller's member id (sellerAdminSeq). |
store_country | The seller's country as the store block names it. |
store_opened_at | When the store opened (the source's own timestamp). |
store_years | Years the store has been open, as the source counts them. |
store_level | The seller level code (25-s). |
store_top_rated | true for a Top Rated Seller. |
store_positive_rate | The share of positive feedback, in percent. |
store_positive_count | The store's positive-feedback number as the source gives it (sellerPositiveNum). It is not the numerator of store_positive_rate (one store: 10,561 against 438,680 feedback and a 97.3 % rate): use the rate for the share. |
store_feedback_count | The store's feedback number as the source gives it (sellerTotalNum; other tools call it ratingCount or feedbackCount). See store_positive_count. |
store_score | The seller score the source states. |
store_rating | The store rating (0–5) when the store card shows one: the card shows 2–4 lines, and 9 of 24 ordinary products in our sample had a rating line. |
store_sold_180d | The store's sales in the last 180 days, as shown ("70,000+"). |
store_scores | The store card's lines as the page shows them ("# sold in 180 days", "positive reviews", "store rating", "Communication" …). |
store_followers | How many shoppers follow (wish-listed) the store. |
coupons | The coupon block's offers when the listing has them: text ("$4.00 off on $35.00"), code (the promotion kind), promotion_id. |
promotions | The price banner's promotions for the selected SKU: kind, text ("New shoppers save $54.15", "Save $58.62"), ends_at (ms since the epoch when the banner has a timer). Kind new_user_platform_allowance_atm is the new-shopper offer (new_shopper_price). |
return_policy | The after-sale line ("Free returns within 15 days"). |
delivery_guarantee | The delivery guarantee lines ("$1.00 coupon code if delayed", "Refund if package lost" …). |
description_url | The signed link to the product description (desktop); valid for a while after the read. |
description_mobile_url | The signed link to the mobile description. |
description_text | With includeDescription: the description's text, paragraphs kept, tags stripped; null when the description is made only of images (11 of 24 ordinary products in our sample). |
description_images | With includeDescription: the description's image links. |
documents | The listing's manuals and documents: title, type (PDF), url. |
fields_not_shown | The record's main fields that are null on this row (the source did not carry them), so a null never reads as a broken field. |
Example record:
{"input": "3256809479333689","input_index": 4,"inputs_merged": null,"status": "ok","status_detail": "the id given (3256809479333689) is the US-site local id of this product: the record was read from the US site (fewer service blocks); the global id is 1005009665648441","scraped_at": "2026-10-10T21:09:07Z","product_id": "1005009665648441","product_id_given": "3256809479333689","url": "https://www.aliexpress.com/item/1005009665648441.html","ship_to": "US","currency": "USD","language": "en_US","title": "KINGROON 10KG PLA/ ABS/ PETG Filament 1.75mm Black White Gray , Wholesale 10 Rolls PLA ABS PETG Plastic For 3D Printer","brand": "KINGROON","price_min": 79.27,"price_max": 89.89,"original_price_min": 194.5,"original_price_max": 216.62,"discount_percent": 59,"price_text": "$79.27","original_price_text": "$194.50","lowest_price_30d": null,"price_notes": null,"new_shopper_price": true,"sku_count": 12,"skus_available": 10,"stock_total": 1642,"max_buy": 1,"sold_by_lot": false,"selected_sku_id": "12000055960060417","skus": [{"sku_id": "12000055960060414","attributes": {"Color": "PLA 10kg White","Ships From": "United States"},"ships_from": "US","price": 89.79,"original_price": 216.62,"price_text": "$89.79","original_price_text": "$216.62","lowest_price_30d": null,"stock": 280,"available": true,"max_buy": 1,"image": "https://ae-pic-a1.aliexpress-media.com/kf/Se140053a0a7a4119a12e2827b8478359J.jpg"},{"sku_id": "12000055960060415","attributes": {"Color": "ABS 10kg White","Ships From": "United States"},"ships_from": "US","price": 87.89,"original_price": 209.76,"price_text": "$87.89","original_price_text": "$209.76","lowest_price_30d": null,"stock": 0,"available": false,"max_buy": 0,"image": "https://ae-pic-a1.aliexpress-media.com/kf/S1d3d1227f16c46a6b7c7120094e59a74P.jpg"},{"sku_id": "12000055960060412","attributes": {"Color": "PETG 10kg Gray","Ships From": "United States"},"ships_from": "US","price": 81.9,"original_price": 196.44,"price_text": "$81.90","original_price_text": "$196.44","lowest_price_30d": null,"stock": 320,"available": true,"max_buy": 1,"image": "https://ae-pic-a1.aliexpress-media.com/kf/S90874171adbe40fdab5f40255a352f13d.jpg"},{"sku_id": "12000055960060413","attributes": {"Color": "PLA 10kg Mix","Ships From": "United States"},"ships_from": "US","price": 88.97,"original_price": 216.48,"price_text": "$88.97","original_price_text": "$216.48","lowest_price_30d": null,"stock": 10,"available": true,"max_buy": 1,"image": "https://ae-pic-a1.aliexpress-media.com/kf/S93c627a4465e46cc92bbe7f57fa00d54x.jpg"},{"sku_id": "12000055960060410","attributes": {"Color": "ABS 10kg Mix","Ships From": "United States"},"ships_from": "US","price": 88.97,"original_price": 216.48,"price_text": "$88.97","original_price_text": "$216.48","lowest_price_30d": null,"stock": 1,"available": true,"max_buy": 1,"image": "https://ae-pic-a1.aliexpress-media.com/kf/Se92f7c6b67d34850be31b9b6bea58668B.jpg"},{"sku_id": "12000055960060411","attributes": {"Color": "ABS 10kg Black","Ships From": "United States"},"ships_from": "US","price": 87.79,"original_price": 212.12,"price_text": "$87.79","original_price_text": "$212.12","lowest_price_30d": null,"stock": 12,"available": true,"max_buy": 1,"image": "https://ae-pic-a1.aliexpress-media.com/kf/Sed1ad463362e4e4d81f1aa4b238dc932R.jpg"},{"sku_id": "12000055960060408","attributes": {"Color": "PETG 10kg White","Ships From": "United States"},"ships_from": "US","price": 81.8,"original_price": 198.66,"price_text": "$81.80","original_price_text": "$198.66","lowest_price_30d": null,"stock": 390,"available": true,"max_buy": 1,"image": "https://ae-pic-a1.aliexpress-media.com/kf/S835299b5892444f286fea1800f4fdffdR.jpg"},{"sku_id": "12000055960060409","attributes": {"Color": "ABS 10kg Gray","Ships From": "United States"},"ships_from": "US","price": 87.89,"original_price": 209.76,"price_text": "$87.89","original_price_text": "$209.76","lowest_price_30d": null,"stock": 0,"available": false,"max_buy": 0,"image": "https://ae-pic-a1.aliexpress-media.com/kf/S7a36cee721174d1c8c81fb511c448a06w.jpg"},{"sku_id": "12000055960060407","attributes": {"Color": "PLA 10kg Black","Ships From": "United States"},"ships_from": "US","price": 87.03,"original_price": 212.08,"price_text": "$87.03","original_price_text": "$212.08","lowest_price_30d": null,"stock": 197,"available": true,"max_buy": 1,"image": "https://ae-pic-a1.aliexpress-media.com/kf/Sa351c63840c84806b4a11addd0807126W.jpg"},{"sku_id": "12000055960060418","attributes": {"Color": "PETG 10kg Mix","Ships From": "United States"},"ships_from": "US","price": 83.8,"original_price": 203.14,"price_text": "$83.80","original_price_text": "$203.14","lowest_price_30d": null,"stock": 85,"available": true,"max_buy": 1,"image": "https://ae-pic-a1.aliexpress-media.com/kf/S88b41112f0bb4394a23e167b9e8b63843.jpg"},{"sku_id": "12000055960060416","attributes": {"Color": "PLA 10kg Gray","Ships From": "United States"},"ships_from": "US","price": 89.89,"original_price": 214.2,"price_text": "$89.89","original_price_text": "$214.20","lowest_price_30d": null,"stock": 44,"available": true,"max_buy": 1,"image": "https://ae-pic-a1.aliexpress-media.com/kf/S766388ab24464c54be630c8d8a509a24F.jpg"},{"sku_id": "12000055960060417","attributes": {"Color": "PETG 10kg Black","Ships From": "United States"},"ships_from": "US","price": 79.27,"original_price": 194.5,"price_text": "$79.27","original_price_text": "$194.50","lowest_price_30d": null,"stock": 303,"available": true,"max_buy": 1,"image": "https://ae-pic-a1.aliexpress-media.com/kf/Sa9a7f432d9a4415b842f010364da76bdw.jpg"}],"sku_properties": [{"property_id": 14,"name": "Color","ships_from": false,"values": [{"value_id": 350686,"name": "PLA 10kg Mix","catalog_name": "Brown","image": "https://ae-pic-a1.aliexpress-media.com/kf/S93c627a4465e46cc92bbe7f57fa00d54x.jpg","color": null,"ships_from_code": null},{"value_id": 350852,"name": "PETG 10kg Black","catalog_name": "Orange","image": "https://ae-pic-a1.aliexpress-media.com/kf/Sa9a7f432d9a4415b842f010364da76bdw.jpg","color": "#FFA500","ships_from_code": null},{"value_id": 10,"name": "PETG 10kg White","catalog_name": "Red","image": "https://ae-pic-a1.aliexpress-media.com/kf/S835299b5892444f286fea1800f4fdffdR.jpg","color": "#FF0000","ships_from_code": null},{"value_id": 29,"name": "PLA 10kg White","catalog_name": "WHITE","image": "https://ae-pic-a1.aliexpress-media.com/kf/Se140053a0a7a4119a12e2827b8478359J.jpg","color": "#FFFFFF","ships_from_code": null},{"value_id": 173,"name": "PETG 10kg Gray","catalog_name": "Blue","image": "https://ae-pic-a1.aliexpress-media.com/kf/S90874171adbe40fdab5f40255a352f13d.jpg","color": "#0080FF","ships_from_code": null},{"value_id": 175,"name": "PETG 10kg Mix","catalog_name": "green","image": "https://ae-pic-a1.aliexpress-media.com/kf/S88b41112f0bb4394a23e167b9e8b63843.jpg","color": "#007000","ships_from_code": null},{"value_id": 193,"name": "PLA 10kg Black","catalog_name": "black","image": "https://ae-pic-a1.aliexpress-media.com/kf/Sa351c63840c84806b4a11addd0807126W.jpg","color": "#000000","ships_from_code": null},{"value_id": 366,"name": "ABS 10kg Black","catalog_name": "YELLOW","image": "https://ae-pic-a1.aliexpress-media.com/kf/Sed1ad463362e4e4d81f1aa4b238dc932R.jpg","color": "#FFFF00","ships_from_code": null},{"value_id": 496,"name": "ABS 10kg Gray","catalog_name": "PURPLE","image": "https://ae-pic-a1.aliexpress-media.com/kf/S7a36cee721174d1c8c81fb511c448a06w.jpg","color": "#6C3365","ships_from_code": null},{"value_id": 691,"name": "PLA 10kg Gray","catalog_name": "GRAY","image": "https://ae-pic-a1.aliexpress-media.com/kf/S766388ab24464c54be630c8d8a509a24F.jpg","color": "#999","ships_from_code": null},{"value_id": 1052,"name": "ABS 10kg Mix","catalog_name": "Pink","image": "https://ae-pic-a1.aliexpress-media.com/kf/Se92f7c6b67d34850be31b9b6bea58668B.jpg","color": "#FFC0CB","ships_from_code": null},{"value_id": 202559811,"name": "ABS 10kg White","catalog_name": "Golden","image": "https://ae-pic-a1.aliexpress-media.com/kf/S1d3d1227f16c46a6b7c7120094e59a74P.jpg","color": null,"ships_from_code": null}]},{"property_id": 200007763,"name": "Ships From","ships_from": true,"values": [{"value_id": 201336106,"name": "United States","catalog_name": null,"image": null,"color": null,"ships_from_code": "US"}]}],"rating": 4.9,"review_count": 600,"sold_text": "This seller: 4,000+ sales | Total sales: 5,000+","sold_min": 5000,"seller_sold": 4000,"wishlist_count": 92,"main_image": "https://ae-pic-a1.aliexpress-media.com/kf/S6196462c42804df3bde6c0e3cdb932b4J.jpg","images": ["https://ae-pic-a1.aliexpress-media.com/kf/S6196462c42804df3bde6c0e3cdb932b4J.jpg","https://ae-pic-a1.aliexpress-media.com/kf/S9707e48f7cd145668e66b5dc9477c1baT.jpg","https://ae-pic-a1.aliexpress-media.com/kf/S4b381151a12248449195f9742fc80d2aw.jpg","https://ae-pic-a1.aliexpress-media.com/kf/S3d910ef34d53468fa72b456246043281x.jpg","https://ae-pic-a1.aliexpress-media.com/kf/Sb03e64bea0684c909085303bbebc8518x.jpg","https://ae-pic-a1.aliexpress-media.com/kf/Se02ffb5cb9974a97a5fd535e5a3b53a74.jpg","https://ae-pic-a1.aliexpress-media.com/kf/S851625bf5d8644728c95c4270ef40a69m.jpg","https://ae-pic-a1.aliexpress-media.com/kf/S5b94d5c5967a46ffbd99ff8908529af4U.jpg"],"video": {"url": "https://video.aliexpress-media.com/play/u/ae_sg_item/3000903266424/p/1/e/6/t/10301/5000593110502.mp4","poster": "https://ae-pic-a1.aliexpress-media.com/kf/S0f5ef2eb5c3b406780acae687d4a375e2.jpg","video_id": "5000593110502"},"description_video_url": null,"specs": [{"name": "High-concerned chemical","value": "none"},{"name": "Shelf Life","value": "1years"},{"name": "Material","value": "PLA/PETG/ABS"},{"name": "Form","value": "Solid"},{"name": "Brand Name","value": "KINGROON"},{"name": "Origin","value": "Mainland China"}],"category_id": "200003885","category_path": ["7","200003879","200003885"],"category_names": null,"category_breadcrumb": null,"shipping_status": "shippable","shipping_count": 1,"shipping_options": [{"carrier": "CAINIAO LARGE PARCEL","company": "CAINIAO LARGE PARCEL","code": "CAINIAO_OVERSEAS_WH_US_LP","fee": 0.0,"fee_text": "free","free": true,"currency": "USD","ship_from": "United States","ship_from_code": "US","ship_to": "United States","ship_to_code": "US","delivery_days_min": 3,"delivery_days_max": 9,"eta_min": "Oct. 13","eta_max": "Oct. 19","tracking": true,"warehouse": "own_warehouse","guaranteed_days": 15,"delay_compensation": "$1.00","stock": 303}],"store_id": "1103665127","store_number": "1103669004","store_name": "Big Save Store","store_url": "https://www.aliexpress.com/store/1103665127","store_logo": "https://ae-pic-a1.aliexpress-media.com/kf/Se90fceedf9d34ad1a8979283c98a1e45I/144x144.png","seller_id": "2681210425","store_country": "China","store_opened_at": "2024-04-03 01:06:31","store_years": 2,"store_level": "0","store_top_rated": false,"store_positive_rate": 0.0,"store_positive_count": 0,"store_feedback_count": 0,"store_score": 0,"store_rating": null,"store_sold_180d": null,"store_scores": null,"store_followers": 208,"coupons": null,"promotions": [{"kind": "girdle_bigsale_welcomedeal","text": "Save $115.23","ends_at": 1791777599000},{"kind": "new_user_platform_allowance_atm","text": "Event","ends_at": null}],"return_policy": "Free returns within 90 days","delivery_guarantee": ["$1.00 coupon code if delayed","Refund if package lost","Refund if items damaged","Refund if no delivery in 20 days"],"description_url": "https://pdp.aliexpress-media.com/product/description/pc/v2/en_US/desc.htm?productId=1005009665648441&key=S4ceeb6b3d67e4469a441fc7ab672bb37R.zip&token=c48aefd01bfcdebdb96a07f08e3f6665&sellerId=2681210425","description_mobile_url": "https://pdp.aliexpress-media.com/product/description/msite/v2/en_US/desc.htm?productId=1005009665648441&key=S4ceeb6b3d67e4469a441fc7ab672bb37R.zip&token=c48aefd01bfcdebdb96a07f08e3f6665&sellerId=2681210425","description_text": null,"description_images": null,"documents": [{"title": "User manual (PDF)","type": "PDF","url": "https://ae-pic-a1.aliexpress-media.com/kf/S8f154d11492942539b98b9af55ef685aw.pdf"}],"fields_not_shown": ["store_rating","coupons"]}
Pricing
Pay only for the product records a run delivers, with no start fee and no platform usage billed to you. Prices fall with your Apify plan.
| per 1,000 | Free | Starter | Scale | Business |
|---|---|---|---|---|
Product record (product) | $6.00 | $5.10 | $4.20 | $3.00 |
A product record is $6.00 per 1,000 on the Free plan ($0.006 a product) and $3.00 on Business. One record is one product read for one ship-to country: a product read for three countries with shipToCountries is three records. A record that AliExpress served but that does not ship to your country is a record (shipping_status not_shippable, every other field filled). Free: an id that does not exist (not_found), a product not sold in the country (unavailable), a value that is not a product (invalid), the US-site form of a product you already named (duplicate), a record the source did not serve or served for another country (failed), and a run that failed before its first row. maxItems counts charged records; before the first request the log says the most the run can cost at your plan's prices. Enterprise plans have their own rates — the Actor's Pricing tab shows the price for your plan.
Usage patterns
- A list check — Paste hundreds of product URLs or item ids: each comes back as one row in your order (
input_index) or as a freenot_found/unavailable/invalidrow. The same product given as an id and as its URL is one row (inputs_merged); the US-site URL of a product (aliexpress.us/item/3256…) is read on its own and comes back as a freeduplicaterow when the product was already named. - Markets —
shipTosets the country every price, stock figure and shipping option is computed for;currencysets the currency of every price (empty = the country's own);languagethe locale of the texts.shipToCountriesadds a row per product for each listed country. Checkshipping_statuson each row:shippablecomes with the options,not_shippablewith the reason instatus_detail. Each row is the ship-to country's own view (its prices, currency, VAT note, stock and shipping) in the language asked; an answer the source gives for another country is a freefailedrow, never charged. Ready-made: AliExpress prices and shipping to Germany in EUR, VAT included. - Variants — Every row lists its SKUs (
skus: id, attributes, price, original price, stock, availability, purchase limit, ship-from code, image) and the attribute matrix (sku_properties: property id and name, each value with its id, name, catalogue name, swatch image, hex colour, ship-from country code).selected_sku_idis the variant the page opens on;price_min/price_maxare over all SKUs, sold-out ones included (availablefalse on the SKU);skus_availablecounts the SKUs in stock. - On a schedule — Save a task with your list and schedule it daily or hourly: each run reads every product again and charges each, with the time of the read in
scraped_at; compare runs byproduct_idandship_to. Ready-made: AliExpress price and stock check: 5 products, run it daily, AliExpress product details by URL: price, SKUs, shipping, store. - Images, video and description — Every row has the main image, the full-size gallery, the video (an MP4 link and its poster) when the listing has one, each SKU's image and the variant swatches: links to AliExpress's servers, no files downloaded.
includeDescriptionadds the seller's description as text, paragraphs kept, and its image links, at no extra charge; a description made only of images gives no text. Ready-made: AliExpress product images and video: gallery, MP4, swatches, AliExpress product description: the text and the images.
Input configuration
| field | type | default | what it does |
|---|---|---|---|
products | array | [] | One product per line, as a product URL on any AliExpress site (https://www.aliexpress.com/item/1005009383937691.html, aliexpress.us/item/3256809197622939.html, de.aliexpress.com/item/…) or as a bare item id (1005009383937691). The same product given several ways is one row. A value that is not a product (a search, category or store URL, a share link, a typo) gets a free row that says why. |
shipTo | string | "US" | The two-letter country the products are read for (US, GB, DE, BR, …): prices, stock, availability and the shipping options are the ones a shopper there sees. A product the store does not ship there comes back with its full record and shipping_status = not_shippable; a product not sold there at all is a free unavailable row. |
shipToCountries | array | [] | Compare one product across markets: each product is also read for every country listed here (two-letter codes), one row per product and country, each in that country's own currency unless currency is set. Empty = the ship-to country above only. |
currency | string | "" | A three-letter currency code for every price (USD, EUR, GBP, BRL, …). Empty = each row in its ship-to country's own currency (USD for US, GBP for GB, EUR for DE, …); the row says which one it used. |
language | string | "en_US" | The locale of the texts (title, specifications, attribute names, shipping and service lines): en_US, de_DE, es_ES, fr_FR, pt_BR, ru_RU, … |
includeDescription | boolean | false | Read the product's description file (one more small call per product) and add its text and image links to the row (description_text, description_images). The signed description links are on every row either way. |
maxItems | integer | 0 | Stop after this many product records (charged rows; the free rows of misses do not count). 0 = no cap. |
Errors
A run does not fail because of your input. When an input cannot be used — a date that is not a date, an id in the wrong form, two settings that contradict each other — the run ends Succeeded, charges nothing, and says what to change:
- the status message starts with
INPUT REJECTED; - the dataset holds one row,
{"error": true, "code": "…", "message": "…"}, and no results; - the key-value store record
ERRORholds the same object.
From code, check error on the first row before reading results.
A search that matches nothing is not an error: the dataset is empty and nothing is charged. A run that ends Failed is a fault on our side, never your input; it charges nothing, and we are alerted.
FAQ
Why is category_names empty on most products?
Because AliExpress fills the breadcrumb names for a few listings only (2 of 44 products in our measurement; the product page itself shows "This product belongs to Home" for the others). The category leaf id and the id path are on every row; the names come when the source carries them, and the category pages add none.
What does not_shippable mean, and is it charged?
The store's warehouses do not deliver to the country you asked: the source marks the delivery entry unreachable. The row is a full record (prices, SKUs, stock, store, images, specifications) and is charged as one; only the shipping options are missing. A product that is not sold in the country at all is a free unavailable row (the source's SITEM_BAN_NO_AVAIL_SKU).
Why is the price $1.09 on so many products?
Because AliExpress shows a visitor who is not logged in its new-shopper offer: the price of a first order (often $1.09, or the original price minus "New shoppers save $X"). In our sample of 24 ordinary US products 22 carried it; the UK, Brazil and Australia views show it too, the German, French, Spanish and Polish views did not. Each row says so in new_shopper_price and names the offer in promotions; original_price_min / original_price_max are the prices before it. The price a returning, logged-in shopper pays was not on the logged-out record in our tests, and this Actor uses no account.
Is the sold count exact?
No: AliExpress shows a bucket ("10,000+ sold") on a product, never the exact number; sold_min is the bucket's floor. On aggregate listings the text also names the seller's own count ("This seller: 414 sales | Total sales: 10,000+"): that number is seller_sold.
Are reviews included?
The rating and the review count are on every row. Review rows (text, photos, country) are another job with its own actors; this one reads the product record.
Why do some runs take longer than others?
AliExpress puts a slider wall on an IP after about ten product records and lets about 1 fresh IP in 6 through in a good hour, 1 in 14 in a bad one. The Actor probes fresh exits with an ordinary product and keeps a served one for 8 records, so a run's time depends on the hour's entry rate; the run summary (entry_window) shows the rate of your run. A run never waits on a refused IP.
What is charged?
A product record per row that carries one (status ok), per ship-to country asked. Free: not_found, unavailable, invalid, duplicate and failed rows, and a run that failed before its first row; a run that stops early (a timeout, an abort) is charged for the rows it delivered. maxItems is exact; before the first request the log says the most the run can cost at your plan's prices.
Can an AI agent use it (MCP)?
Yes. Apify's MCP server (https://mcp.apify.com) offers Store Actors as tools to Claude, Cursor and other MCP clients: add this Actor and the agent sends products and gets the rows back.
Integration
JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_TOKEN' });const run = await client.actor('hyperbach/aliexpress-product-details-scraper').call({"products": ["https://www.aliexpress.com/item/1005009383937691.html", "1005006959700436"]});const { items } = await client.dataset(run.defaultDatasetId).listItems();
Python
from apify_client import ApifyClientclient = ApifyClient('YOUR_TOKEN')run = client.actor('hyperbach/aliexpress-product-details-scraper').call(run_input={'products': ['https://www.aliexpress.com/item/1005009383937691.html', '1005006959700436']})items = client.dataset(run['defaultDatasetId']).list_items().items
CLI
$apify call hyperbach/aliexpress-product-details-scraper --input '{"products": ["https://www.aliexpress.com/item/1005009383937691.html", "1005006959700436"]}'
REST
curl -X POST "https://api.apify.com/v2/acts/hyperbach~aliexpress-product-details-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN" \-H 'Content-Type: application/json' -d '{"products": ["https://www.aliexpress.com/item/1005009383937691.html", "1005006959700436"]}'
Support
This page is generated from the Actor's schemas and a live sample — it cannot describe a field the Actor does not have.