AliExpress Search Scraper - Products, Prices, Ratings & Sales
Pricing
$4.00 / 1,000 products
AliExpress Search Scraper - Products, Prices, Ratings & Sales
Search AliExpress by keyword (or supply your own search URL) and get titles, prices, discounts, ratings, sold counts and images from the results pages. For dropshippers and product researchers.
Pricing
$4.00 / 1,000 products
Rating
0.0
(0)
Developer
Luke Hunter
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
6 days ago
Last modified
Categories
Share
For dropshippers doing product research, price monitoring, and anyone who needs structured AliExpress search results without a browser. Give it one or more keywords (or your own AliExpress search URL) and it returns every product on the results page — title, price, discount, rating, sold count and image — read straight from the search page itself. No login, no API key, no browser.
Pay-per-result: $0.004 per delivered product — 1,000 products = $4.
Quick start (1 minute)
- Open the Input tab and list the keyword(s) you want, e.g.
phone case. - Click Start. Export the resulting dataset to CSV/Excel/JSON, or pull it through the API shown below.
{"searchTerms": ["phone case"],"maxItems": 20}
That prefilled example finishes in well under a minute and costs $0.16.
How it works
An AliExpress search-results page (/wholesale?SearchText=...) embeds its own product list as JSON inside the page — this Actor requests that page, locates that JSON, and maps it to a flat row per product. This Actor:
- Checks AliExpress's own
robots.txtfor the exact search path it is about to read, once per run, and skips a search (reporting why, in the run's status message) if that path is disallowed. - Fetches up to
maxPagesPerSearchresult pages per keyword or supplied URL, about one request every 2 seconds. - Normalises every product on each page into one flat dataset row.
- If a page comes back as a captcha/interstitial ("please verify you're human") or without the expected results data, it stops that one search and reports it honestly in the run's status message — this Actor never tries to solve a captcha or evade a block.
Use cases
- Dropshippers: pull current prices, discounts and sold counts for a niche keyword before sourcing.
- Price monitoring: run the same keywords on a schedule and track
price/discountPercentover time. - Product research: compare rating, sold count and price across everything AliExpress surfaces for a search term.
Input
{"searchTerms": ["phone case"],"startUrls": [],"maxPagesPerSearch": 1,"maxItems": 60}
| Field | Type | Default | Description |
|---|---|---|---|
searchTerms | string[] | (none) | Keywords to search, e.g. "phone case". Provide this, startUrls, or both. |
startUrls | string[] | (none) | Full AliExpress /wholesale or /w/ search-results URLs to use as-is. Individual item pages are not supported. |
maxPagesPerSearch | integer | 1 | 1–10. Result pages fetched per keyword/URL (about 60 products per page). |
maxItems | integer | 60 | 1–3,000. Hard cap on rows delivered across the whole run — your cost cap. |
At least one of searchTerms or startUrls is required.
Accepted input shapes
- Keywords (
searchTerms): a list, or a single text value (one keyword per line). Surrounding and repeated whitespace is trimmed and keywords are de-duplicated case-insensitively.keywords,keyword,searchTermandquerywork as aliases. - Search links (
startUrls): strings or{ "url": "..." }objects (the Console URL list format);urlandurlswork as aliases, and a single text value may hold several links separated by spaces, commas or newlines. Links can be on any AliExpress storefront:www.,m., locale subdomains (es.,fr.,de.,pt.,ru.,it.,en-gb....) oraliexpress.us, with or withouthttps://. They are all read fromwww.aliexpress.comas/wholesaleor/w/...search results, and the same search pasted twice runs once. A link pasted intosearchTermsis treated as a link. - Not supported: single product pages (
/item/<id>.html), category/store pages,/search/..., and other sites. Put the product's keywords insearchTermsinstead. - A bad entry never fails your run. It is skipped with a warning in the log and a line in the run status message (free, not charged), and every valid entry is still scraped. If nothing valid is left, the run still finishes Succeeded, charges nothing, and the status message says what works. Out-of-range
maxItems/maxPagesPerSearchare clamped to the limits above (with a warning) rather than rejected. - Runs only fail when AliExpress blocks the request (this Actor never tries to get around a block) or on an unexpected internal error with nothing delivered.
Output fields
| Category | Fields |
|---|---|
| Identity | productId, title, url |
| Price | price, originalPrice, currency, discountPercent |
| Reputation | rating, soldCount, soldText |
| Media | imageUrl |
| Seller (see Limitations) | storeName, storeId, storeUrl |
| Shipping | shippingText |
| Search context | searchTerm, page, position, scrapedAt |
Missing values are returned as null. Nothing is invented.
Output example
{"productId": "3256809276917537","title": "Ultra Thin Clear TPU Phone Cases For iPhone 18 17 16 15 14 13 12 11 Pro Max Plus Air 16E XR XS Max Transparent Silicone Cover","url": "https://www.aliexpress.com/item/3256809276917537.html","price": 1.55,"originalPrice": 15.1,"currency": "USD","discountPercent": 89,"rating": 4.7,"soldCount": 10000,"soldText": "10,000+ sold","imageUrl": "https://ae-pic-a1.aliexpress-media.com/kf/Sf898ce9c147a42edb66872faa1120d79n.jpg","storeName": null,"storeId": null,"storeUrl": null,"shippingText": null,"searchTerm": "phone case","page": 1,"position": 1,"scrapedAt": "2026-09-27T00:00:00.000Z"}
(Real values from a live capture of an AliExpress search for "phone case".)
Use it as an API
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("lukehunter/aliexpress-scraper").call(run_input={"searchTerms": ["phone case", "drone"],"maxItems": 200,})for product in client.dataset(run["defaultDatasetId"]).iterate_items():print(product["title"], product["price"], product["soldCount"])
Pricing and cost control
Pay per delivered product row.
$0.004 per product — 1,000 products = $4. Price changes follow Apify's notice rules; the Pricing tab always shows the rate you are charged.
| Rows delivered | Cost |
|---|---|
| 20 | $0.08 |
| 1,000 | $4.00 |
| 10,000 | $40.00 |
There is no charge for starting a run, and no charge for a search that is blocked, skipped or produces nothing. maxItems gives you a hard upper bound on cost.
Limitations
- Search results only. This Actor reads AliExpress search-results pages, not individual product pages — no full description, no per-variant pricing/SKUs, no seller/store name or reviews. AliExpress's own search cards do not expose seller name or id at all, so
storeName/storeId/storeUrlare alwaysnulltoday. - Prices reflect whatever AliExpress served this session/region at scrape time — shown in whatever currency and price tier AliExpress chose for that request (USD in every fixture verified so far). Prices can vary by account region, currency and ongoing promotions; this Actor reports exactly what the page showed, never a converted or estimated figure.
soldCountis AliExpress's own rounded figure, parsed from text like "5,000+ sold" or "100K+ sold" — not an exact count, because AliExpress itself never publishes one.- No sort order control. AliExpress's search URL does not have a publicly documented, verified sort parameter, so this Actor always reads AliExpress's own default result order rather than guess at an undocumented one.
- This Actor honours
robots.txtand never bypasses a captcha, "verify you're human" interstitial, or block — a blocked search is reported, not evaded. No proxies, no User-Agent rotation. - This is an independent tool, not affiliated with, endorsed by, or connected to AliExpress or Alibaba Group. You are responsible for using the collected data in accordance with AliExpress's terms and applicable law.
Use it from your code, Make, Zapier or n8n
Built for automated pipelines: small runs, stable field names, one row per item, and you pay only for rows actually delivered.
One API call that runs the Actor and returns the data (replace $APIFY_TOKEN with your token from Apify Console → Settings → Integrations):
curl -s -X POST "https://api.apify.com/v2/acts/lukehunter~aliexpress-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \-H 'Content-Type: application/json' \-d '{"searchTerms": ["phone case"], "maxPagesPerSearch": 1, "maxItems": 20}'
JavaScript (npm i apify-client):
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('lukehunter~aliexpress-scraper').call({"searchTerms": ["phone case"],"maxPagesPerSearch": 1,"maxItems": 20});const { items } = await client.dataset(run.defaultDatasetId).listItems();
Python (pip install apify-client):
import osfrom apify_client import ApifyClientclient = ApifyClient(os.environ['APIFY_TOKEN'])run = client.actor('lukehunter~aliexpress-scraper').call(run_input={"searchTerms": ["phone case"], "maxPagesPerSearch": 1, "maxItems": 20})items = client.dataset(run['defaultDatasetId']).list_items().items
Schedules, webhooks and no-code tools: save your input as a Task, add a Schedule (e.g. hourly or daily), and attach a webhook or one of the Integrations tab's connectors (Make, Zapier, n8n, Google Sheets, Slack) to push each run's results into your own system.
Reliability: an automated test runs this Actor's parser against the live site every day, and failures are fixed fast.
Feedback: an honest rating on the Store page, good or bad, helps others decide if this Actor fits their needs. Missing a field or found a problem? Open an issue on the Actor page.
FAQ
Can I use my own AliExpress search URL?
Yes — put it in startUrls (any locale, with or without https://). Only /wholesale and /w/ search-results URLs are supported; item/product pages are not.
Does it scrape individual product pages for full descriptions or variants?
No. This Actor is scoped to search-results data only — see Limitations.
Why is storeName always null?
AliExpress's own search-results cards do not include the seller/store name or id anywhere in the page data this Actor reads — verified against three live captures. The field is kept in the schema in case a future page layout adds it.
What happens if AliExpress shows a captcha?
That search stops immediately, is reported in the run's status message, and nothing is charged for it. This Actor never attempts to solve or bypass a captcha.
Related Actors
Other data tools from the same developer, built to the same standard: official or public sources, hard cost caps, and honest documentation of limits.
- Shopify Product Scraper by URL: price, compare-at price and stock for specific Shopify product URLs, with a change-only feed.
- Shopify Store Products Scraper: full product catalogues from any Shopify store, with prices, sale prices, variants and stock.
- Vinted Cross-Country Price Comparison: compare the same search across Vinted country markets with EUR-normalized summaries and median price gaps.
- Vinted Scraper: Vinted search results with prices, brands and sizes in any Vinted country, plus scheduled new-listing alerts sent to Discord or Telegram.
- Vinted Item Scraper by URL: price-drop and sold alerts for specific Vinted item URLs: price, brand, size, condition and availability, with a changes-only mode.
- Temu Scraper: Temu search results with prices, product links and images for any keyword, with a new-products-only mode for scheduled runs.
- YouTube Channel Scraper: new-video alerts and channel monitoring for any list of YouTube channels: subscribers, latest videos and a new-uploads-only mode for scheduled runs.
- Google Play App Scraper: ratings, installs, developer contact info and pricing for any Google Play app.