AliExpress Bulk Scraper Pro avatar

AliExpress Bulk Scraper Pro

Under maintenance

Pricing

from $3.99 / 1,000 results

Go to Apify Store
AliExpress Bulk Scraper Pro

AliExpress Bulk Scraper Pro

Under maintenance

Collect public AliExpress product details from keyword searches or public item URLs, with product records in the dataset and a separate run summary.

Pricing

from $3.99 / 1,000 results

Rating

0.0

(0)

Developer

Coding Frontned

Coding Frontned

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

14 days ago

Last modified

Categories

Share

What does AliExpress Bulk Scraper Pro do?

AliExpress Bulk Scraper Pro collects public product information from AliExpress search pages and item links. Search for products, provide item URLs directly, or use both sources in one run. The Actor reads standard Product structured data (JSON-LD) and saves a product only when that data includes a matching public item URL, numeric product ID, and name.

Current live AliExpress fields have not been verified. The supported field mapping follows standard Product structured data and has not been confirmed against current live AliExpress pages. A page may omit some or all optional product fields. If it does not publish a matching product record, the Actor may save no row.

The Actor only reads public pages. It does not sign in, use private APIs, or try to get around CAPTCHA challenges or other access controls.

Why use this Actor?

  • Search with up to 50 phrases or inspect up to 100 public item URLs.
  • Combine searches and direct URLs under one limit of 1–100 unique products. Direct URLs are processed first, and repeated product IDs are saved once.
  • Collect product facts that the matching Product data publishes, such as offers, seller names, ratings, categories, attributes, and images.
  • Use Apify schedules, API access, integrations, run history, and monitoring in your product research workflow.

The Actor does not fill gaps from nearby products or infer missing prices, ratings, or descriptions. It does not add the search phrase to product rows, so a row does not say which phrase found it.

How to scrape AliExpress

  1. Open AliExpress Bulk Scraper Pro in Apify Console and select Input.
  2. Enter search phrases, public product URLs, or both. If both source lists are empty, the Actor searches for wireless earbuds.
  3. Set the maximum number of unique products. Direct item URLs are processed before search phrases.
  4. Start the run. Product rows appear in Dataset; the run outcome appears in the key-value store as OUTPUT_SUMMARY.

The Actor reads one search page for each phrase. It does not provide page numbers, sorting, product filters, or a field for search-phrase attribution. Search and item pages must publish matching Product structured data for a row to be saved.

Input

See the Input tab for the configuration. The schema defaults queries and productUrls to empty lists. The form may show wireless earbuds as a starting value for queries; that is a form prefill. At runtime, if both lists are empty, the Actor searches for wireless earbuds. Supplying direct URLs with an empty queries list runs only those URLs.

FieldRequired?TypeDefaultLimits and behavior
queriesOptionalArray of strings[]Up to 50 phrases, each 1–200 characters. Phrases are converted to AliExpress search-page URLs.
productUrlsOptionalArray of objects[]Up to 100 direct product URLs. Each object contains one url field.
productUrls[].urlRequired in each itemURL string—HTTPS item page on an approved AliExpress host, with an 8–30 digit ID. Query parameters, fragments, credentials, ports, and other paths are rejected.
itemLimitOptionalInteger101–100 unique products across all sources. Duplicate item IDs count once.
timeoutMsOptionalInteger300005,000–120,000 milliseconds for each search page, item page, or robots request.
maxResponseBytesOptionalInteger50000001,000–15,000,000 bytes per response.
useBrowserOptionalBooleanfalseUses ordinary browser rendering when enabled. It does not sign in or bypass access controls.
proxyConfigurationOptionalObject{ "useApifyProxy": false }Optional Apify Proxy settings. Proxy use is off by default and depends on your account access.
proxyConfiguration.useApifyProxyOptional within the objectBooleanfalseTurns Apify Proxy use on or off.
proxyConfiguration.apifyProxyGroupsOptional within the objectArray of strings—Proxy groups available to your Apify account.
proxyConfiguration.proxyUrlsOptional within the objectArray of strings—Proxy URLs accepted by Apify Proxy configuration.

Unknown fields and invalid values fail input validation. You can start from the checked-in ./input.json example.

Search the default product type

{
"queries": ["wireless earbuds"],
"productUrls": [],
"itemLimit": 10,
"timeoutMs": 30000,
"maxResponseBytes": 5000000,
"useBrowser": false,
"proxyConfiguration": {
"useApifyProxy": false
}
}

Inspect item pages directly

{
"queries": [],
"productUrls": [
{ "url": "https://www.aliexpress.com/item/1005001234567890.html" },
{ "url": "https://www.aliexpress.com/item/1005009876543210.html" }
],
"itemLimit": 10
}

Combine searches and item pages

{
"queries": ["wireless earbuds", "usb hub"],
"productUrls": [
{ "url": "https://www.aliexpress.com/item/1005001234567890.html" }
],
"itemLimit": 20,
"timeoutMs": 45000
}

Use browser rendering with Apify Proxy

This example enables ordinary browser rendering and Apify Proxy. Proxy access depends on your account and may incur separate charges. It does not bypass access controls.

{
"queries": ["wireless earbuds"],
"productUrls": [],
"itemLimit": 10,
"timeoutMs": 45000,
"maxResponseBytes": 5000000,
"useBrowser": true,
"proxyConfiguration": {
"useApifyProxy": true
}
}

Output

Each dataset row contains only product fields. productId, title, and productUrl are required; the remaining fields are optional and appear only when matching Product data publishes a usable value. The table describes all 28 fields in a row.

FieldRequired?TypeMeaning
productIdRequiredStringNative 8–30 digit AliExpress item ID, matched to the product URL.
titleRequiredStringProduct name in the matching Product data.
productUrlRequiredURL stringPublic AliExpress item page whose ID matches productId.
descriptionOptionalStringDescription published by the matching Product.
salePriceOptionalStringPrice from a matching Product offer that publishes a price.
priceCurrencyOptionalStringThree-letter uppercase currency published with salePrice.
offersOptionalArray of objectsUp to 20 offers with the explicit details listed in the nested fields table below.
aggregateOfferOptionalObjectPublished low and high prices, currency, offer count, and nested offers.
brandOptionalObjectBrand name published by the product.
manufacturerOptionalObjectManufacturer name published by the product.
modelOptionalStringProduct model text.
gtinOptionalString8-, 12-, 13-, or 14-digit trade item number.
gtin8OptionalString8-digit trade item number.
gtin12OptionalString12-digit trade item number.
gtin13OptionalString13-digit trade item number.
gtin14OptionalString14-digit trade item number.
mpnOptionalStringManufacturer part number.
skuIdOptionalStringStock keeping unit.
colorOptionalStringProduct color.
materialOptionalStringProduct material.
sizeOptionalString or objectA size value or a size specification with optional units and size system.
additionalPropertiesOptionalArray of objectsUp to 100 named product attributes with a scalar value and optional units.
aggregateRatingOptionalObjectPublished rating value, best and worst ratings, rating count, and review count.
starRatingOptionalNumberConvenience value copied from aggregateRating.ratingValue only when it is on a 0–5 scale.
reviewCountOptionalIntegerConvenience value copied from aggregateRating.reviewCount; it is not copied from ratingCount.
productTypeOptionalStringProduct category.
mainImageUrlOptionalURL stringFirst valid image published by the product.
imageUrlsOptionalArray of URL stringsUp to 50 distinct valid product images.

Nested fields are also included only when the matching Product data publishes a usable value. Required values below are required only when their containing object or list item is present.

PathTypeRequired?Meaning
offers[]ObjectEach list itemOne explicit Product offer; its properties below are optional.
offers[].priceStringOptionalOffer price.
offers[].priceCurrencyStringOptionalThree-letter uppercase currency code.
offers[].availabilityStringOptionalPublished availability such as InStock or OutOfStock.
offers[].itemConditionStringOptionalPublished condition such as NewCondition or UsedCondition.
offers[].sellerObjectOptionalSeller object.
offers[].seller.nameStringRequired in objectPublished seller name.
offers[].urlURL stringOptionalPublic item URL for the same product ID.
aggregateOffer.lowPriceStringOptionalPublished low price.
aggregateOffer.highPriceStringOptionalPublished high price.
aggregateOffer.priceCurrencyStringOptionalThree-letter uppercase currency code.
aggregateOffer.offerCountIntegerOptionalPublished number of offers.
aggregateOffer.offers[]ObjectEach list itemOne nested offer; its properties follow the same rules as offers[].
aggregateOffer.offers[].priceStringOptionalNested offer price.
aggregateOffer.offers[].priceCurrencyStringOptionalThree-letter uppercase currency code.
aggregateOffer.offers[].availabilityStringOptionalPublished availability.
aggregateOffer.offers[].itemConditionStringOptionalPublished item condition.
aggregateOffer.offers[].sellerObjectOptionalNested seller object.
aggregateOffer.offers[].seller.nameStringRequired in objectPublished seller name.
aggregateOffer.offers[].urlURL stringOptionalPublic item URL for the same product ID.
brand.nameStringRequired in objectPublished brand name.
manufacturer.nameStringRequired in objectPublished manufacturer name.
size.nameStringOptionalName of the size specification.
size.valueString, number, or BooleanOptionalSize value.
size.unitTextStringOptionalUnit text for the size value.
size.unitCodeStringOptionalUnit code for the size value.
size.sizeSystemStringOptionalPublished size system.
size.sizeGroupStringOptionalPublished size group.
additionalProperties[]ObjectEach list itemOne named product attribute.
additionalProperties[].nameStringRequired in itemAttribute name.
additionalProperties[].valueString, number, or BooleanRequired in itemAttribute value.
additionalProperties[].unitTextStringOptionalUnit text for the attribute value.
additionalProperties[].unitCodeStringOptionalUnit code for the attribute value.
aggregateRating.ratingValueNumberOptionalPublished rating value.
aggregateRating.bestRatingNumberOptionalPublished upper end of the rating scale.
aggregateRating.worstRatingNumberOptionalPublished lower end of the rating scale.
aggregateRating.ratingCountIntegerOptionalNumber of ratings.
aggregateRating.reviewCountIntegerOptionalNumber of reviews.

This field mapping follows standard Product structured data. AliExpress may omit some or all of these fields, and the current site payload has not been verified. The Actor does not use generic page text or nearby products to fill missing product facts. Product images are limited to AliExpress hosts and alicdn.com image hosts with recognized image file extensions.

The JSON below shows every supported top-level field and every nested field. Values illustrate the format; they are not a live AliExpress result.

{
"productId": "1005001234567890",
"title": "Protective Phone Case",
"productUrl": "https://www.aliexpress.com/item/1005001234567890.html",
"description": "Protective case with a slim finish.",
"salePrice": "4.90",
"priceCurrency": "USD",
"offers": [
{
"price": "4.90",
"priceCurrency": "USD",
"availability": "InStock",
"itemCondition": "NewCondition",
"seller": { "name": "Example Seller" },
"url": "https://www.aliexpress.com/item/1005001234567890.html"
}
],
"aggregateOffer": {
"lowPrice": "4.90",
"highPrice": "7.90",
"priceCurrency": "USD",
"offerCount": 2,
"offers": [
{
"price": "4.90",
"priceCurrency": "USD",
"availability": "InStock",
"itemCondition": "NewCondition",
"seller": { "name": "Example Seller" },
"url": "https://www.aliexpress.com/item/1005001234567890.html"
}
]
},
"brand": { "name": "Example Brand" },
"manufacturer": { "name": "Example Manufacturer" },
"model": "PC-01",
"gtin": "0123456789012",
"gtin8": "12345670",
"gtin12": "012345678905",
"gtin13": "0123456789012",
"gtin14": "01234567890128",
"mpn": "PC-01",
"skuId": "CASE-01",
"color": "Black",
"material": "Polycarbonate",
"size": {
"name": "Case width",
"value": 20,
"unitText": "centimeters",
"unitCode": "CMT",
"sizeSystem": "EU",
"sizeGroup": "Adult"
},
"additionalProperties": [
{
"name": "Compatible models",
"value": "Selected phone models",
"unitText": "models",
"unitCode": "C62"
}
],
"aggregateRating": {
"ratingValue": 4.8,
"bestRating": 5,
"worstRating": 1,
"ratingCount": 125,
"reviewCount": 120
},
"starRating": 4.8,
"reviewCount": 120,
"productType": "Phone cases",
"mainImageUrl": "https://ae01.alicdn.com/kf/product-image.jpg",
"imageUrls": ["https://ae01.alicdn.com/kf/product-image.jpg"]
}

Download the dataset in formats such as JSON, HTML, CSV, or Excel.

Run status

OUTPUT_SUMMARY is saved in the key-value store separately from product rows. It contains status, itemsStored, and isPartial. The examples below show the summary format; they are not results from a live AliExpress run.

Completed with results

At least one row was saved and collection completed without an early stop.

{
"status": "SUCCEEDED",
"itemsStored": 8,
"isPartial": false
}

Stopped early after saving results

At least one row was saved, then collection or storage stopped early.

{
"status": "SUCCEEDED",
"itemsStored": 3,
"isPartial": true
}

No rows saved

No valid product row was saved. The source may not have published matching product data, or public access may not have been available.

{
"status": "FAILED",
"itemsStored": 0,
"isPartial": false
}

Reaching itemLimit is normal completion. isPartial is used only when at least one row was saved before an early stop.

How much will it cost to scrape AliExpress?

Apify usage follows the current pricing shown in your account; this README does not quote a fixed price. Larger product limits, browser rendering, longer request timeouts, and larger response limits can increase run time or compute use. Optional Apify Proxy access may have separate account pricing and is off by default.

Start with a low itemLimit to see what current public pages provide. A direct item page uses a request for that page. Search results may also be followed by item-page requests, subject to public access and the page's robots rules.

Tips, support, and responsible use

  • Start with a small item limit. Raise it only after checking what current public pages return.
  • Follow AliExpress terms, robots rules, rate limits, and applicable law. The Actor stops when a source denies or challenges public access.
  • The Actor is not affiliated with AliExpress. It reads public product information and does not request buyer or seller account data.
  • Use the Actor's Issues tab for bugs or feature requests. Include a run ID and a short description, and leave out credentials or private account details.
  • Use the API tab for programmatic runs and integrations.

Public listings can still contain personal data. Do not collect or use personal data unless you have a legitimate reason and follow applicable privacy laws. Consult qualified legal counsel if you are unsure.