To scrape AliExpress, run a ready-made Actor in two steps: search by keyword to collect product cards, then read each product page for its variants, stock, shipping and seller. On Scrape.ly both steps run in the cloud with built-in proxies, so you get clean JSON, CSV or Excel rows without a browser, a parser or an AliExpress account.
This guide covers the fields you get, the no-code steps with a Store preset, the same job with curl, Python, Node.js and an AI agent, and two real runs from 26 October 2026: five USB cables between $10 and $20, then the full product pages of three of them. Every number below comes from those runs.
What data you can get from AliExpress
Two Actors split the work the way AliExpress splits its pages. The AliExpress Search Scraper reads search results, one row per product card. The AliExpress Product Scraper reads product pages, one row per product with every variant.
| Search Scraper field | What it holds |
|---|---|
productId, productUrl, productTitle | Product ID, link and title |
price, originalPrice, discount, currency | Card price, price before discount and the discount label |
rating, orders, isTopRated | Star rating, order count and top-rated flag |
shippingFrom, shipping, tags | Ship-from country, shipping label, tags such as Choice |
keyword, page, position | Which search found it and where it ranked |
| Product Scraper field | What it holds |
|---|---|
price, originalPrice, discountPercent | Price band (min, max) across variants, before and after discount |
skus, skuProperties, totalStock | Every variant with its own price, stock and availability |
shipping | Method, fee, free-shipping flag, ship-from, delivery window |
rating, reviewCount, sold | Star rating, review count and the sold label |
store | Shop ID, name, positive-feedback rate, country and opening date |
attributes, images, video, documents, categoryPath | Specs, media and category |
What you won't get: written review text. The product data carries the star rating and the review count, not the reviews themselves.
How to scrape AliExpress without code
- Open the AliExpress Search Scraper in the Scrape.ly Store.
- Pick the USB cables between 10 and 20, 5 products preset. It fills in this input:
{
"keywords": ["usb cable"],
"maxItems": 5,
"minPrice": 10,
"maxPrice": 20,
"sort": "default"
}- Click Start. Our run finished in 4.9 seconds.
- Copy the
productUrlvalues you want, open the AliExpress Product Scraper, paste them into Product URLs, set Ship-to country and Currency, and start it. The one product shipped to Germany preset shows the shape with EUR prices. - Export either dataset as JSON, CSV or Excel.
The input fields that matter most:
keywords: one search per line, typed the way you'd type it into AliExpress.maxItems: products per keyword. Each search page holds about 60 cards.sort:default,orders,price_asc,price_descorrating.minPrice,maxPrice,minRating,minOrders: filters applied to the cards.productUrls(Product Scraper): product links or bare product IDs.shipToandcurrency(Product Scraper): a two-letter country and a three-letter currency. Prices, stock and shipping follow that pair.
How to scrape AliExpress with the API
Create a token under Settings → API & Integrations in the dashboard and store it as SCRAPELY_TOKEN. Both of our runs finished well under 45 seconds, so the synchronous endpoint can start a run and return its rows in one call:
curl -X POST "https://api.scrape.ly/v2/actors/shelfbright~aliexpress-search-scraper/run-sync-get-dataset-items" \
-H "Authorization: Bearer $SCRAPELY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"keywords": ["usb cable"], "maxItems": 5, "minPrice": 10, "maxPrice": 20, "sort": "default"}'The call returns a JSON array; add ?format=csv for CSV. A big job, such as 1,000 products for one keyword (about two to three minutes, per the Actor's README), will outlast the 45-second wait. The call then answers 408 while the run keeps going, and calling again would start a second run. Start those with POST /v2/actors/shelfbright~aliexpress-search-scraper/runs, poll /v2/actor-runs/RUN_ID?waitForFinish=60 until the status is SUCCEEDED, and read /v2/actor-runs/RUN_ID/dataset/items. The API docs show the full flow.
In Python (pip install scrapely-client-python), this script chains both steps: it searches, then reads the product page of every card it found, shipped to the US, with each run capped at 5 cents:
import os
from decimal import Decimal
from scrapely_client import ScrapelyClient
client = ScrapelyClient(os.environ["SCRAPELY_TOKEN"], api_url="https://api.scrape.ly")
search = client.actor("shelfbright/aliexpress-search-scraper").call(
run_input={"keywords": ["usb cable"], "maxItems": 5, "minPrice": 10, "maxPrice": 20},
max_total_charge_usd=Decimal("0.05"),
)
cards = list(client.dataset(search.default_dataset_id).iterate_items())
details = client.actor("shelfbright/aliexpress-scraper").call(
run_input={
"productUrls": [{"url": c["productUrl"]} for c in cards],
"maxItems": len(cards),
"shipTo": "US",
"currency": "USD",
},
max_total_charge_usd=Decimal("0.05"),
)
for p in client.dataset(details.default_dataset_id).iterate_items():
ship = p["shipping"][0] if p["shipping"] else {}
print(p["productId"], p["price"], p["totalStock"], ship.get("fee"), ship.get("deliveryDaysMax"))In JavaScript or Node.js (npm install scrapely-client):
import { ScrapelyClient } from 'scrapely-client';
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN, baseUrl: 'https://api.scrape.ly' });
const run = await client.actor('shelfbright/aliexpress-scraper').call({
productUrls: [{ url: 'https://www.aliexpress.com/item/3256812854147766.html' }],
shipTo: 'US',
currency: 'USD',
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items[0].price, items[0].skus.length, items[0].shipping[0]);The Python client and JavaScript client docs cover paging through large datasets.
With an AI agent (MCP)
Scrape.ly runs a hosted MCP server at https://mcp.scrape.ly. In Cursor, add it to ~/.cursor/mcp.json:
{
"mcpServers": {
"scrapely": {
"url": "https://mcp.scrape.ly",
"headers": { "Authorization": "Bearer YOUR_TOKEN" }
}
}
}In Claude Code, run claude mcp add --transport http scrapely https://mcp.scrape.ly, then /mcp to sign in with OAuth. To give the agent only these two tools, use https://mcp.scrape.ly?actors=shelfbright/aliexpress-search-scraper,shelfbright/aliexpress-scraper. Then ask: "Use scrapely to search AliExpress for usb cable between $10 and $20, open the top 3 products shipped to the US, and give me a table of price range, stock, shipping fee and delivery days." The MCP docs list the other clients.
A real run: USB cables from search to product page
We ran the search preset on 26 October 2026. It saved 5 products in 4.9 seconds:
| Product (shortened) | Price | Before discount | Discount | Rating | Orders | Ships from |
|---|---|---|---|---|---|---|
| CABLETIME 3-pack 240W USB-C to USB-C | $13.93 | $43.67 | -68% | 5 | 12 | US |
| AUFU 2-pack 240W USB-C to USB-C | $11.52 | $33.45 | -65% | 4.9 | 1,137 | US |
| 3-pack 120W/100W cables with LED display | $13.33 | $26.66 | -49% | 4.9 | 261 | CN |
| Baseus 3-in-2 100W cable | $14.42 | $37.33 | -61% | 5 | 882 | CN |
| 8-pack 100W 3-in-1 nylon braided | $11.85 | $45.74 | -74% | 5 | 29 | US |
Then we passed products 2 to 4 to the Product Scraper with shipTo: "US". It saved all three in 12 seconds:
| Product | Price band | Variants | Stock | Shipping to the US | Delivery |
|---|---|---|---|---|---|
| AUFU 2-pack | $11.52–$12.44 | 2 lengths | 987 | free, from the United States | 3–8 days |
| 3-pack with LED display | $8.19–$13.33 | 4 (type × length) | 43 | $1.99, from China | 7–12 days |
| Baseus 3-in-2 | $14.42–$16.31 | 3 colors, 1 sold out | 5 | $1.99, from China | 7–12 days |
2026-10-26T14:27:17.427Z [Scrapely] Container started (setup 5.9 s)
2026-10-26T14:27:18.770Z [scrapely.actor] INFO products=3 ship_to=US currency=USD
2026-10-26T14:27:18.851Z [scrapely.proxy_configuration] INFO Platform proxy access check succeeded.
2026-10-26T14:27:22.713Z [scrapely.actor] INFO saved=3 ok=3 bytes=219391 group=DATACENTER sessions=5 browser=0
2026-10-26T14:27:22.950Z [scrapely.actor] INFO [Status message]: Saved 3 products.
2026-10-26T14:27:23.675Z [Scrapely] Container state: status=exited exitCode=0 oomKilled=falseThe second step is where the useful detail lives:
- A card shows one price, not the range. The LED cable's card said $13.33. Its product page has four variants from $8.19 (3 × USB-C to USB-C, 1 m) to $13.33. The Baseus card showed the low end instead. If you price-match from search cards alone, you compare different variants.
- Shipping changes the real price. The AUFU cable ships free from a US warehouse in 3 to 8 days; the two China-shipped items add $1.99 and take 7 to 12 days. A $1.99 fee on a $8.19 variant is 24% on top.
- Stock is thin in places. The Baseus cable had 5 units left and its purple variant was sold out (
available: false), facts a search card never shows. - Sales counts mean different things. The AUFU card said 1,137 orders. The product page splits that into "This seller: 13 sales | Total sales: 1,000+", and its shop opened on 24 November 2025 with no store rating yet. That's exactly the seller check a dropshipper wants before ordering.
What it costs
Both Actors charge per product saved, with platform usage (compute, proxy and browser) included in the price. Prices checked on the Store pages on 26 October 2026:
- Search Scraper: $0.00613 per product ($6.13 per 1,000).
- Product Scraper: $0.000409 per product ($0.41 per 1,000). Invalid, missing or unavailable products are free.
Our search run: 5 × $0.00613 = $0.03065 at list price. Our product run: 3 × $0.000409 = $0.001227 at list price. Our account was billed $0.02452 and $0.0009816 after its plan's Store discount.
At scale: 1,000 search cards plus their 1,000 product pages cost $6.13 + $0.41 = $6.54. If you already know your product IDs (a catalog you resell, say), skip search and refresh 1,000 products for $0.41.
What to watch out for
- Slider checks and blocks. AliExpress shows a slider check to traffic it doesn't trust. The Product Scraper retries on fresh datacenter addresses and, as a last resort, reads the page in Scrape.ly's hosted browser; the Search Scraper rotates addresses and retries, and stops after three keywords in a row are blocked. You never manage proxies.
- Region drives price.
shipToandcurrencychange the price band, stock and shipping. Keep them fixed across runs, or you compare two markets. Search cards come in the currency AliExpress shows to the proxy location. - Input size. Runs start only when the input is under about 7 KB, so send up to about 300 product IDs or 100 full links per run and split bigger lists.
- Moving numbers. Review counts and some variant stock counts change between fetches. Store a timestamp (
scrapedAt) with every row. - Sort by rating is local. The search page has no rating sort, so
ratingreorders only the cards the Actor collected. - No review text. If you need written reviews, this pair of Actors isn't the tool.
Is it legal to scrape AliExpress?
Both Actors read public pages that any visitor can open, without logging in. AliExpress's own terms are strict about it, though. Its Terms of Use (updated on August 26, 2026, effective September 26, 2026) say in clause 3.2: "Systematic retrieval of Site Content from the Sites to create or compile, directly or indirectly, a collection, compilation, database or directory (whether through robots, spiders, automatic devices or manual processes) without written permission from AliExpress.com is prohibited." The same clause makes an exception for researchers who qualify under Article 40(12) of the EU Digital Services Act.
Whether and how such terms bind you depends on your jurisdiction and how you access and use the data. Product data is rarely personal, but product photos and descriptions belong to the sellers, so don't republish them wholesale. Keep request rates reasonable and collect only what you need. This is not legal advice; for a commercial project, ask a lawyer about your case.
Why Scrape.ly for AliExpress data
- Both page types, one platform. Search cards and full product pages are separate Actors with matching IDs, so a two-step pipeline is two API calls. The AliExpress API page shows the same Actors as an API.
- No anti-bot work. AliExpress product pages load their data with JavaScript behind bot checks. The Actors handle retries, address rotation and the browser fallback; your code only reads JSON.
- Cheap detail at scale. $0.41 per 1,000 full product pages, platform usage included, with a maximum charge per run so a long ID list can't overspend.
- Agent-ready. The same two Actors run from Claude, Cursor or ChatGPT through the hosted MCP server.
AliExpress also has its own Open Platform for developers and an Affiliate Portals program. If you qualify for them, they're the official route; the Actors need no account and no approval.
FAQ
Can you scrape AliExpress for free?
Yes, for small jobs. The Free plan includes $5 of usage credit every month, no credit card needed. That covers about 800 search cards or more than 12,000 product pages at list price.
How do I scrape AliExpress with Python?
Install scrapely-client-python, call shelfbright/aliexpress-search-scraper with your keywords, then pass the productUrl values to shelfbright/aliexpress-scraper, as in the script above. The scraping runs in the cloud, so your script needs no browser or proxy.
Can I get AliExpress prices for my country?
Yes. Set shipTo (for example DE) and currency (for example EUR) on the Product Scraper, and prices, stock and shipping follow that pair. The Germany preset is a ready example.
Does the data include AliExpress reviews?
Not the review text. Both Actors return the star rating and the Product Scraper returns the review count, but written reviews are not part of the public product data they read.
How do I monitor AliExpress prices over time?
Save the Product Scraper input with your product IDs, schedule it daily, and store each run with its timestamp. Our price scraping guide covers schedules, change filters and Google Sheets delivery, and the e-commerce scraping guide compares AliExpress with Amazon and Walmart on the same product.
What seller information do you get?
Yes, at shop level. Each product row has a store object with the shop ID, name, positive-feedback rate, country and opening date. It doesn't include personal contact details.




