How to Scrape AliExpress Listings for Product Research
A low AliExpress search price can be a useful lead, but it may reflect an introductory promotion or a different product variant. A comparison needs the listing context as well as the number.
The AliExpress Listings Scraper collects search-card prices in USD, ratings, sold counts, images, and promotional text. I maintain it. Here we will collect a small LED-strip search and decide which listings deserve a closer product-page check.

Search for a product you can compare
The Actor runs on Apify without an AliExpress login or cookies. You can enter keyword strings in searchQueries, or provide filtered AliExpress results-page URLs in searchUrls. If both are supplied, they are combined. At least one must contain an input, even though the schema does not mark either field individually required.
Choose a narrow description such as a length, voltage, or connector type. “LED strip lights” is deliberately broad enough to expose a common comparison problem: a short bare strip and a long kit with a controller are different products.
Open Input in JSON view and start with:
{
"searchQueries": ["LED strip lights"],
"maxResults": 20,
"proxyConfiguration": {"useApifyProxy": true}
}
maxResults is a global cap across all terms and URLs. It defaults to 50 and must be at least 1. A results page can contain 60 products; larger requests can fetch further pages, but twenty is enough to check relevance first. Keep the default proxy configuration, which can fall back to residential traffic when blocked.
Click Start and open the resulting dataset. Look at the titles before sorting by price. If the search returns mostly connectors, replacement remotes, or unrelated lengths, tighten the query and repeat the small run.
What a 99-cent listing actually tells you
This abbreviated historical README example contains an important clue:
{
"id": "3256812108357810",
"title": "100FT Bluetooth LED Strip Lights, RGB Color Changing Led Strip Lighting with 24-Key Remote and APP Control, Music Sync Lights",
"price": 0.99,
"originalPrice": 33.02,
"discountPercentage": 97,
"currency": "USD",
"rating": 4.7,
"totalSold": "275 sold",
"totalSoldCount": 275,
"sellingPoints": ["New shoppers save $32.03", "Delivery: Aug 09 - 17"]
}
The promotional text says that the saving applies to new shoppers. That makes $0.99 unsuitable as an unconditional procurement cost. Follow productUrl and check the exact variant, quantity, delivery destination, and promotion eligibility before putting it in a purchasing comparison.
Likewise, totalSoldCount gives you a sortable version of the displayed sold count. It does not establish sales during your research period or independently audited transactions. Keep totalSold beside it when the source uses rounded or “plus” notation.

Earlier AliExpress results illustrate the product cards and promotional context returned.
Build a comparison that retains the evidence
Export CSV with id, title, productUrl, price, originalPrice, currency, rating, totalSold, totalSoldCount, and scrapedAt. Export JSON as well if you want the full sellingPoints and additionalImages arrays.
Add columns for length, voltage, included controller, power supply, and promotion conditions. Populate them only where the title or checked product page supports the value. Put ambiguous kits in a review group rather than guessing.
Deduplicate by id, then compare within matching configurations. A $10 five-meter kit and a $6 one-meter strip cannot be ranked by total price alone. Calculate a price per meter only after confirming what is included, and keep shipping or other checkout charges separate if you have not collected them.
The Actor pins the storefront to USD, which avoids mixing currency symbols across runs. It does not remove differences in variant, customer eligibility, or shipping. Label the final sheet “observed listing prices” and retain the source URL for each row.
Budget the search and repeat the useful part
Pricing as of September 6, 2026: $0.0025 per returned product, plus an Actor-start event of $0.00005 per GB of allocated memory, minimum one event. Twenty products correspond to $0.05 in product fees. Confirm the current pricing before scheduling.
If a result has no usable price, exclude it from arithmetic while keeping it in the export. If the entire run is empty, verify the supplied search URL or try one keyword before adding more inputs. A product URL is not a substitute for a supported search-results URL in searchUrls.
Once the comparison rules work, save the input as an Apify task and append dated observations by product ID. A changing promotional price is worth reviewing; a missing item from a limited search is not proof that it was discontinued. For a seller-specific catalog instead of a keyword sample, see the Amazon storefront guide.
The Node.js example shows how to run this Actor from code and retrieve its dataset.
Earlier video walkthrough
The video shows the earlier interface. Use the input names and pricing in this guide.
Frequently asked questions
Does the displayed price include every purchasing cost?
No. Check the selected variant, shipping, promotion eligibility, and checkout conditions on the product page before treating a listing price as a purchasing cost.
Is maxResults applied separately to each keyword?
No. maxResults caps the whole run across all search terms and search URLs.
