{
  "openapi": "3.0.1",
  "info": {
    "title": "bol.com Scraper - Products, Prices, Offers, Reviews",
    "description": "Scrape bol.com products: title, price, list price and discount, EAN, brand, images, condition, delivery, full specifications, ratings with distribution, individual reviews, every offer with seller name and rating, and refurbished prices. Search by keyword with filters, or paste product URLs.",
    "version": "1.0",
    "x-build-id": "bLJe510VFGeCwrsFv"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/abotapi~bol-com-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-abotapi-bol-com-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/abotapi~bol-com-scraper/runs": {
      "post": {
        "operationId": "runs-sync-abotapi-bol-com-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/abotapi~bol-com-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-abotapi-bol-com-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",
              "url"
            ],
            "type": "string",
            "description": "Choose Search to build queries from keywords and filters, or URL to scrape pasted product or result-page URLs directly.",
            "default": "search"
          },
          "searchTerms": {
            "title": "Search keywords",
            "type": "array",
            "description": "One or more keywords to search for, e.g. \"laptop\", \"koffiezetapparaat\".",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "relevance",
              "popularity",
              "price_asc",
              "price_desc",
              "rating",
              "newest"
            ],
            "type": "string",
            "description": "Result ordering.",
            "default": "relevance"
          },
          "minPrice": {
            "title": "Minimum price (EUR)",
            "minimum": 0,
            "type": "integer",
            "description": "Only keep products at or above this price."
          },
          "maxPrice": {
            "title": "Maximum price (EUR)",
            "minimum": 0,
            "type": "integer",
            "description": "Only keep products at or below this price."
          },
          "minRating": {
            "title": "Minimum rating",
            "minimum": 0,
            "maximum": 5,
            "type": "integer",
            "description": "Only keep products with an average review rating at or above this value (1-5)."
          },
          "condition": {
            "title": "Condition",
            "enum": [
              "any",
              "new",
              "secondhand",
              "refurbished"
            ],
            "type": "string",
            "description": "Keep only products whose best offer matches this condition.",
            "default": "any"
          },
          "sponsoredOnly": {
            "title": "Sponsored products only",
            "type": "boolean",
            "description": "Keep only sponsored (advertised) products.",
            "default": false
          },
          "inStockOnly": {
            "title": "In-stock products only",
            "type": "boolean",
            "description": "Keep only products that have a buyable offer.",
            "default": false
          },
          "urls": {
            "title": "Product or result URLs",
            "type": "array",
            "description": "Paste bol.com product URLs or search-result URLs. Filter fields are ignored in this mode.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "fetchDetails": {
            "title": "Fetch full product details",
            "type": "boolean",
            "description": "Adds the full specifications (incl. EAN), full description, every image, the full review list with rating distribution, seller rating, weight, and refurbished/second-hand offers. Without it, runs already return price, image, rating summary, condition and seller.",
            "default": false
          },
          "maxReviews": {
            "title": "Max reviews per product",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum number of individual reviews captured per product when Fetch full product details is on.",
            "default": 30
          },
          "maxPages": {
            "title": "Max pages per search",
            "minimum": 0,
            "type": "integer",
            "description": "Safety bound on result pages walked per keyword. Leave empty or 0 for unlimited. This does NOT cap the number of products; the run still stops at Max items."
          },
          "maxListings": {
            "title": "Max items",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum number of products to return across the whole run. The single finite cap. Set 0 for unlimited.",
            "default": 20
          },
          "proxy": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Keep Apify Proxy enabled with a Netherlands exit for the most complete bol.com results.",
            "default": {
              "useApifyProxy": true
            }
          },
          "residentialCountries": {
            "title": "Preferred exit countries",
            "type": "array",
            "description": "Preferred exit countries. Defaults to NL then BE, DE, FR, GB.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "backupProxyUrl": {
            "title": "Backup proxy URL",
            "type": "string",
            "description": "Optional backup proxy gateway used when full Apify Proxy access is unavailable on your plan."
          },
          "maxResidentialRequests": {
            "title": "Request cap",
            "minimum": 0,
            "type": "integer",
            "description": "Cost guard limiting how many requests the run may make before switching to the backup gateway. 0 = unlimited. Default 5000."
          },
          "trafficBudgetMb": {
            "title": "Traffic budget (MB)",
            "minimum": 0,
            "type": "integer",
            "description": "Soft transfer budget. When exceeded, the actor switches to the backup gateway. 0 = unlimited. Default 1500."
          },
          "preferDatacenter": {
            "title": "Prefer the cheaper connection first",
            "type": "boolean",
            "description": "Cost-saving connection preference. Leave off unless you know the cheaper connection works for your pool.",
            "default": false
          },
          "autoDowngradeProxy": {
            "title": "Use the cheaper connection when possible",
            "type": "boolean",
            "description": "Cost-saving connection preference. Leave on to prefer the cheaper connection whenever results remain complete.",
            "default": true
          },
          "mcpConnectors": {
            "title": "Export to your apps (MCP)",
            "type": "array",
            "description": "Optional. Pick connected apps (Notion, Airtable, Linear, Apify) to also push each scraped product to, in addition to the dataset.",
            "default": []
          },
          "notionParentPageUrl": {
            "title": "Notion parent page URL",
            "type": "string",
            "description": "Optional. When a Notion connector is selected, create one page per product under this parent page."
          },
          "maxNotifyListings": {
            "title": "Max items to export",
            "minimum": 0,
            "type": "integer",
            "description": "Optional cap on how many products are pushed to the selected MCP connectors."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}