{
  "openapi": "3.0.1",
  "info": {
    "title": "Best Buy Canada Scraper — Prices, UPC, Store Stock & Sellers",
    "description": "Scrape bestbuy.ca products by keyword, category, marketplace seller, SKU or URL. Prices by province, sale end dates, UPC + model number, specs, exact per-store stock near any postal code, all marketplace offers with the buy-box winner, reviews and store locations. No login.",
    "version": "0.1",
    "x-build-id": "7mD8sZ774nR4AQ6bb"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/yugenox~bestbuy-canada-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-yugenox-bestbuy-canada-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/yugenox~bestbuy-canada-scraper/runs": {
      "post": {
        "operationId": "runs-sync-yugenox-bestbuy-canada-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/yugenox~bestbuy-canada-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-yugenox-bestbuy-canada-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": {
          "searchQueries": {
            "title": "🔎 Search terms",
            "type": "array",
            "description": "Keywords to search on bestbuy.ca, e.g. \"airpods\", \"oled tv\", \"gaming laptop\". Each term is scraped separately.",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "🔗 Best Buy URLs",
            "type": "array",
            "description": "bestbuy.ca product, category or search pages (English or French). Filters and sort order in the URL are kept, so you can set up a page in your browser and paste it here.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "categoryIds": {
            "title": "🗂️ Category IDs",
            "type": "array",
            "description": "Category IDs from the end of a category URL, e.g. 20352 for Laptops & MacBooks (bestbuy.ca/en-ca/category/laptops-macbooks/20352). Whole departments work too, e.g. 20001 for Computers & Tablets.",
            "items": {
              "type": "string"
            }
          },
          "sellerNames": {
            "title": "🏪 Marketplace sellers",
            "type": "array",
            "description": "Scrape a marketplace seller's whole storefront. Use the seller name exactly as shown on bestbuy.ca, e.g. \"PC Heaven\".",
            "items": {
              "type": "string"
            }
          },
          "skus": {
            "title": "🏷️ SKUs",
            "type": "array",
            "description": "Best Buy SKUs (the number at the end of a product URL, e.g. 19779374) or product URLs. Great for tracking prices and stock on a fixed list of products.",
            "items": {
              "type": "string"
            }
          },
          "storePostalCodes": {
            "title": "📍 List stores near postal codes",
            "type": "array",
            "description": "Adds one row per Best Buy store near each postal code: address, phone, hours, coordinates, distance and store ID.",
            "items": {
              "type": "string"
            }
          },
          "maxItems": {
            "title": "🔢 Max results (total)",
            "minimum": 0,
            "type": "integer",
            "description": "Hard cap on rows for the whole run. 0 = no cap (a whole category can be tens of thousands of products).",
            "default": 100
          },
          "maxItemsPerSource": {
            "title": "Max results per search / category / seller",
            "minimum": 0,
            "type": "integer",
            "description": "Cap for each search term, category, seller or URL. 0 = no cap.",
            "default": 0
          },
          "region": {
            "title": "🍁 Province",
            "enum": [
              "AB",
              "BC",
              "MB",
              "NB",
              "NL",
              "NS",
              "NT",
              "NU",
              "ON",
              "PE",
              "QC",
              "SK",
              "YT"
            ],
            "type": "string",
            "description": "Prices and environmental handling fees (EHF) are shown for this province.",
            "default": "ON"
          },
          "language": {
            "title": "🗣️ Language",
            "enum": [
              "en-CA",
              "fr-CA"
            ],
            "type": "string",
            "description": "Language of product names, descriptions, specs and URLs.",
            "default": "en-CA"
          },
          "sortBy": {
            "title": "↕️ Sort",
            "enum": [
              "relevance",
              "priceLowToHigh",
              "priceHighToLow",
              "highestRated"
            ],
            "type": "string",
            "description": "Order of search and category results. For very large listings (over 2,000 products) the sort applies within each slice.",
            "default": "relevance"
          },
          "includeDetails": {
            "title": "📋 Full product details",
            "type": "boolean",
            "description": "Adds brand, model number, UPC, full specs, description, what's in the box, protection plans, all images and the online stock count. One extra request per product. Turn off for the fastest price-only runs.",
            "default": true
          },
          "includeStoreStock": {
            "title": "🏬 Store stock near a postal code",
            "type": "boolean",
            "description": "Adds the exact units on hand at each Best Buy store near the postal code below, plus online shipping status.",
            "default": false
          },
          "postalCode": {
            "title": "Postal code for store stock",
            "type": "string",
            "description": "Canadian postal code, e.g. M5V 3L9. Used when \"Store stock\" is on."
          },
          "maxStores": {
            "title": "Stores to check",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "How many of the nearest stores to check for stock.",
            "default": 10
          },
          "includeOffers": {
            "title": "🤝 All seller offers",
            "type": "boolean",
            "description": "Adds every seller's offer for each product (price, sale dates, warranty, clearance, EHF for every province) and who wins the buy box.",
            "default": false
          },
          "maxReviewsPerProduct": {
            "title": "💬 Reviews per product",
            "minimum": 0,
            "maximum": 5000,
            "type": "integer",
            "description": "Customer reviews to include with each product (0 = none). Reviews come 100 per request.",
            "default": 0
          },
          "reviewsSort": {
            "title": "Review order",
            "enum": [
              "relevancy",
              "newest",
              "highestRating",
              "lowestRating"
            ],
            "type": "string",
            "description": "Which reviews come first.",
            "default": "relevancy"
          },
          "minPrice": {
            "title": "Min price ($)",
            "minimum": 0,
            "type": "integer",
            "description": "Only products at or above this current price."
          },
          "maxPrice": {
            "title": "Max price ($)",
            "minimum": 0,
            "type": "integer",
            "description": "Only products at or below this current price."
          },
          "onSaleOnly": {
            "title": "On sale only",
            "type": "boolean",
            "description": "Only products whose current price is below the regular price.",
            "default": false
          },
          "clearanceOnly": {
            "title": "Clearance only",
            "type": "boolean",
            "description": "Only clearance products.",
            "default": false
          },
          "excludeMarketplace": {
            "title": "Sold by Best Buy only",
            "type": "boolean",
            "description": "Skip products sold by marketplace sellers.",
            "default": false
          },
          "condition": {
            "title": "Condition",
            "enum": [
              "any",
              "new",
              "openBox",
              "refurbished"
            ],
            "type": "string",
            "description": "Filter by product condition.",
            "default": "any"
          },
          "maxConcurrency": {
            "title": "⚡ Parallel requests",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "How many requests run in parallel. Higher is faster.",
            "default": 20
          },
          "proxyConfiguration": {
            "title": "🌐 Proxy",
            "type": "object",
            "description": "Apify Proxy (automatic) works well and is the default. Blocked IPs are rotated automatically, with a residential fallback.",
            "default": {
              "useApifyProxy": 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
                  },
                  "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}