{
  "openapi": "3.0.1",
  "info": {
    "title": "Banggood Product & Price Scraper",
    "description": "Scrape Banggood.com - search by keyword, browse by category, or fetch full product detail by URL. Titles, images, real-time prices, discounts, ratings, review counts, brand, and category breadcrumbs. No login, no cookies, no paid proxy.",
    "version": "1.0",
    "x-build-id": "gJU2mAwxseqfXtDXZ"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/crawlerbros~banggood-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-crawlerbros-banggood-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/crawlerbros~banggood-scraper/runs": {
      "post": {
        "operationId": "runs-sync-crawlerbros-banggood-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/crawlerbros~banggood-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-crawlerbros-banggood-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": [
          "mode"
        ],
        "properties": {
          "mode": {
            "title": "Mode",
            "enum": [
              "search",
              "byCategory",
              "productDetail"
            ],
            "type": "string",
            "description": "What to fetch.",
            "default": "search"
          },
          "searchQuery": {
            "title": "Search query (mode=search)",
            "type": "string",
            "description": "Free-text keyword search, e.g. `phone case`, `rc car`, `led strip light`.",
            "default": "phone case"
          },
          "categoryPath": {
            "title": "Category (mode=byCategory)",
            "enum": [
              "Wholesale-Electronics-ca-2001.html",
              "Wholesale-Phones-and-Accessories-ca-1001.html",
              "Wholesale-Computers-and-Office-ca-5001.html",
              "Wholesale-Automobiles-and-Motorcycles-ca-4001.html",
              "Wholesale-Sports-and-Outdoors-ca-6001.html",
              "Wholesale-Home-Appliance-and-Health-ca-18949.html",
              "Wholesale-Lights-and-Lighting-ca-14001.html",
              "Wholesale-Men-and-Womens-Clothing-ca-18941.html",
              "Wholesale-Toys-Hobbies-and-Robot-c-133.html",
              "Wholesale-Home,Garden-and-Furniture-ca-12001.html",
              "Wholesale-Tools,Industrial-and-Scientific-ca-3001.html",
              "Wholesale-Smart-Watch-ca-2210.html",
              "Wholesale-Smart-Wristband-ca-1095.html",
              "Wholesale-Bluetooth-Speakers-ca-1048.html",
              "Wholesale-Earbud-Headphones-and-Earphones-ca-1049.html",
              "Wholesale-Power-Banks-and-Stations-ca-1058.html",
              "Wholesale-Wireless-Chargers-ca-1018.html",
              "Wholesale-Security-Cameras-ca-2471.html",
              "Wholesale-RC-Car-ca-7008.html",
              "Wholesale-RC-Boat-ca-7009.html",
              "Wholesale-Model-and-Building-Toys-ca-7109.html",
              "Wholesale-LED-Solar-Lights-ca-14030.html",
              "Wholesale-Flashlight-ca-14002.html",
              "Wholesale-Robot-Vacuums-Cleaners-ca-9003.html",
              "Wholesale-Humidifiers-ca-9023.html",
              "Wholesale-Massager-Gun-ca-18961.html",
              "Wholesale-Car-DVR-Camera-ca-4119.html",
              "Wholesale-Jump-Starter-ca-4044.html",
              "Wholesale-Code-Readers-and-Scan-Tools-ca-4050.html",
              "Wholesale-Mechanical-Gaming-Keyboard-ca-5030.html",
              "Wholesale-Monitor-ca-5016.html",
              "Wholesale-Projectors-and-Theaters-ca-5084.html",
              "Wholesale-Fishing-and-Hunting-ca-6023.html",
              "Wholesale-Telescope-and-Binoculars-ca-6036.html",
              "Wholesale-Shoes-and-Bags-ca-11001.html",
              "Wholesale-Dresses-ca-16042.html"
            ],
            "type": "string",
            "description": "Banggood department to browse — either one of the 11 top-level departments or a curated popular subcategory within one.",
            "default": "Wholesale-Electronics-ca-2001.html"
          },
          "productUrls": {
            "title": "Product URLs (mode=productDetail)",
            "type": "array",
            "description": "Full Banggood product page URLs, e.g. `https://www.banggood.com/Baseus-SkyRing-Series-Magnetic-Phone-Case-p-1998466.html`.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "sortBy": {
            "title": "Sort by (mode=search only)",
            "enum": [
              "popular",
              "newest",
              "mostReviews",
              "priceAsc",
              "priceDesc"
            ],
            "type": "string",
            "description": "Result order for mode=search, matching Banggood's own sort dropdown/URL parameter exactly (verified against the live site's own sort links). Banggood's category browse pages (mode=byCategory) have no sort control, so this is ignored outside mode=search. Note on priceAsc/priceDesc: Banggood's own server-side price sort is not strictly monotonic — it blends price with relevance/sponsored placement (a common e-commerce pattern), so expect the general trend to hold rather than a mathematically exact ascending/descending sequence.",
            "default": "popular"
          },
          "minPrice": {
            "title": "Min price",
            "minimum": 0,
            "maximum": 1000000,
            "type": "number",
            "description": "Drop products priced (current/final price) below this value."
          },
          "maxPrice": {
            "title": "Max price",
            "minimum": 0,
            "maximum": 1000000,
            "type": "number",
            "description": "Drop products priced (current/final price) above this value."
          },
          "minDiscountPercent": {
            "title": "Min discount %",
            "minimum": 0,
            "maximum": 99,
            "type": "integer",
            "description": "Only emit products discounted by at least this percentage. Discount data is most consistently available in mode=productDetail — search/byCategory listing cards don't always surface a reference (pre-discount) price for every market/region, so this filter can under-match in those modes."
          },
          "minReviewCount": {
            "title": "Min review count",
            "minimum": 0,
            "maximum": 1000000,
            "type": "integer",
            "description": "Drop products with fewer reviews than this. Some category-page card layouts don't surface a review count at all — those products are not excluded by this filter (only products with a known, too-low review count are dropped)."
          },
          "minRating": {
            "title": "Min rating (0-5, mode=productDetail only)",
            "minimum": 0,
            "maximum": 5,
            "type": "number",
            "description": "Drop products rated below this. Banggood only shows a star rating on product detail pages, not on search/category listing cards, so this filter only has an effect in mode=productDetail (no-op pass-through for search/byCategory)."
          },
          "onSaleOnly": {
            "title": "On sale only",
            "type": "boolean",
            "description": "Only emit products currently discounted. Most reliable in mode=productDetail — see the note on Min discount %.",
            "default": false
          },
          "includeTopReviews": {
            "title": "Include top reviews (mode=productDetail only)",
            "type": "boolean",
            "description": "Fetch a small sample of featured customer reviews (reviewer, country, rating, date, text, helpful count, photos) for each product. Adds one extra page load per product, so it's off by default. No effect outside mode=productDetail.",
            "default": false
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 1,
            "maximum": 2000,
            "type": "integer",
            "description": "Hard cap on emitted records. Note on mode=byCategory: Banggood's category browse pages don't expose further pagination (confirmed live -- `?page=N` silently re-renders page 1, and the `-N.html` suffix that works for `/search/` 404s for category URLs), so byCategory returns at most one page (~60 products) regardless of this value. mode=search paginates deeply and can approach this cap on broad/popular queries, though very narrow queries will exhaust their real result set first.",
            "default": 60
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}