Skip to content

How to Scrape AliExpress: Products, Prices, Variants and Shipping

Search AliExpress by keyword, then pull every product's variants, stock, shipping fees and seller record into clean rows. No code, curl, Python, Node.js or an AI agent, with two real runs from 26 October 2026 and the exact cost.

Published
Reading time
9 min read
Pixel-art robot with an orange >_ on its terminal head pulls a product card with a photo and a red price out of a stack of cardboard parcels marked with the red AliExpress logo, and drops it into a crate
In this article
  1. What data you can get from AliExpress
  2. How to scrape AliExpress without code
  3. How to scrape AliExpress with the API
  4. With an AI agent (MCP)
  5. A real run: USB cables from search to product page
  6. What it costs
  7. What to watch out for
  8. Is it legal to scrape AliExpress?
  9. Why Scrape.ly for AliExpress data
  10. FAQ
  11. Can you scrape AliExpress for free?
  12. How do I scrape AliExpress with Python?
  13. Can I get AliExpress prices for my country?
  14. Does the data include AliExpress reviews?
  15. How do I monitor AliExpress prices over time?
  16. What seller information do you get?

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

  1. Open the AliExpress Search Scraper in the Scrape.ly Store.
  2. Pick the USB cables between 10 and 20, 5 products preset. It fills in this input:
json
{
  "keywords": ["usb cable"],
  "maxItems": 5,
  "minPrice": 10,
  "maxPrice": 20,
  "sort": "default"
}
  1. Click Start. Our run finished in 4.9 seconds.
  2. Copy the productUrl values 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.
  3. 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_desc or rating.
  • minPrice, maxPrice, minRating, minOrders: filters applied to the cards.
  • productUrls (Product Scraper): product links or bare product IDs.
  • shipTo and currency (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:

shell
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:

python
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):

javascript
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:

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
Text
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=false

The 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. shipTo and currency change 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 rating reorders only the cards the Actor collected.
  • No review text. If you need written reviews, this pair of Actors isn't the tool.

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.

  • aliexpress
  • ecommerce
  • dropshipping
  • price monitoring
  • python
  • api

About the author

Actor publisher on the Scrape.ly Store

Prices, stock and seller data from shops and marketplaces, from Amazon and AliExpress to Vinted and Leboncoin. For price trackers, catalogue teams and resellers. A Scrapely studio.

//Keep reading\\

The internet is full of data.
Start owning yours.

Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes.

No credit card. No setup calls.