{
  "openapi": "3.0.1",
  "info": {
    "title": "Made-in-China Scraper: Products, Price Tiers & MOQ",
    "description": "Scrape Made-in-China.com wholesale offers by search term, category or offer URL: every quantity price tier, MOQ, price range, supplier type, Gold or Diamond membership, audit badge, years and rating. $1 per 1,000 offers with price tiers, trust filters, offer details and new-offers-only monitoring.",
    "version": "0.1",
    "x-build-id": "uRUO2pqFTJxMCwx72"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/cleanpull~made-in-china-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-cleanpull-made-in-china-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/cleanpull~made-in-china-scraper/runs": {
      "post": {
        "operationId": "runs-sync-cleanpull-made-in-china-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/cleanpull~made-in-china-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-cleanpull-made-in-china-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": {
          "searchTerms": {
            "title": "Search terms",
            "type": "array",
            "description": "Products to search on Made-in-China.com, one per line, as a buyer would type them (\"silicone baking mat\", \"LED strip light\"). Each search is read page by page (30 offers a page) up to Max results per search. Leave empty to use Start URLs only; with neither, the run uses the example.",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Start URLs",
            "type": "array",
            "description": "Optional. Made-in-China.com addresses: search pages (/products-search/…), category pages (/…-Catalog/….html) and offer pages on a supplier's site (<supplier>.en.made-in-china.com/product/…). Search and category pages are followed to their next pages. Filtered pages (/multi-search/…) are closed to automated readers by the site's robots.txt: give the plain page and use the filters below. An address that cannot be read is skipped with a free row saying why.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "maxResultsPerSearch": {
            "title": "Max results per search",
            "minimum": 1,
            "maximum": 600,
            "type": "integer",
            "description": "Offers delivered per search term or listing address (default 30 = one page; up to 600 = 20 pages). Offers left out by the filters do not count, so with filters enough pages are read to fill the request when a third of the offers match (three times as many offers plus one page). At most 40 pages are read per search or address in any case, so with filters a request above 390 offers, or a filter keeping fewer than a third, can deliver fewer.",
            "default": 30
          },
          "maxResults": {
            "title": "Max results in all",
            "minimum": 1,
            "type": "integer",
            "description": "Optional. Stop once this many offers are delivered across all searches and addresses. Empty: no overall cap (Max results per search still applies)."
          },
          "minPrice": {
            "title": "Minimum unit price (USD)",
            "minimum": 0,
            "type": "number",
            "description": "Optional. Keep offers with a unit price at or above this, in US dollars, at any quantity break. Applied by this actor to what the pages show (the site's own filter pages are closed to automated readers), so filtered-out offers are never charged."
          },
          "maxPrice": {
            "title": "Maximum unit price (USD)",
            "minimum": 0,
            "type": "number",
            "description": "Optional. Keep offers with a unit price at or below this, in US dollars, at any quantity break (the cheapest break counts). Applied by this actor after reading; never charged when left out."
          },
          "maxMoq": {
            "title": "Maximum MOQ",
            "minimum": 1,
            "type": "integer",
            "description": "Optional. Keep offers whose minimum order quantity is at most this many units. Applied by this actor after reading; offers that show no MOQ are left out."
          },
          "supplierType": {
            "title": "Supplier type",
            "enum": [
              "any",
              "manufacturer",
              "trading-company"
            ],
            "type": "string",
            "description": "Keep offers from manufacturers or from trading companies, as the supplier's own business type says. Many suppliers are both; they match either choice. Applied by this actor after reading (category pages do not show the type, so it is taken from the offer page).",
            "default": "any"
          },
          "auditedOnly": {
            "title": "Audited suppliers only",
            "type": "boolean",
            "description": "Keep only suppliers audited by an independent inspection agency (the site's Audited Supplier badge). Applied by this actor after reading.",
            "default": false
          },
          "memberLevel": {
            "title": "Membership",
            "enum": [
              "any",
              "gold",
              "diamond"
            ],
            "type": "string",
            "description": "Keep suppliers by their Made-in-China.com membership: Gold or Diamond, or Diamond only. Applied by this actor after reading.",
            "default": "any"
          },
          "samplesOnly": {
            "title": "Samples available only",
            "type": "boolean",
            "description": "Keep only offers whose supplier sells samples (the listing's sample flag or the offer page's Request Sample box). Applied by this actor after reading.",
            "default": false
          },
          "includeOfferDetails": {
            "title": "Include offer details",
            "type": "boolean",
            "description": "Add what the offer page says beyond prices: lead time, HS code (where given), certifications, packaging (package, size, gross weight), sample price, payment terms, Incoterms, production capacity, model number, trademark, origin, product highlights, all images and the supplier's profile (employees, year founded, export markets, nearest port…). Charged as a separate event per offer that has them.",
            "default": false
          },
          "onlyNew": {
            "title": "Only new and changed offers",
            "type": "boolean",
            "description": "Monitoring: deliver only offers not delivered by earlier runs of the same searches, addresses and filters (changeType \"added\"), plus offers whose quantity breaks, price range or MOQ changed (changeType \"updated\", with the earlier values in \"previous\" and the changed fields in \"changedFields\"). Unchanged offers are not delivered or charged. The run watches the same offers a normal run would read (the first Max results per search of each search or address), so each scheduled run reads the same pages. Schedule it to watch a product category.",
            "default": false
          },
          "fields": {
            "title": "Only these fields",
            "type": "array",
            "description": "Optional. Keep only these fields in each row, for example [\"title\", \"priceTiers\", \"moq\", \"supplier.name\"]; dotted paths reach inside objects and lists. recordType, id and url always stay. Empty: every field.",
            "items": {
              "type": "string"
            }
          },
          "includeRaw": {
            "title": "Include raw page data",
            "type": "boolean",
            "description": "Add \"raw\": the offer page's own structured product data (schema.org Product), as the page has it. For checking or for fields this actor does not name.",
            "default": false
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}