{
  "openapi": "3.0.1",
  "info": {
    "title": "Domino's Scraper — Stores, Menus, Prices & Coupons",
    "description": "Scrape Domino's Pizza Canada + USA: store addresses, hours, delivery fees, minimum orders and wait times, full menus with store-level prices, calories and toppings, coupons, and price changes between runs. By postal/ZIP code, store ID, or all ~670 Canadian stores. No login.",
    "version": "0.1",
    "x-build-id": "x0nUFOgKj9IaSsPmq"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/yugenox~dominos-stores-menu-prices/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-yugenox-dominos-stores-menu-prices",
        "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~dominos-stores-menu-prices/runs": {
      "post": {
        "operationId": "runs-sync-yugenox-dominos-stores-menu-prices",
        "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~dominos-stores-menu-prices/run-sync": {
      "post": {
        "operationId": "run-sync-yugenox-dominos-stores-menu-prices",
        "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": {
          "locations": {
            "title": "Locations",
            "type": "array",
            "description": "Find the Domino's stores near each location. Use a full postal or ZIP code (\"M5V 3L9\", \"37203\"), a city with its province or state (\"Toronto, ON\", \"Nashville, TN\"), or a street address (\"100 Queen St W, Toronto, ON\"). Each location returns every store in range (up to ~75 in Canadian cities, ~10 in the US) — nearest first. Canadian and US addresses are recognised automatically; a Canadian city the store finder does not know is matched by name against the Canadian store list.",
            "items": {
              "type": "string"
            }
          },
          "storeIds": {
            "title": "Store IDs",
            "type": "array",
            "description": "Domino's store numbers, e.g. \"10497\". Prefix US stores with \"US:\" (\"US:5422\") unless Market is set to USA. Store page links from pizza.dominos.ca work too.",
            "items": {
              "type": "string"
            }
          },
          "allStores": {
            "title": "All Canadian stores",
            "type": "boolean",
            "description": "Scrape every Domino's store in Canada (~670). Combine with Provinces to limit the crawl. A full crawl of stores + menus + coupons takes about 4 minutes (~215,000 rows).",
            "default": false
          },
          "regions": {
            "title": "Provinces / states",
            "type": "array",
            "description": "Only keep stores in these provinces or states: 2-letter codes (\"ON\", \"BC\", \"QC\", \"TX\"…) or names (\"Ontario\", \"Québec\", \"Newfoundland and Labrador\", \"Texas\"). Leave empty for all. If none of the entries is recognised the run stops without scraping (it never silently widens to every store).",
            "items": {
              "type": "string"
            }
          },
          "market": {
            "title": "Market",
            "enum": [
              "CA",
              "US",
              "both"
            ],
            "type": "string",
            "description": "Which Domino's to use for inputs that don't name a country (store IDs, ambiguous city names). Postal/ZIP codes and province/state codes are routed automatically. \"All Canadian stores\" is Canada only.",
            "default": "CA"
          },
          "outputs": {
            "title": "What to output",
            "type": "array",
            "description": "Row types to save. Stores: address, phone, hours, delivery fee, minimum order, wait times. Menu items: every size/crust of every product with this store's price. Coupons: the store's deals. Price changes: what changed since your previous run with price changes turned on (the first run saves a baseline).",
            "items": {
              "type": "string",
              "enum": [
                "stores",
                "menuItems",
                "coupons",
                "priceChanges"
              ],
              "enumTitles": [
                "Stores",
                "Menu items & prices",
                "Coupons & deals",
                "Price changes since last run"
              ]
            },
            "default": [
              "stores",
              "menuItems"
            ]
          },
          "productTypes": {
            "title": "Product types",
            "type": "array",
            "description": "Only output menu items of these types. Leave empty for the whole menu.",
            "items": {
              "type": "string",
              "enum": [
                "Pizza",
                "BuildYourOwnDomino",
                "Wings",
                "Bread",
                "Sides",
                "Pasta",
                "Sandwich",
                "Dessert",
                "Drinks",
                "GSalad"
              ],
              "enumTitles": [
                "Pizza",
                "Domino personal pizza (Canada)",
                "Wings & chicken",
                "Breads",
                "Sides & dips",
                "Pasta",
                "Sandwiches (US)",
                "Desserts",
                "Drinks",
                "Salads (US)"
              ]
            }
          },
          "variantCodes": {
            "title": "Item codes",
            "type": "array",
            "description": "Only output these menu item codes (the variantCode field), e.g. \"14SCREEN\" for a large hand-tossed pizza. Handy for tracking a few prices across many stores.",
            "items": {
              "type": "string"
            }
          },
          "language": {
            "title": "Menu language",
            "enum": [
              "en",
              "fr"
            ],
            "type": "string",
            "description": "French is available for Canadian stores (names, sizes, crusts, toppings and coupons). US stores are always in English.",
            "default": "en"
          },
          "serviceType": {
            "title": "Store finder mode",
            "enum": [
              "Carryout",
              "Delivery"
            ],
            "type": "string",
            "description": "How Locations are searched: Carryout lists the stores near the address; Delivery lists the stores that deliver to it.",
            "default": "Carryout"
          },
          "includeToppings": {
            "title": "Topping names",
            "type": "boolean",
            "description": "Show default and available toppings as names (\"Pepperoni\") instead of codes (\"P\").",
            "default": false
          },
          "includeImages": {
            "title": "Product photos",
            "type": "boolean",
            "description": "Add a verified product photo URL to each menu item.",
            "default": true
          },
          "priceHistoryName": {
            "title": "Price history name",
            "type": "string",
            "description": "Price changes are compared with the last run that used the same name. Use different names to keep separate trackers (e.g. \"weekly-ontario\").",
            "default": "default"
          },
          "maxStores": {
            "title": "Max stores",
            "minimum": 0,
            "type": "integer",
            "description": "Stop after this many stores (0 = no limit). With several locations, stores are taken from each location in turn.",
            "default": 0
          },
          "maxItems": {
            "title": "Max rows",
            "minimum": 0,
            "type": "integer",
            "description": "Stop after saving this many rows in total (0 = no limit).",
            "default": 0
          },
          "maxConcurrency": {
            "title": "Parallel stores",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "How many stores to scrape at once.",
            "default": 8
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Apify Proxy is required. The default datacenter proxy works; the actor switches to residential automatically if it gets blocked.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}