{
  "openapi": "3.0.1",
  "info": {
    "title": "1688 Product Scraper & Price Monitor — $0.005/item + $0.01 fee",
    "description": "Scrape any 1688.com category from one English keyword — English titles, MOQ ladders, dropship scores, landed costs, compliance hints — or watch a shortlist of offers over time (price curves + drop/stock alerts). Failed runs cost $0; success: $0.01 base + per-event fees.",
    "version": "0.1",
    "x-build-id": "Zo9LWF4MjQZufsFyd"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/crawleast~1688-product-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-crawleast-1688-product-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/crawleast~1688-product-scraper/runs": {
      "post": {
        "operationId": "runs-sync-crawleast-1688-product-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/crawleast~1688-product-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-crawleast-1688-product-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": {
          "keyword": {
            "title": "Search keyword (English)",
            "type": "string",
            "description": "One English search keyword, e.g. \"led strip lights\" or \"yoga mat\". It is mapped to its Chinese equivalent and searched on 1688.com automatically — no Chinese required."
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 1,
            "maximum": 200,
            "type": "integer",
            "description": "Number of products to deliver (1–200). Default 40 — the sweet spot: full detail coverage in ~5 minutes for a few cents. Large orders (>55) are automatically sharded across fresh identities so EVERY delivered item keeps full detail (run time and cost grow with size; SUMMARY reports exactly what you got). NOTE: when detail enrichment is ON, 20 items is the minimum — below that the run exits instantly with errorCode DETAILS_MIN_20, nothing charged.",
            "default": 40
          },
          "includeDetails": {
            "title": "Include full details & enrichment",
            "type": "boolean",
            "description": "ON (default): every delivered item carries the full detail layer — SKU price range, attributes, landed cost breakdown, suggested retail & margin estimate, dropship-ready score and compliance assessment. Requires maxItems >= 20 (economies of scale). OFF: a cheap card-only trial (headline price, titles, supplier card) at any batch size.",
            "default": true
          },
          "targetMarket": {
            "title": "Target market",
            "enum": [
              "US",
              "EU",
              "UK"
            ],
            "type": "string",
            "description": "Drives the landed-cost tariff model and the compliance rulebook (required certifications, risk level, notes).",
            "default": "US"
          },
          "sort": {
            "title": "Sort by",
            "enum": [
              "relevant",
              "sales",
              "price"
            ],
            "type": "string",
            "description": "Order of the DELIVERED dataset: relevance (platform search order), sales volume (most sold first) or unit price (low to high). The Actor passes the sort to 1688's search layer AND re-sorts the full delivery set before pushing, so the dataset always arrives in the promised order.",
            "default": "relevant"
          },
          "priceMin": {
            "title": "Min price (CNY)",
            "minimum": 0,
            "type": "number",
            "description": "Minimum price in Chinese Yuan. Approximate filter ANCHORED to the card's min (bulk/MOQ) listing price: passed to 1688's search AND re-checked at delivery — cards whose min listing price falls below it are dropped (and never charged). Leave empty for no lower limit."
          },
          "priceMax": {
            "title": "Max price (CNY)",
            "minimum": 0,
            "type": "number",
            "description": "Maximum price in Chinese Yuan. Approximate filter ANCHORED to the card's min (bulk/MOQ) listing price: passed to 1688's search AND re-checked at delivery — cards whose min listing price exceeds it are dropped (and never charged). Note: a card's max (one-piece / top-of-ladder) price may still exceed this bound, since 1688 prices by quantity breaks. Leave empty for no upper limit."
          },
          "maxTotalChargeUsd": {
            "title": "Billing cap (USD)",
            "minimum": 0.04,
            "type": "number",
            "description": "Hard ceiling for this run's event charges. When the intended charge would exceed it, billing is truncated to fit (items delivered beyond the cap are FREE, never dropped) and SUMMARY.billing.truncatedByBudget tells you so. Leave empty for no code-level cap."
          },
          "watchlistOfferIds": {
            "title": "Price-monitor watchlist (offer IDs)",
            "maxItems": 200,
            "type": "array",
            "description": "Up to 200 1688 offer IDs to watch (the numeric ID in a product URL, e.g. 994632611553). IDs beyond 200 are tail-truncated and never billed; invalid IDs are reported per-item and never billed.",
            "items": {
              "type": "string"
            }
          },
          "historyDays": {
            "title": "History window (days)",
            "minimum": 1,
            "maximum": 400,
            "type": "integer",
            "description": "How many days of snapshots the curve aggregates over (min / max / 7-day-low and the change metrics). Default 30.",
            "default": 30
          },
          "alertOnPriceDropPct": {
            "title": "Alert on price drop at least (%)",
            "minimum": 0,
            "type": "number",
            "description": "Optional. Fire a priceDrop alert for an offer when its price fell by at least this percent versus the previous snapshot. Alerts are free (never billed). Leave empty to disable."
          },
          "alertOnStockTightPct": {
            "title": "Alert on stock tightening at least (%)",
            "minimum": 0,
            "type": "number",
            "description": "Optional. Fire a stockTight alert for an offer when its bookable amount shrank by at least this percent versus the previous snapshot. Alerts are free (never billed). Leave empty to disable."
          },
          "webhookUrl": {
            "title": "Alert webhook URL",
            "type": "string",
            "description": "Optional. When set and at least one alert fires, the run POSTs a JSON alert payload here. Time-bounded and non-fatal — a failing webhook is logged and never fails the run."
          },
          "includeTrendReport": {
            "title": "Include weekly trend report",
            "type": "boolean",
            "description": "Optional. Also deliver a trendReport row aggregating the biggest price drops and stock-tightening offers across the watchlist. Billed at $0.25 per report (only when the history store was reachable). Default off.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Apify proxy configuration used for all 1688 traffic.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ],
              "proxyCountry": "CN"
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}