{
  "openapi": "3.0.1",
  "info": {
    "title": "Uber Eats Scraper — Restaurants, Menus, Prices & Grocery",
    "description": "Scrape Uber Eats restaurants and stores by address, postal code, city or store link: full menus with prices, hours, phone, address, coordinates, ratings, reviews, delivery fees and promotions — plus grocery, pharmacy and convenience aisle prices with deals. Canada, US, UK and more.",
    "version": "0.1",
    "x-build-id": "l4CHUgP4ke65tQCHa"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/yugenox~ubereats-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-yugenox-ubereats-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~ubereats-scraper/runs": {
      "post": {
        "operationId": "runs-sync-yugenox-ubereats-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~ubereats-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-yugenox-ubereats-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": {
          "locations": {
            "title": "Locations",
            "type": "array",
            "description": "Where to look for stores: a street address, postal/ZIP code, neighbourhood, city or \"latitude,longitude\". Each location is searched separately. Examples: \"M5V 3L9\", \"100 Queen St W, Toronto\", \"Shoreditch, London\", \"10001\", \"49.2856,-123.1115\".",
            "items": {
              "type": "string"
            }
          },
          "searchTerms": {
            "title": "Search terms (optional)",
            "type": "array",
            "description": "Keywords to search for near each location, e.g. \"sushi\", \"pizza\", \"pharmacy\", \"Shoppers Drug Mart\". Leave empty to get every store that delivers to the location.",
            "items": {
              "type": "string"
            }
          },
          "storeUrls": {
            "title": "Store links (optional)",
            "type": "array",
            "description": "Uber Eats store pages to scrape directly, e.g. https://www.ubereats.com/ca/store/papa-johns-pizza-200-dundas-st-e/AWUBSjLNT6yLE-wVBC63qA. City pages (…/city/toronto-on) are searched as a location.",
            "items": {
              "type": "string"
            }
          },
          "maxStoresPerSearch": {
            "title": "Max stores per location / search term",
            "minimum": 0,
            "type": "integer",
            "description": "How many stores to collect for each location (and each search term). One point returns up to ~500 stores; use city-wide coverage for more. 0 = as many as available.",
            "default": 50
          },
          "coverage": {
            "title": "Coverage",
            "enum": [
              "nearby",
              "cityWide"
            ],
            "type": "string",
            "description": "\"Nearby\" searches the one point you give (up to ~500 stores — the most Uber Eats shows for a single address). \"City-wide\" searches a grid of points around it and merges the results without duplicates, for thousands of stores in a large city.",
            "default": "nearby"
          },
          "radiusKm": {
            "title": "City-wide radius (km)",
            "minimum": 1,
            "maximum": 40,
            "type": "integer",
            "description": "Only for city-wide coverage: how far from the location to search. Points are ~3 km apart (a 10 km radius ≈ 40 points).",
            "default": 8
          },
          "storeTypes": {
            "title": "Store types (optional)",
            "type": "array",
            "description": "Keep only these kinds of stores. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "restaurant",
                "grocery",
                "convenience",
                "pharmacy",
                "alcohol",
                "retail",
                "specialty food",
                "pet supply",
                "florist"
              ],
              "enumTitles": [
                "Restaurants",
                "Grocery",
                "Convenience",
                "Pharmacy",
                "Alcohol",
                "Retail",
                "Specialty food",
                "Pet supply",
                "Florist"
              ]
            }
          },
          "countryCode": {
            "title": "Country hint (optional)",
            "type": "string",
            "description": "Two-letter country code (CA, US, GB/UK, AU…) to help place ambiguous locations. Five-digit codes are treated as US ZIP codes unless you set this; Canadian and UK postcodes are recognised automatically."
          },
          "diningMode": {
            "title": "Dining mode",
            "enum": [
              "DELIVERY",
              "PICKUP"
            ],
            "type": "string",
            "description": "Delivery or pickup — affects ETAs, fees and availability.",
            "default": "DELIVERY"
          },
          "includeMenu": {
            "title": "Include full menu",
            "type": "boolean",
            "description": "Every menu item with price, description, calories, photo, category and sold-out flag.",
            "default": true
          },
          "includeReviews": {
            "title": "Include reviews",
            "type": "boolean",
            "description": "Recent customer reviews (text, date, reviewer first name and initial).",
            "default": true
          },
          "maxReviewsPerStore": {
            "title": "Max reviews per store",
            "minimum": 0,
            "type": "integer",
            "description": "Uber Eats shows up to ~180 recent reviews per store.",
            "default": 50
          },
          "includeGroceryAisles": {
            "title": "Crawl grocery / retail aisles",
            "type": "boolean",
            "description": "For grocery, pharmacy, convenience, alcohol and retail stores: go through every aisle to collect the full product catalogue with shelf prices and pack sizes (otherwise you get the storefront's first page only). Aisles are sampled evenly up to the per-store limit.",
            "default": false
          },
          "maxItemsPerStore": {
            "title": "Max products per grocery store",
            "minimum": 1,
            "type": "integer",
            "description": "Cap for the aisle crawl (up to 5,000 per store in store output, 20,000 in menu-item output).",
            "default": 500
          },
          "includeItemOptions": {
            "title": "Include item options & nutrition",
            "type": "boolean",
            "description": "For each menu item: its option groups (sizes, add-ons, choices) with extra prices, and nutrition. One extra request per item — slower.",
            "default": false
          },
          "maxItemOptionsPerStore": {
            "title": "Max items with options per store",
            "minimum": 1,
            "type": "integer",
            "description": "How many menu items per store get their options and nutrition (one extra request each).",
            "default": 25
          },
          "outputFormat": {
            "title": "Output format",
            "enum": [
              "stores",
              "menuItems"
            ],
            "type": "string",
            "description": "\"One row per store\" nests the menu inside each store. \"One row per menu item\" gives a flat price list with the store's name, address and location on every row.",
            "default": "stores"
          },
          "maxItems": {
            "title": "Max results (optional)",
            "minimum": 0,
            "type": "integer",
            "description": "Stop after this many rows in total (stores or menu items, depending on the output format). 0 = no limit.",
            "default": 0
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "Parallel requests.",
            "default": 20
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Apify datacenter proxies work for most runs and are the cheapest; the scraper switches to residential proxies automatically if it starts getting blocked.",
            "default": {
              "useApifyProxy": true
            }
          },
          "debug": {
            "title": "Debug log",
            "type": "boolean",
            "description": "Log every request (for troubleshooting).",
            "default": false
          },
          "_noUnblocker": {
            "title": "Run without the UNBLOCKER proxy",
            "type": "boolean",
            "description": "Internal (canaries): behave exactly like an account without the UNBLOCKER proxy group.",
            "default": false
          },
          "_noResidential": {
            "title": "Run as an account without residential proxies",
            "type": "boolean",
            "description": "Internal (canaries): behave exactly like an account without the RESIDENTIAL proxy group.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}