{
  "openapi": "3.0.1",
  "info": {
    "title": "Alibaba Scraper & Product Spec Sheet",
    "description": "Alibaba Scraper extracts product listings, prices, suppliers, ratings, minimum order quantities, specifications, and other product data from Alibaba. Automate supplier research, product sourcing, price monitoring, competitor analysis, and B2B market research.",
    "version": "0.1",
    "x-build-id": "9bnVhVN9aohNkwSuu"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scraperx~alibaba-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scraperx-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/scraperx~alibaba-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scraperx-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/scraperx~alibaba-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scraperx-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",
        "required": [
          "urls"
        ],
        "properties": {
          "urls": {
            "title": "🔗 Page URLs (bulk)",
            "type": "array",
            "description": "**Add every Alibaba page you want to collect from** — one URL per line. 📝\n\n✅ **Works well:** search results, category browse pages, and similar listing views you open in a normal browser.\n\n🧭 **Tip:** Copy the address bar from Chrome or Edge after you’ve set filters (keywords, category, etc.) — those settings travel with the link.\n\n📦 **Bulk:** Paste many URLs at once; each is processed in order.",
            "items": {
              "type": "string"
            }
          },
          "maxItems": {
            "title": "🔢 Max Items",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "**Total number of products** you want in the output dataset (across all URLs). 🎯\n\n📊 **Dataset updates live** — rows appear in the output table as each page finishes, and the run stops as soon as your target is reached.\n\n🧮 Alibaba returns ~48 products per result page, so the actor opens just enough pages to satisfy your target — any overflow on the last page is trimmed so you get **exactly** the number you asked for.\n\n🎯 Try **10–50** first, then raise when you’re happy.",
            "default": 10
          },
          "proxyConfiguration": {
            "title": "🛡️ Proxy configuration",
            "type": "object",
            "description": "Use the toggle below to enable Apify Proxy and pick a group. Residential is selected by default."
          },
          "includeSpecSheet": {
            "title": "📋 Get the full spec sheet",
            "type": "boolean",
            "description": "Open each product's own page and pull its **complete specification table** — every attribute the supplier published: material, place of origin, model number, fabric weight, feature tags, and the industry-specific rows Alibaba shows under \"Key attributes\". 📐\n\nThese are the same name/value rows you would otherwise copy by hand into your own listing.\n\n⚠️ Costs **one extra page request per product**.",
            "default": true
          },
          "includeVariantOptions": {
            "title": "🎨 Get colour & size options",
            "type": "boolean",
            "description": "Add the product's **option matrix** — every colour, size, style or model the listing offers, with the swatch image for image-based options, plus the stock count Alibaba reports for each combination. 🧵\n\nYou get the axes (e.g. Color × Size) and the combinations, so your own catalogue can mirror the supplier's exactly.\n\nℹ️ Note: on China-dispatch listings Alibaba publishes **no per-option price** — the price is set at product level (see the price fields on the listing itself). Per-option prices appear only on listings that ship from an overseas warehouse, and are included when present.",
            "default": true
          },
          "includePackagingAndWeight": {
            "title": "📦 Get packed size & weight",
            "type": "boolean",
            "description": "Add the shipping numbers your freight forwarder asks for: **single package size** (L×W×H in cm), **single gross weight** in kg, packed volume, and any packaging properties the supplier listed. ⚖️\n\nThis is what turns a spec sheet into a freight quote and a carton/pallet plan.",
            "default": true
          },
          "includeCertificates": {
            "title": "🏅 Get product certificates",
            "type": "boolean",
            "description": "Add the **certificate records** attached to the product — certificate name (CE, RoHS, FCC, GCC, Oeko-Tex, UKCA…), the certificate **number**, the issuing body, the validity dates, and the scan images. 📄\n\nMarketplaces ask for these documents when you list a regulated product; the base actor only reports that a badge exists.\n\nℹ️ Not every listing has certificates — 2 of 5 test products had none. Products without them return an empty list.",
            "default": true
          }
        }
      },
      "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}