# Alibaba Scraper: Products, Price Tiers & Suppliers (`cleanpull/alibaba-scraper`) Actor

Scrape Alibaba.com products by search term, category or product URL: price range, MOQ, the full quantity price ladder, samples, specs, certifications and supplier trust fields. $1 per 1,000 listings, with Verified, Trade Assurance and country filters and a changes-only monitor.

- **URL**: https://apify.com/cleanpull/alibaba-scraper.md
- **Developed by:** [CleanPull](https://apify.com/cleanpull) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.80 / 1,000 products

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

Alibaba Scraper reads [Alibaba.com](https://www.alibaba.com) wholesale products by search term, category, showroom or product URL and returns one row per product with the price range in US dollars, the MOQ and the supplier's trust signals: Verified and Verified Pro badges, years on Alibaba, country, store rating, reviews and reorder rate. Turn on product details for **the full quantity price ladder** (120–999 pieces at $4.26, 1,000–4,999 at $3.95, 5,000+ at $3.70), sample price, SKU options, specs, certificates, lead time by quantity, Trade Assurance and the supplier's response time, on-time dispatch rate, staff and export markets. Use it as an Alibaba.com scraper, Alibaba product scraper, Alibaba supplier scraper or Alibaba API for B2B sourcing, from **$1 per 1,000 listings** and **$4.20 per 1,000 products with details**.

### What you can do with it

- **"Find Verified yoga mat suppliers with Trade Assurance and an MOQ under 200."** Search by product, tick `verifiedSupplier` and `tradeAssurance`, set `maxMoq`: the site's own filters do the narrowing, so every page holds matching products.
- **"What do I pay per unit at 1,000 pieces?"** Turn on `includeDetails`: each row gets `priceTiers`, the supplier's own quantity price ladder, plus the lead time for each order size.
- **"Shortlist Verified Pro manufacturers in Vietnam with ISO certification."** Combine `verifiedPro`, `supplierCountry: "VN"` and `supplierCertification: "ISO"`.
- **"Vet these suppliers before I send an inquiry."** Paste product pages as start URLs: you get response time, on-time dispatch and reorder rates, staff, export markets, floorspace, verified identity (Custom Manufacturer…), capabilities and certificates with their issuer and validity.
- **"Tell me when a new supplier lists LED strip lights, or when a price or MOQ changes."** Schedule a run with `onlyChanges`: only new listings (`changeType: "added"`) and listings whose price range, MOQ or ladder changed (`changeType: "updated"`, with the earlier values).
- **"Feed an AI sourcing agent."** Pick only the fields it needs with `fields` (for example `title`, `priceMin`, `moq`, `priceTiers`, `supplier.name`).

### Why this actor

- **The full price ladder, not only a range.** With details on, each product's own page is read for every quantity break, the sample price and the lead time per quantity.
- **Supplier trust fields on every row.** Verified and Verified Pro badges, years, country, store rating and reviews, service and shipping scores, reorder rate; with details also response time, on-time dispatch rate, staff, export markets, business type, verified identity, Trade Assurance and its limit.
- **The site's own trust filters.** Verified Supplier, Verified Pro, Trade Assurance, Alibaba Guaranteed, US local stock, samples, store rating, delivery days, supplier country, supplier and product certifications, price and MOQ range, sort by sales. Each card the site returns is also checked against the filters it can show, and a card that fails one is left out, never charged.
- **Only-changes monitoring.** `onlyChanges` remembers what earlier runs of the same searches delivered and returns only new listings and real price, ladder or MOQ changes.
- **Clear about what it could not read.** A search that finds nothing, or an address that cannot be read, gets a free row saying why. Alibaba's bot check, a stand-in page or a page in another currency is asked once more and then reported as a refusal, never as "no results".
- **Built for AI agents.** Compact JSON, numbers as numbers, ISO dates and country codes, absolute URLs, stable product ids and field names, a field picker (`fields`), a dataset schema with views, and a run summary (`RUN_SUMMARY`) with counts and reasons. Works from Apify's MCP server like any actor.

### Input

| Field                                           | Type                    | What it does                                                                                                                       |
| ----------------------------------------------- | ----------------------- | ---------------------------------------------------------------------------------------------------------------------------------- |
| `searchTerms`                                   | array of strings        | Products to search, one per line ("yoga mat"). Read page by page, 48 products a page.                                              |
| `startUrls`                                     | array of URLs           | Search pages (`/trade/search?…`), category pages (a search with `categoryId=…`), showroom pages (`/showroom/…`) and product pages. |
| `maxResultsPerSearch`                           | integer                 | Products per search or search address (default 48, up to 2,400).                                                                   |
| `maxResults`                                    | integer                 | Optional cap across the whole run.                                                                                                 |
| `verifiedSupplier`, `verifiedPro`               | boolean                 | Only suppliers with the Verified badge, or Verified Pro suppliers.                                                                 |
| `tradeAssurance`, `guaranteed`                  | boolean                 | Only products covered by Trade Assurance, or Alibaba Guaranteed products.                                                          |
| `usLocalStock`, `samples`                       | boolean                 | Only products in a US warehouse; only products with samples for sale.                                                              |
| `minReviewScore`                                | `any`, `4`, `4.5`, `5`  | Store rating at least this.                                                                                                        |
| `deliveryDays`                                  | `any`, `18`, `24`, `30` | Delivery to the US within this many days.                                                                                          |
| `supplierCountry`                               | two-letter code         | Only suppliers in this country (CN, VN, IN, US…).                                                                                  |
| `supplierCertification`, `productCertification` | text                    | A management certification of the supplier (ISO, BSCI…) or a product certification (CE, RoHS…), as the site names them.            |
| `minPrice`, `maxPrice`                          | number (USD)            | Unit price range.                                                                                                                  |
| `minMoq`, `maxMoq`                              | integer                 | Minimum order quantity range.                                                                                                      |
| `sort`                                          | `relevance`, `sales`    | The site's order, or by sales volume.                                                                                              |
| `includeDetails`                                | boolean                 | Read each product's page for the price ladder and supplier details (one `product-details` event in place of the listing event).    |
| `onlyChanges`                                   | boolean                 | Only listings new since earlier runs of the same searches, plus listings whose price range, MOQ or ladder changed.                 |
| `fields`                                        | array of strings        | Keep only these fields (dotted paths such as `supplier.name`).                                                                     |

Every filter is sent to Alibaba as its own search filter, so the pages read hold only matching products. The run also checks each card against the filters a card shows (price, MOQ, country, store rating, the Verified and Verified Pro badges, a product certification the card lists) and leaves out a card that fails one. Filters a card does not show (Trade Assurance, Guaranteed, local stock, samples, delivery days, supplier certifications) are left to the site. Filters apply to searches; a product page given as a start URL is delivered as it is.

#### Example inputs

Two searches with trust filters and details:

```json
{
  "searchTerms": ["yoga mat", "resistance bands"],
  "verifiedSupplier": true,
  "tradeAssurance": true,
  "maxMoq": 500,
  "maxResultsPerSearch": 48,
  "includeDetails": true
}
```

A category and a product page, new and changed listings only (schedule it daily):

```json
{
  "startUrls": [
    {
      "url": "https://www.alibaba.com/trade/search?fsb=y&IndexArea=product_en&categoryId=201274359"
    },
    {
      "url": "https://www.alibaba.com/product-detail/TOPKO-Wholesale-Colorful-Gym-Resistance-Band_1600352628798.html"
    }
  ],
  "onlyChanges": true
}
```

### Output

One row per product. Fields:

| Field                                             | What it is                                                                                                                                                                                                                                                                                  |
| ------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `id`, `url`, `title`, `image`                     | Alibaba's product id, the product page, its title and main image                                                                                                                                                                                                                            |
| `priceMin`, `priceMax`, `currency`, `priceText`   | The price range in US dollars (always USD), and as the card writes it                                                                                                                                                                                                                       |
| `moq`, `unit`                                     | Minimum order quantity and its unit                                                                                                                                                                                                                                                         |
| `soldCount`, `isAd`, `guaranteed`, `productScore` | Units sold as shown, a paid placement, Alibaba Guaranteed, the product's review score                                                                                                                                                                                                       |
| `certifications`                                  | Product certification names (CE, RoHS…)                                                                                                                                                                                                                                                     |
| `deliveryBy`, `dispatchDays`, `lowest180DayPrice` | Delivery to the US by this date (ISO), "x-day dispatch", the card's 180-day lowest price badge                                                                                                                                                                                              |
| `supplier`                                        | `name`, `url`, `profileUrl`, `companyId`, `years`, `country`, `verified`, `verifiedPro`, `verifiedManufacturer`, `tradeAssurance`, `rating`, `reviewCount`, `onTimeRate`, `reorderRate`, `serviceScore`, `shippingScore`                                                                    |
| `position`, `page`, `searchTerm`, `sourceUrl`     | Where the product was found (1-based across pages)                                                                                                                                                                                                                                          |
| `detailsRead`                                     | Whether the product page was read                                                                                                                                                                                                                                                           |
| `scrapedAt`                                       | ISO date and time                                                                                                                                                                                                                                                                           |
| With `includeDetails`                             | `priceTiers` (`minQty`, `maxQty`, `price`), `samplePrice`, `sample`, `skuOptions`, `specs`, `certificates`, `leadTime`, `packaging`, `tradeAssurance`, `protections`, `shipFrom`, `images`, `categoryId`, `productRating`, `productReviewCount`, `ranking`                                  |
| With `includeDetails`, in `supplier`              | `responseTime`, `responseTimeHours`, `staff`, `exportMarkets`, `marketRegions`, `city`, `verifiedAs`, `assessed`, `goldSupplier`, `businessType`, `ratingBreakdown`, `onlineRevenue`, `exportRevenueLastYearUsd`, `floorspaceM2`, `customization`, `capabilities`, `tradeAssuranceLimitUsd` |
| With `onlyChanges`                                | `changeType` (`added`, `updated`), `changedFields`, `previous` (the earlier price range, MOQ, ladder and when they were seen)                                                                                                                                                               |

Fields the page does not show are `null` or empty, never guessed. A product sold at one price has an empty `priceTiers` and its price in `priceMin`. Views in the Output tab: Overview, Price ladder, Suppliers, Product details and Changes.

#### Sample record

From a run on 2026-10-27 (Verified Supplier and Trade Assurance filters, `includeDetails` on; lists shortened):

```json
{
  "recordType": "product",
  "id": "1601905333659",
  "url": "https://www.alibaba.com/product-detail/Wholesale-ODM-Custom-Color-Logo-Eco_1601905333659.html",
  "title": "Wholesale ODM Custom Color Logo Eco Friendly TPE Yoga Mat 183x61cm 8mm Rectangle Double Sided High Grip With Carrying Strap",
  "priceMin": 3.7,
  "priceMax": 4.26,
  "currency": "USD",
  "priceText": "$3.70-4.26",
  "moq": 120,
  "unit": "pieces",
  "image": "https://s.alicdn.com/@sc04/kf/H3875157412394f1d81f8e6e27e7d68eaH.png_300x300.png",
  "soldCount": 14,
  "isAd": true,
  "guaranteed": false,
  "certifications": ["Oeko-Tex 100", "CE", "REACH"],
  "deliveryBy": null,
  "dispatchDays": null,
  "lowest180DayPrice": false,
  "productScore": 4.8,
  "supplier": {
    "name": "Yiwu Shengxiang Sports Goods Co., Ltd.",
    "url": "https://ywshengxiang.en.alibaba.com/",
    "profileUrl": "https://ywshengxiang.en.alibaba.com/company_profile.html",
    "companyId": "292192374",
    "years": 1,
    "country": "CN",
    "verified": true,
    "verifiedPro": false,
    "verifiedManufacturer": true,
    "tradeAssurance": true,
    "rating": 4.4,
    "reviewCount": 7,
    "onTimeRate": 100,
    "reorderRate": null,
    "serviceScore": 4.4,
    "shippingScore": 4,
    "city": "Jinhua",
    "verifiedAs": "Custom Manufacturer",
    "assessed": false,
    "goldSupplier": true,
    "businessType": "Manufacturer,Trading Company",
    "ratingBreakdown": { "supplierServices": 4.4, "shippingTime": 4, "productQuality": 4.8 },
    "responseTime": "≤3h",
    "responseTimeHours": 3,
    "staff": "501-1000",
    "exportMarkets": ["United States", "South Africa", "Canada", "Spain", "Italy"],
    "marketRegions": [],
    "onlineRevenue": null,
    "exportRevenueLastYearUsd": null,
    "floorspaceM2": 141006,
    "customization": ["Minor customization", "Drawing-based customization"],
    "capabilities": ["OEM for major brands", "Production lines: 50", "QA/QC inspectors (50)"],
    "tradeAssuranceLimitUsd": 54000
  },
  "position": 2,
  "page": 1,
  "searchTerm": "yoga mat",
  "sourceUrl": "https://www.alibaba.com/trade/search?fsb=y&IndexArea=product_en&has4Tab=true&tab=all&keywords=yoga+mat&originKeywords=yoga+mat&assessmentCompany=true&ta=y",
  "detailsRead": true,
  "scrapedAt": "2026-10-27T02:46:22.179Z",
  "priceTiers": [
    { "minQty": 120, "maxQty": 999, "price": 4.26 },
    { "minQty": 1000, "maxQty": 4999, "price": 3.95 },
    { "minQty": 5000, "maxQty": null, "price": 3.7 }
  ],
  "samplePrice": null,
  "sample": null,
  "skuOptions": [
    { "name": "Size", "values": ["183*61*0.8cm"] },
    { "name": "Color", "values": ["Blush Pink", "Misty Blue", "Matte Black", "Dusk Blue"] }
  ],
  "specs": [
    { "name": "Shape", "value": "Rectangle" },
    { "name": "Place of Origin", "value": "Zhejiang, China" },
    { "name": "Brand Name", "value": "TASHYL" }
  ],
  "certificates": [
    {
      "name": "Oeko-Tex 100",
      "type": "PRODUCT",
      "issuer": "Other",
      "validity": "12/01/2025 - 12/14/2026"
    },
    { "name": "CE", "type": "PRODUCT", "issuer": "Other", "validity": "07/21/2026 - 07/20/2031" }
  ],
  "leadTime": [{ "minQty": 1, "maxQty": 200, "days": 7 }],
  "packaging": null,
  "tradeAssurance": true,
  "protections": ["safePayment", "easyReturn", "taAssurance"],
  "shipFrom": "CN",
  "images": ["https://sc04.alicdn.com/kf/H3875157412394f1d81f8e6e27e7d68eaH.png"],
  "categoryId": "201273273",
  "productRating": null,
  "productReviewCount": null,
  "ranking": "#2 most popular in Yoga Balls",
  "notes": []
}
```

### Pricing

Pay per event: you pay only for products delivered.

| Event                                                                                           | Free            | Bronze          | Silver          | Gold            |
| ----------------------------------------------------------------------------------------------- | --------------- | --------------- | --------------- | --------------- |
| Listing from a search (`listing`)                                                               | $2.00 per 1,000 | $1.00 per 1,000 | $0.90 per 1,000 | $0.80 per 1,000 |
| Product with details (`product-details`, with `includeDetails`)                                 | $8.40 per 1,000 | $4.20 per 1,000 | $3.78 per 1,000 | $3.36 per 1,000 |
| Unchanged product checked on its page (`item-checked`, with `onlyChanges` and `includeDetails`) | $8.40 per 1,000 | $4.20 per 1,000 | $3.78 per 1,000 | $3.36 per 1,000 |

A row is one event: `product-details` when its product page was read (it includes the listing), else `listing`. A product page given as a start URL is one `product-details` event (with `onlyChanges`, one `item-checked` event when it is unchanged). Plus Apify's small start fee per run. With `onlyChanges` and `includeDetails`, the page of every watched product is read so a ladder change is caught: an unchanged product is not delivered, and its page read is one `item-checked` event. Cards left out by a filter, unchanged listings in `onlyChanges` mode without details, pages the site refused and the free rows that explain an entry that gave nothing are not charged. A product page that could not be read leaves its row as the search shows it, charged as a listing. The run checks your spending limit before it asks a product page, and stops before a row it cannot pay for.

### Limits

- Prices are in US dollars: every page is asked from a US address, and a card priced in another currency is left out.
- Alibaba shows the shipping quote only to a signed-in buyer, so shipping cost is not part of the output.
- Alibaba pages show the supplier's response time but not its response rate; the reorder rate is shown for most suppliers.
- With `onlyChanges`, each search watches the products a normal run would deliver (the first Max results per search that pass the filters), and the changes on every page read are delivered in page order up to Max results per search: unchanged listings never take the place of changed ones. Without `includeDetails`, listings are compared on their search card only (price range, MOQ), so a change to the price ladder alone is not seen: turn on `includeDetails` to catch ladder changes (each watched product's page is read; an unchanged one is one `item-checked` event).
- No sign-in and no CAPTCHA solving: a page Alibaba refuses twice is reported in the run summary.
- A search page takes 30 to 90 seconds; product pages are read three at a time.

### Changelog

#### 0.1 (2026-10-27)

- First release: search terms, search, category, showroom and product URLs; price range, MOQ and supplier trust signals from search; full price ladder, samples, SKU options, specs, certificates, lead time and supplier details from the product page; the site's trust, price, MOQ, country, certification and delivery filters; sort by sales; only-changes monitoring.

# Actor input Schema

## `searchTerms` (type: `array`):

Products to search on Alibaba.com, one per line, as a buyer would type them ("yoga mat", "LED strip lights"). Each search is read page by page (48 products a page) up to Max results per search. Leave empty to use Start URLs only; with neither, the run uses the example.

## `startUrls` (type: `array`):

Optional. Alibaba.com addresses: search pages (/trade/search?…, with any filters you set on the site), category pages (a search with categoryId=…, as the site's category links write it), showroom pages (/showroom/yoga-mat.html, read as a search for their words) and product pages (/product-detail/…\_<id>.html). Searches are followed to their next pages; the filters below are added where the address does not set them. A product page is delivered with its details. An address that cannot be read is skipped with a free row saying why.

## `maxResultsPerSearch` (type: `integer`):

Products delivered per search term or search address (default 48 = one page; up to 2,400 = 50 pages; the site pages up to 100). A product already delivered by another search in the run is not repeated.

## `maxResults` (type: `integer`):

Optional. Stop once this many products are delivered across all searches and addresses. Empty: no overall cap (Max results per search still applies).

## `verifiedSupplier` (type: `boolean`):

Only suppliers with Alibaba's Verified badge (checked by a third-party inspection company). Asked of the site; cards without the badge are also left out by this actor (never charged).

## `verifiedPro` (type: `boolean`):

Only Verified Pro suppliers, Alibaba's top verified tier. Asked of the site; cards without the Verified Pro badge are also left out by this actor.

## `tradeAssurance` (type: `boolean`):

Only products covered by Alibaba's Trade Assurance (order protection). Asked of the site, which filters on it; rows then carry supplier.tradeAssurance true.

## `guaranteed` (type: `boolean`):

Only Alibaba Guaranteed products (fixed price with shipping, guaranteed delivery date, money back). Asked of the site.

## `usLocalStock` (type: `boolean`):

Only products in stock in a United States warehouse. Asked of the site.

## `samples` (type: `boolean`):

Only products whose supplier sells samples (the site's Paid samples filter). Asked of the site; with Include product details, rows carry the sample price.

## `minReviewScore` (type: `string`):

Only suppliers whose store rating is at least this. Asked of the site; cards showing a lower rating are also left out by this actor.

## `deliveryDays` (type: `string`):

Only products the site says can be delivered to the US within this many days (its Delivery by filter). Asked of the site.

## `supplierCountry` (type: `string`):

Optional. Only suppliers in this country, as a two-letter code (CN, VN, IN, US, TR…). Asked of the site; cards from another country are also left out by this actor.

## `supplierCertification` (type: `string`):

Optional. Only suppliers holding this management system certification, as the site names it (ISO, BSCI, SEDEX, FSC, GMP, HACCP…). Asked of the site.

## `productCertification` (type: `string`):

Optional. Only products with this certification, as the site names it (CE, RoHS, FCC, REACH, UKCA, CPC…). Asked of the site; a card that lists other certifications only is also left out by this actor.

## `minPrice` (type: `number`):

Optional. Only products with a unit price at or above this, in US dollars. Asked of the site; cards whose whole price range is below it are also left out by this actor.

## `maxPrice` (type: `number`):

Optional. Only products with a unit price at or below this, in US dollars (the cheapest quantity counts). Asked of the site and checked on each card.

## `minMoq` (type: `integer`):

Optional. Only products whose minimum order quantity is at least this. Asked of the site and checked on each card.

## `maxMoq` (type: `integer`):

Optional. Only products whose minimum order quantity is at most this. Asked of the site and checked on each card.

## `sort` (type: `string`):

The order of the search results: the site's relevance order, or by sales volume.

## `includeDetails` (type: `boolean`):

Read each delivered product's page and add the full quantity price ladder, sample price, SKU options (colours, sizes), specs, certificates, lead time by quantity, packaging, Trade Assurance, and the supplier's response time, on-time dispatch rate, reorder rate, staff, export markets, verified identity, business type and capabilities. A row with details is one product-details event in place of its listing event; a page that cannot be read leaves the row as the search shows it, charged as a listing.

## `onlyChanges` (type: `boolean`):

Monitoring: deliver only listings not delivered by earlier runs of the same searches and filters (changeType "added"), plus listings whose price range or MOQ changed on the search or, with Include product details, whose price ladder changed (changeType "updated", with the earlier values in "previous" and the changed fields in "changedFields"). Each search watches the products a normal run would deliver, and the changes on the pages it reads are delivered in page order up to Max results per search. Without Include product details only the search card is compared, so a ladder change alone needs Include product details: then every watched product's page is read, and an unchanged one is not delivered but charged as one item-checked event (a full page read). Unchanged listings are otherwise not charged. Schedule it to watch a product niche.

## `fields` (type: `array`):

Optional. Keep only these fields in each row, for example \["title", "priceMin", "moq", "priceTiers", "supplier.name"]; dotted paths reach inside objects and lists. recordType, id and url always stay. Empty: every field.

## Actor input object example

```json
{
  "searchTerms": [
    "yoga mat",
    "resistance bands"
  ],
  "startUrls": [
    {
      "url": "https://www.alibaba.com/trade/search?fsb=y&IndexArea=product_en&keywords=resistance+bands&ta=y"
    },
    {
      "url": "https://www.alibaba.com/trade/search?fsb=y&IndexArea=product_en&categoryId=201274359"
    },
    {
      "url": "https://www.alibaba.com/product-detail/TOPKO-Wholesale-Colorful-Gym-Resistance-Band_1600352628798.html"
    }
  ],
  "maxResultsPerSearch": 96,
  "maxResults": 200,
  "verifiedSupplier": false,
  "verifiedPro": false,
  "tradeAssurance": false,
  "guaranteed": false,
  "usLocalStock": false,
  "samples": false,
  "minReviewScore": "any",
  "deliveryDays": "any",
  "supplierCountry": "CN",
  "supplierCertification": "ISO",
  "productCertification": "CE",
  "minPrice": 1,
  "maxPrice": 5,
  "minMoq": 100,
  "maxMoq": 500,
  "sort": "relevance",
  "includeDetails": false,
  "onlyChanges": false,
  "fields": [
    "title",
    "priceMin",
    "moq",
    "priceTiers",
    "supplier.name"
  ]
}
```

# Actor output Schema

## `results` (type: `string`):

One row per product with its price range, MOQ and supplier (with details: price ladder and supplier trust fields), and free rows for entries that gave nothing.

## `overview` (type: `string`):

No description

## `tiers` (type: `string`):

No description

## `suppliers` (type: `string`):

No description

## `details` (type: `string`):

No description

## `changes` (type: `string`):

No description

## `runSummary` (type: `string`):

Outcome (COMPLETE, PARTIAL, NO_CHANGES, EMPTY, FAILED), counts, warnings and every entry that could not be read, with the reason.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

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

// Prepare Actor input
const input = {
    "searchTerms": [
        "yoga mat"
    ],
    "maxResultsPerSearch": 48
};

// Run the Actor and wait for it to finish
const run = await client.actor("cleanpull/alibaba-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "searchTerms": ["yoga mat"],
    "maxResultsPerSearch": 48,
}

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

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "searchTerms": [
    "yoga mat"
  ],
  "maxResultsPerSearch": 48
}' |
apify call cleanpull/alibaba-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,cleanpull/alibaba-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/T9QcJriotugSA3vYU/builds/qi1eIFbg8pVUSZCPI/openapi.json
