{
  "openapi": "3.0.1",
  "info": {
    "title": "Alibaba Scraper: Products, Prices, MOQ, Suppliers",
    "description": "Scrape Alibaba.com offers by keyword, search link, category or product link, no login. Get the USD price per unit at the minimum order, the quantity price ladder, MOQ, supplier country, Verified and Trade Assurance badges, and a median price row per search. JSON, CSV, Excel or API; pay per offer.",
    "version": "0.1",
    "x-build-id": "YUcBqCBoWeCfEx7hl"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/automation_craft~alibaba-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-automation_craft-alibaba-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/automation_craft~alibaba-scraper/runs": {
      "post": {
        "operationId": "runs-sync-automation_craft-alibaba-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/automation_craft~alibaba-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-automation_craft-alibaba-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "keywords": {
            "title": "Keywords",
            "type": "array",
            "description": "Product words as you would type them on Alibaba.com, one search each (for example yoga mat, steam cleaner handheld). Duplicates are read once. An Alibaba search or product link pasted here is read as a link. A search whose first page holds no offer whose title carries the words delivers nothing and is not charged.",
            "items": {
              "type": "string"
            }
          },
          "searchUrls": {
            "title": "Search or category links",
            "type": "array",
            "description": "Links copied from alibaba.com: trade/search?SearchText=..., search/page?SearchText=..., catalog/<name>_cid<id>, or a showroom page products/<words>.html (read as a search of its words). Their words, category, page and filters (price, MOQ, verified, verified pro, supplier country, ready to ship, certifications, store rating, samples, sales order) are applied; a setting you give below replaces the link's own. A link with a parameter this Actor does not read is refused with a free row naming it.",
            "items": {
              "type": "string"
            }
          },
          "productUrls": {
            "title": "Product links or ids",
            "type": "array",
            "description": "Alibaba product pages (alibaba.com/product-detail/..._<id>.html) or bare product ids. Each delivered product row is billed as one Product detail; a product Alibaba does not show to the run's address is a free row.",
            "items": {
              "type": "string"
            }
          },
          "categoryIds": {
            "title": "Category ids",
            "type": "array",
            "description": "Alibaba category ids (the digits after _cid in a catalog link, or categoryId in a search link). With keywords, each keyword is searched inside each category; given alone, each category is browsed without words.",
            "items": {
              "type": "string"
            }
          },
          "maxResultsPerKeyword": {
            "title": "Offers per search",
            "minimum": 1,
            "maximum": 960,
            "type": "integer",
            "description": "Most offers delivered per search (a keyword, link or category, per supplier country). 1 to 960: Alibaba serves 20 pages of 48 offers to one search.",
            "default": 20
          },
          "maxPagesPerKeyword": {
            "title": "Pages per search",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "Most result pages of 48 offers read per search, 1 to 20. Left out: up to 20 in Alibaba's own orders, 1 with a price or response rate order (which sorts the offers read)."
          },
          "summaryOffers": {
            "title": "Offers in the first offers figure",
            "minimum": 5,
            "maximum": 50,
            "type": "integer",
            "description": "How many of each search's first offers priced per item (in Alibaba's order, inside your price range) the summary row's first offers figure counts: 5 to 50. Left out: 10. The summary headline uses this figure when fewer than 5 offers have every keyword word in their title."
          },
          "startPage": {
            "title": "Start page",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "The result page each search starts at (1 to 20). Left out: page 1, or a search link's own page."
          },
          "maxItems": {
            "title": "Most paid rows in the run",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Most offer and product rows the whole run delivers and bills, a hard ceiling on its cost (1 to 100,000).",
            "default": 1000
          },
          "sortBy": {
            "title": "Order",
            "enum": [
              "best_match",
              "sales",
              "price_low",
              "price_high",
              "response_rate"
            ],
            "type": "string",
            "description": "best_match (Alibaba's order) or sales (Alibaba's best sellers of the last 180 days); price_low, price_high and response_rate sort the offers this run read (Alibaba serves no such order), and each row says so. Left out: best match, or a search link's own order."
          },
          "minPrice": {
            "title": "Lowest price (USD)",
            "minimum": 0,
            "maximum": 1000000,
            "type": "number",
            "description": "Alibaba's own price filter, in USD per unit. Each row then says outOfRange: true when its price at the minimum order lies outside your range; the summary leaves those rows out of its figures."
          },
          "maxPrice": {
            "title": "Highest price (USD)",
            "minimum": 0,
            "maximum": 1000000,
            "type": "number",
            "description": "Alibaba's own price filter, in USD per unit (see the lowest price)."
          },
          "minMoq": {
            "title": "Smallest minimum order",
            "minimum": 1,
            "maximum": 100000000,
            "type": "integer",
            "description": "Only offers whose minimum order quantity is at least this (checked on each row)."
          },
          "maxMoq": {
            "title": "Largest minimum order",
            "minimum": 1,
            "maximum": 100000000,
            "type": "integer",
            "description": "Only offers you can order in this quantity or less, for example 10 for small test orders (Alibaba's own filter, checked on each row)."
          },
          "orderQuantity": {
            "title": "Your order quantity",
            "minimum": 1,
            "maximum": 1000000000,
            "type": "integer",
            "description": "Adds unitPriceAtQuantity to every row: the price per unit at this quantity, read from the offer's ladder (empty below the offer's minimum order)."
          },
          "supplierCountries": {
            "title": "Supplier countries",
            "type": "array",
            "description": "Two letter codes or English names (CN, IN, VN, TR, US). Each search is read once per country with Alibaba's own country filter.",
            "items": {
              "type": "string"
            }
          },
          "verifiedOnly": {
            "title": "Verified suppliers only",
            "type": "boolean",
            "description": "Suppliers checked by a third party inspection company (Alibaba's Verified badge)."
          },
          "verifiedProOnly": {
            "title": "Verified Pro suppliers only",
            "type": "boolean",
            "description": "Alibaba's Verified Pro suppliers."
          },
          "tradeAssuranceOnly": {
            "title": "Trade Assurance only",
            "type": "boolean",
            "description": "Suppliers that take Trade Assurance orders (checked on each row; almost every supplier does)."
          },
          "businessTypes": {
            "title": "Business types",
            "type": "array",
            "description": "Only suppliers of these business types: manufacturer, trading_company, distributor, buying_office, other. With Verified suppliers only, manufacturer gives verified manufacturers.",
            "items": {
              "type": "string",
              "enum": [
                "manufacturer",
                "trading_company",
                "distributor",
                "buying_office",
                "other"
              ],
              "enumTitles": [
                "Manufacturer",
                "Trading company",
                "Distributor or wholesaler",
                "Buying office",
                "Other"
              ]
            }
          },
          "minSupplierYears": {
            "title": "Least years on Alibaba",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "Only suppliers with at least this many years on Alibaba.com (checked on each row)."
          },
          "minSupplierRating": {
            "title": "Lowest store rating",
            "minimum": 0.1,
            "maximum": 5,
            "type": "number",
            "description": "Only suppliers with at least this store rating out of 5 (4.5 and 5 use Alibaba's own filter; every value is checked on each row)."
          },
          "companyCertifications": {
            "title": "Company certifications",
            "type": "array",
            "description": "Only suppliers holding one of these management certifications, for example ISO, BSCI, IATF 16949 (Alibaba's own filter with the first, every row checked for any of them).",
            "items": {
              "type": "string"
            }
          },
          "excludeSupplierIds": {
            "title": "Supplier ids to leave out",
            "type": "array",
            "description": "Supplier ids (supplier.id of earlier rows) whose offers are left out, free; they never count against a cap. Up to 100,000.",
            "items": {
              "type": "string"
            }
          },
          "productCertifications": {
            "title": "Product certifications",
            "type": "array",
            "description": "Only offers that show one of these product certifications, for example CE, ROHS, FCC, UL (Alibaba's own filter with the first, every row checked for any of them).",
            "items": {
              "type": "string"
            }
          },
          "readyToShip": {
            "title": "Ready to ship only",
            "type": "boolean",
            "description": "Alibaba's Ready to Ship offers."
          },
          "samplesAvailable": {
            "title": "Samples available",
            "type": "boolean",
            "description": "Alibaba's filter for offers you can order a sample of. Ads are left out under it (an ad slot need not follow the filter); with product details on, each row shows the sample price."
          },
          "productTagId": {
            "title": "Alibaba product tag id",
            "type": "string",
            "description": "An Alibaba internal product tag id (7 to 16 digits) sent as Alibaba's product tag filter; rows that do not carry the tag are left out, free."
          },
          "maxLeadTimeDays": {
            "title": "Longest lead time (days)",
            "minimum": 1,
            "maximum": 365,
            "type": "integer",
            "description": "Only offers whose lead time on the search card is at most this many days."
          },
          "excludeAds": {
            "title": "Leave out ads",
            "type": "boolean",
            "description": "Leave out offers placed by paid ads (isAd); they are free. Off: ads are delivered with isAd true."
          },
          "onlyTitleMatches": {
            "title": "Only titles that carry the words",
            "type": "boolean",
            "description": "Leave out, free, offers whose title holds fewer than half of the keyword's words (Alibaba also returns related products). Off: every row says titleMatchesKeyword."
          },
          "excludeOfferIds": {
            "title": "Offer ids to leave out",
            "type": "array",
            "description": "Offer ids (offerId of earlier rows) left out, free. Up to 100,000.",
            "items": {
              "type": "string"
            }
          },
          "includeDetails": {
            "title": "Product details",
            "type": "boolean",
            "description": "Also read each delivered offer's product page: attributes, variants and their prices, customisation, sample price, lead times, packaging, places of dispatch, certifications with validity and the supplier's page facts. Billed as one Product detail per row whose page was read. Pages are read one at a time, about 6 seconds apart.",
            "default": false
          },
          "shipsFromCountries": {
            "title": "Ships from countries",
            "type": "array",
            "description": "Only offers whose product page lists one of these places of dispatch (local stock), as two letter codes. Needs Product details.",
            "items": {
              "type": "string"
            }
          },
          "shipToCountry": {
            "title": "Delivery country",
            "type": "string",
            "description": "Read Alibaba as a buyer in this country (two letter code, for example DE, GB, AU) through an Apify residential exit there: delivery dates and shipping costs are that country's. Prices stay in USD. Billed once per run as Delivery country. Residential reads cost more: keep maxResultsPerKeyword at 20 or more, or the run stops early with a free row that says so. Left out: as a buyer in the United States."
          },
          "includePersonalData": {
            "title": "Include personal data",
            "type": "boolean",
            "description": "With Product details, adds the supplier's contact person as the product page shows them (name, first and last name, gender, job title, photo). Off: those fields are empty. You are responsible for a lawful use of personal data, GDPR included.",
            "default": false
          },
          "includeRawOffer": {
            "title": "Raw offer data",
            "type": "boolean",
            "description": "Adds raw: the source's own offer object of each search row, as served (ad creative payloads left out).",
            "default": false
          },
          "extendOutputFunction": {
            "title": "Extend output function",
            "type": "string",
            "description": "A JavaScript function that gets each row and returns an object stored under custom on that row, for example (row) => ({ perDozen: row.unitPriceAtMoq * 12 }). It runs in a separate sealed process with no access to the run's secrets, files or the network, one second at most per row."
          },
          "maxConcurrency": {
            "title": "Pages in flight",
            "minimum": 1,
            "maximum": 3,
            "type": "integer",
            "description": "Result pages of one search requested at once (1 to 3). Product pages are always read one at a time.",
            "default": 2
          },
          "maxRequestRetries": {
            "title": "Retries per request",
            "minimum": 0,
            "maximum": 5,
            "type": "integer",
            "description": "Times a failed request is asked again (0 to 5).",
            "default": 2
          },
          "maxRunSeconds": {
            "title": "Time limit (seconds)",
            "minimum": 30,
            "maximum": 86400,
            "type": "integer",
            "description": "The run stops reading after this many seconds and writes its rows, summaries and status (30 to 86,400)."
          },
          "debugLog": {
            "title": "Debug log",
            "type": "boolean",
            "description": "Write detailed log lines.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Left out: the run reads from its own address with one Apify datacenter session behind it. Or Apify datacenter from the start (apifyProxyGroups BUYPROXIES94952), or Apify residential with a country (the same as Delivery country). Own proxy links are not used."
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}