RealdataAPI Store - Browse tools published by our community and use them for your projects right away
logo

AliExpress Product Data Scraper - Scrape AliExpress Product Data

RealdataAPI / aliexpress-product-scraper

With our AliExpress Product Data Scraper, you can quickly gather important product information, such as their descriptions, images, feedback, questions, prices, and shipping details. You can customize your search by selecting your preferred country, language, and region for shipping. Our options include popular countries like Australia, Canada, Germany, France, Singapore, the USA, the UK, UAE, and India.

AliExpress scraper

This API must help you to scrape data from AliExpress because the platform doesn't offer the actor.

This data scraper to collect data from AliExpress supports the below features.

  • Extract product information - you can collect product attributes like metadata and images. You can learn about the details below.
  • Collect product descriptions - you can extract product descriptions from AliExpress in HTML format.
  • Extract product detail feedback- you can extract user feedback like country, translated content, original content, etc.
  • Collect questions about product information - you can collect buyers' Questions and Answers related to products.
  • You can set currency, language, and region for product delivery.

AliExpress Specific

Don't think much if you get the different products you discovered while browsing the page—the platform orders various products for every user.

Updates, bugs, fixes, and changelog

This API is under development. You can mail us the same if you have any suggestions or feature requests.

Input Parameters

It would help if you fed the input to this actor with a JSON file with the list of AliExpress pages to visit. Below are the needed data fields.

Field Type Description
startUrls Array (optional) List of Aliexpress URLs. You should only provide category detail or product detail URLs
searchTerms Array (optional) List of terms what can be searched in aliexpress search engine
language String (optional) Select language from list in which will be products default is English (en_US)
shipTo String (optional) Select country where the products will be shipped default is US
currency String (optional) Select currency in which the products price will be default is USD
maxItems Integer (optional) You can limit scraped products. This should be useful when you search through the all subcategories. Default is 1000 products.
includeDescription Boolean (optional) If you want to fetch description HTML you can enable this option. However keep in mind that fetching description takes one extra request which makes your actor a bit slower and takes a bit much CUs.
searchInSubcategories Boolean (optional) You can turn off searching in subcategories. Default is true.
maxFeedback Integer (optional) Max count of scraped feedbacks
maxQuestions Integer (optional) Max count of scraped buyer Q&A
proxy Object Proxy configuration
extendOutputFunction String (optional) Function that takes a JQuery handle ($) as argument and returns object with data

It would help if you used proxy servers to access this solution to have your proxy servers, or you can try proxies of Real Data API.

Example

When scraping a particular URL, use that as a startUrl.

When you feed the category link to startUrls, set up the start and end page and search in subcategories factor on the start and end logic page will propagate to each subcategory to extract more products.

Calculate Unit Consumption

You can scrape as many listings as possible with this optimized actor. So it forefronts each detail request for a listing. If API doesn't block frequently, it will extract a hundred listings in 120 seconds.

AliExpress Scraper Input example
{
    "searchTerms": ["mobile"],
    "language": "en_US",
    "shipTo": "US",
    "currency": "USD",
    "includeDescription": false,
    "proxy":{"useRealdataAPIProxy": true},
    "startUrls":   [
        { "url": "https://www.aliexpress.com/category/200003482/dresses.html" },
        { "url": "https://www.aliexpress.com/item/32940810951.html" }
    ],
    "maxFeedbacks": 5,
    "maxQuestions":3
}
During the Execution

While executing, the API stores the result in the custom dataset. Every product is separate in the dataset.

You can handle outputs in multiple coding languages. Check the reference to our API or FAQs to know more about getting output from this API.

AliExpress Export

While executing, the API stores the result in the custom dataset. Every product is separate in the dataset.

You can handle outputs in multiple coding languages. Check the reference to our API or FAQs to know more about getting output from this API.

Scraped AliExpress Posts

The format of every product in AliExpress products looks like below.

{
  "id": 33030949663,
  "link": "https://www.aliexpress.com/item/33030949663.html?algo_pvid=4f9da8f7-0d3c-4484-9db1-cafaf699a955&algo_expid=4f9da8f7-0d3c-4484-9db1-cafaf699a955-58&btsid=0ab6fab215937737510214942edbed&ws_ab_test=searchweb0_0,searchweb201602_,searchweb201603_",
  "ownerMemberId": 220138526,
  "title": "Ultra Thin Mobile Phone Cases for Xiaomi Mi 9T / 9T Pro Back Cover Case 360 Camera Protective Mi9TPro 9TPro Silicone TPU Coque",
  "tradeAmount": "2786 orders",
  "averageStar": "4.7",
  "descriptionURL": "https://aeproductsourcesite.alicdn.com/product/description/pc/v2/en_US/desc.htm?productId=33030949663&key=H8e670276aa194227861097826443d8f5D.zip&token=b95e1a6f392242c57140d3e166d276ad",
  "store": {
    "followingNumber": 9468,
    "establishedAt": "Oct 3, 2013",
    "positiveNum": 12506,
    "positiveRate": "94.7%",
    "name": "GOINSIE Official Store",
    "id": 937981,
    "url": "https://www.aliexpress.com/store/937981",
    "topRatedSeller": true
  },
  "specs": [
    {
      "Brand Name": "GOINSIE"
    },
    {
      "Type": "Fitted Case"
    },
    {
      "Features": "Transparent & Clear Soft"
    },
    {
      "Compatible Brand": "Xiaomi"
    },
    {
      "Design": "Plain"
    },
    {
      "Design": "Transparent"
    },
    {
      "Function": "Waterproof"
    },
    {
      "Function": "Dirt-resistant"
    },
    {
      "Function": "Anti-knock"
    },
    {
      "Function": "Heavy Duty Protection"
    },
    {
      "Function": "Adsorption"
    },
    {
      "Model Number": "for Xiaomi Mi 9T / 9T Pro"
    },
    {
      "Status": "In Stock"
    },
    {
      "Delivery": "Free Shipping"
    }
  ],
  "categories": [
    "All Categories",
    "Cellphones & Telecommunications",
    "Phone Bags & Cases",
    "Fitted Cases"
  ],
  "wishedCount": 4791,
  "quantity": 1258,
  "photos": [
    "https://ae01.alicdn.com/kf/H313c225b670445348cddb28c5648c3f70/Ultra-Thin-Mobile-Phone-Cases-for-Xiaomi-Mi-9T-9T-Pro-Back-Cover-Case-360-Camera.jpg",
    "https://ae01.alicdn.com/kf/H90116ac8272f4d4dba9b3843b94dbf28i/Ultra-Thin-Mobile-Phone-Cases-for-Xiaomi-Mi-9T-9T-Pro-Back-Cover-Case-360-Camera.jpg",
    "https://ae01.alicdn.com/kf/H34a75c2ff0054e939864a990bda3441bs/Ultra-Thin-Mobile-Phone-Cases-for-Xiaomi-Mi-9T-9T-Pro-Back-Cover-Case-360-Camera.jpg",
    "https://ae01.alicdn.com/kf/H1c5ffbcaf51943bcaf865635fafebe42D/Ultra-Thin-Mobile-Phone-Cases-for-Xiaomi-Mi-9T-9T-Pro-Back-Cover-Case-360-Camera.jpg",
    "https://ae01.alicdn.com/kf/H4b8c575d6ee240d3a8c291309ca5c978n/Ultra-Thin-Mobile-Phone-Cases-for-Xiaomi-Mi-9T-9T-Pro-Back-Cover-Case-360-Camera.jpg",
    "https://ae01.alicdn.com/kf/H983e6b11f05e48c38ac899ae11686ffem/Ultra-Thin-Mobile-Phone-Cases-for-Xiaomi-Mi-9T-9T-Pro-Back-Cover-Case-360-Camera.jpg"
  ],
  "skuOptions": [
    {
      "name": "Material",
      "values": [
        "Xiaomi Mi 9T",
        "Xiaomi Mi 9T Pro"
      ]
    },
    {
      "name": "Color",
      "values": [
        null
      ]
    }
  ],
  "prices": [
    {
      "price": "US $3.39",
      "attributes": [
        "PC",
        "Clear"
      ]
    },
    {
      "price": "US $3.39",
      "attributes": [
        "TPU",
        "Clear"
      ]
    }
  ],
  "companyId": 230202141,
  "memberId": 220138526,
  "userFeedbacks": [
    {
      "userName": "I***v",
      "userCountry": "RU",
      "productType": "Color:Clear",
      "reviewContent": "The seller is well done, fast delivery, all as in the description.",
      "reviewTime": "26 Jun 2020 03:40"
    },
    {
      "userName": "A***a",
      "userCountry": "RU",
      "productType": "Color:Clear",
      "reviewContent": "Ordered 04.12.2019, received 25.01.2020 in the Sverdlovsk region./r/nSilicone Case, transparent, in the hands does not slip, hold in the hand comfortably, went perfectly to the phone, all holes in place,/r/nFingerprints leaves/r/nThe seller is honest, sent",
      "reviewTime": "25 Jan 2020 21:54"
    },
    {
      "userName": "P***v",
      "userCountry": "RU",
      "productType": "Color:Clear",
      "reviewContent": "Record delivery to Syzran. 12 days! Faster than the phone for which I ordered. A new way of gluing I liked, the films perfectly lay down and perfectly fit in size. Boldly order.",
      "reviewTime": "22 Jan 2020 04:01"
    },
    {
      "userName": "G***g",
      "userCountry": "RU",
      "productType": "Color:Clear",
      "reviewContent": "Normal silicone case. The side of the cover does not stand for the edges of the screen. The complete case is better.",
      "reviewTime": "16 May 2020 01:22"
    },
    {
      "userName": "A***v",
      "userCountry": "RU",
      "productType": "Color:Clear",
      "reviewContent": "Everything came quickly, quality. I ordered 2 PCs transparent",
      "reviewTime": "06 Apr 2020 09:08"
    }
  ],
  "questionAndAnswers": [
    {
      "lang": "ru",
      "totalAnswer": 4,
      "originalContent": "Подойдёт для xiaomi k20? ",
      "translateContent": "Suitable for Xiaomi K20?",
      "answers": [
        {
          "lang": "ru",
          "originalContent": "конечно да",
          "translateContent": "Of course yes"
        }
      ]
    },
    {
      "lang": "es",
      "totalAnswer": 3,
      "originalContent": "protege las cámaras??",
      "translateContent": "Protects the still cameras??",
      "answers": [
        {
          "lang": "ru",
          "originalContent": "Абсолютно свободное движение. ",
          "translateContent": "Absolutely free movement."
        }
      ]
    },
    {
      "lang": "ru",
      "totalAnswer": 3,
      "originalContent": "скольский?",
      "translateContent": "Skolsky?",
      "answers": [
        {
          "lang": "uk",
          "originalContent": "нет,как раз норм ",
          "translateContent": ""
        }
      ]
    },
    {
      "lang": "ru",
      "totalAnswer": 2,
      "originalContent": "Защитное стекло не поднимает?",
      "translateContent": "Protective glass does not lift?",
      "answers": [
        {
          "lang": "ru",
          "originalContent": "ой,бро, это не тот чехол, а этот чехол мне даже не пришел",
          "translateContent": "Oh, bro, this is not the case, and this case did not even come to me"
        }
      ]
    },
    {
      "lang": "ru",
      "totalAnswer": 2,
      "originalContent": "Заказал прошло 78 дней не пришло продавец не отвечает УРО Д",
      "translateContent": "Ordered 78 days passed did not come the seller does not answer the uro D",
      "answers": [
        {
          "lang": "ru",
          "originalContent": "Мне дошел за три недели, одним пакетом вместе с еще пятью заказами от разных продавцов. ",
          "translateContent": "I got in three weeks, one package together with five more orders from different sellers."
        }
      ]
    }
  ]
}

Industries

Check out how industries are using Amazon data scraper around the world.

saas-btn.webp

eCommerce and Retail

You should have a Real Data API account to execute the program examples. Replace <YOUR_API_TOKEN> in the program using the token of your actor. Read about the live APIs with Real Data API docs for more explanation.

import { RealdataAPIClient } from 'RealdataAPI-client';

// Initialize the RealdataAPIClient with API token
const client = new RealdataAPIClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare actor input
const input = {
    "startUrls": [
        "https://aliexpress.com/category/100003109/women-clothing.html",
        "https://www.aliexpress.com/item/32940810951.html"
    ],
    "maxItems": 10,
    "language": "en_US",
    "shipTo": "US",
    "currency": "USD",
    "proxy": {
        "useRealdataAPIProxy": true
    },
    "extendOutputFunction": ($) => { return {} }
};

(async () => {
    // Run the actor and wait for it to finish
    const run = await client.actor("epctex/aliexpress-scraper").call(input);

    // Fetch and print actor results from the run's dataset (if any)
    console.log('Results from dataset');
    const { items } = await client.dataset(run.defaultDatasetId).listItems();
    items.forEach((item) => {
        console.dir(item);
    });
})();
from RealdataAPI_client import RealdataAPIClient

# Initialize the RealdataAPIClient with your API token
client = RealdataAPIClient("<YOUR_API_TOKEN>")

# Prepare the actor input
run_input = {
    "startUrls": [
        "https://aliexpress.com/category/100003109/women-clothing.html",
        "https://www.aliexpress.com/item/32940810951.html",
    ],
    "maxItems": 10,
    "language": "en_US",
    "shipTo": "US",
    "currency": "USD",
    "proxy": { "useRealdataAPIProxy": True },
    "extendOutputFunction": "($) => { return {} }",
}

# Run the actor and wait for it to finish
run = client.actor("epctex/aliexpress-scraper").call(run_input=run_input)

# Fetch and print actor results from the run's dataset (if there are any)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)
# Set API token
API_TOKEN=<YOUR_API_TOKEN>

# Prepare actor input
cat > input.json <<'EOF'
{
  "startUrls": [
    "https://aliexpress.com/category/100003109/women-clothing.html",
    "https://www.aliexpress.com/item/32940810951.html"
  ],
  "maxItems": 10,
  "language": "en_US",
  "shipTo": "US",
  "currency": "USD",
  "proxy": {
    "useRealdataAPIProxy": true
  },
  "extendOutputFunction": "($) => { return {} }"
}
EOF

# Run the actor
curl "https://api.RealdataAPI.com/v2/acts/epctex~aliexpress-scraper/runs?token=$API_TOKEN" /
  -X POST /
  -d @input.json /
  -H 'Content-Type: application/json'

Start URLs

startUrls Optional Array

Links for the API, to begin with- you should use these category or product information links.

Max items

maxItems Optional Integer

Streamline the maximum number of products to scrape per execution.

Search terms

searchTerms Optional Array

Search query to use for full text search on the platform page.

Search in subcategories

searchInSubcategories Optional Array

Explains the scraper if it should also extract subcategories.

Language

language Optional String

Choose your language

Options:

You can choose any communication language like English, Spanish, German, etc.

Shipping to

shipTo Optional String

Choose your country's location.

You can choose any country among all the countries in the world, like the United States, England, Germany, France, Argentina, India, and others.

Currency

currency Optional String

Choose your currency

Depending on your location, and country, you can choose any currency among the existing ones worldwide, like USD, AUD, EURO, CAD, INR, etc.

Description

includeDescription Optional Boolean

Choose your currency

Mention product descriptions - but you may experience a slowdown of the scraper.

Max feedback count

maxFeedbacks Optional Integer

Fix the maximum feedback entry numbers.

Max Q&A count

maxQuestions Optional Integer

Set the maximum question and answer entries.

Proxy configuration

proxy Required Object

Feed your crawler with selected proxies.

Extend output function

extendOutputFunction Optional String

Function to manage NQuery handle as argument and reflect the data will merge with the generic result.

{
  "startUrls": [
    "https://aliexpress.com/category/100003109/women-clothing.html",
    "https://www.aliexpress.com/item/32940810951.html"
  ],
  "maxItems": 10,
  "searchInSubcategories": true,
  "language": "en_US",
  "shipTo": "US",
  "currency": "USD",
  "includeDescription": false,
  "maxFeedbacks": 0,
  "maxQuestions": 0,
  "proxy": {
    "useRealdataAPIProxy": true
  },
  "extendOutputFunction": "($) => { return {} }"
}