{
  "openapi": "3.0.1",
  "info": {
    "title": "Uber Eats Full Menu Scraper",
    "description": "[💰 $2 / 1K] Extract full Uber Eats menus — every item with price, description, photo and add-on options — plus store ratings, reviews, hours, address, cuisines and delivery fees. Scrape by store URL or discover every store around any address.",
    "version": "1.0",
    "x-build-id": "BiklwC1fPVMISvkzl"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/solidcode~ubereats-full-menu-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-solidcode-ubereats-full-menu-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/solidcode~ubereats-full-menu-scraper/runs": {
      "post": {
        "operationId": "runs-sync-solidcode-ubereats-full-menu-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/solidcode~ubereats-full-menu-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-solidcode-ubereats-full-menu-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": {
          "startUrls": {
            "title": "Store URLs",
            "type": "array",
            "description": "Uber Eats store page links, e.g. https://www.ubereats.com/store/name/abc123. Works with any country version of the site. Leave empty if you'd rather discover stores by address below.",
            "items": {
              "type": "string"
            }
          },
          "address": {
            "title": "Address or City",
            "type": "string",
            "description": "Find stores that deliver to this place, e.g. 'Brooklyn, NY' or '350 5th Ave, New York'. Leave empty if you pasted store URLs above. Outside the US, use Latitude and Longitude below instead — Uber Eats' address lookup favours places near where the request appears to come from, and an address it cannot match is reported plainly rather than searched somewhere else."
          },
          "latitude": {
            "title": "Latitude",
            "type": "string",
            "description": "Exact latitude of the delivery point, e.g. 40.7128. Use together with Longitude when you need pinpoint accuracy — this overrides the address above. Supplying only one of the two is ignored."
          },
          "longitude": {
            "title": "Longitude",
            "type": "string",
            "description": "Exact longitude of the delivery point, e.g. -74.0060. Use together with Latitude — this overrides the address above. Supplying only one of the two is ignored."
          },
          "searchQuery": {
            "title": "Keyword",
            "type": "string",
            "description": "Only find stores matching this cuisine or dish, e.g. 'sushi', 'pizza', 'vegan'. Leave empty to get every store around the address."
          },
          "storeType": {
            "title": "Store Type",
            "enum": [
              "ALL",
              "RESTAURANTS",
              "GROCERY",
              "CONVENIENCE",
              "ALCOHOL",
              "PHARMACY",
              "RETAIL"
            ],
            "type": "string",
            "description": "Which kind of stores to find around the address. Grocery, convenience, alcohol, pharmacy and retail each come from their own Uber Eats category listing and return a single page of stores. 'Restaurants' is everything in the main listing that is not one of those shop categories — the shop categories are checked first, so stores you filter out are never collected or charged for."
          },
          "diningMode": {
            "title": "Delivery or Pickup",
            "enum": [
              "DELIVERY",
              "PICKUP"
            ],
            "type": "string",
            "description": "Prices, fees and store availability differ between delivery and pickup. This applies to the store URLs you pasted above as well as to the address search."
          },
          "maxStores": {
            "title": "Maximum Stores",
            "minimum": 0,
            "type": "integer",
            "description": "How many stores to take from the address search. Set to 0 to take every store found, up to a safety ceiling of 500 stores per run. Does not limit the store URLs you pasted above."
          },
          "includeMenu": {
            "title": "Include Full Menu",
            "type": "boolean",
            "description": "Collect every menu item with its price, description and photo. Turn this off for a fast, cheap list of store profiles only."
          },
          "maxMenuItemsPerStore": {
            "title": "Maximum Menu Items per Store",
            "minimum": 0,
            "type": "integer",
            "description": "Stop after this many items per store. Set to 0 for the complete menu, which is collected page by page up to a safety ceiling of 200 catalog pages (roughly 21,000 items) per store. Recommended for supermarkets and pharmacies, which list far more products than restaurants."
          },
          "includeItemCustomizations": {
            "title": "Include Item Options",
            "type": "boolean",
            "description": "Also collect sizes, toppings, add-ons and their extra charges. WARNING: this makes runs substantially slower and more expensive — every customizable item has to be looked up individually, and at a typical restaurant around 6 in 10 items are customizable. Option lookups for a single store are given up to 4 minutes; on a very large catalog any items still waiting when that time is up are returned complete but without their options. Leave it off unless you specifically need option data."
          },
          "maxResults": {
            "title": "Maximum Results in Total",
            "minimum": 0,
            "type": "integer",
            "description": "Stop the whole run once this many results have been saved, counting store profiles and menu items together. This is your spending safety net: a grocery or supermarket search with the full menu switched on can produce hundreds of thousands of results, and every result is charged for. Set to 0 for no limit. As a run approaches the limit the remaining room is shared out between the stores still being collected, so the last few stores can come back with a shortened menu, and the final count can land a little above this number."
          },
          "includeReviews": {
            "title": "Include Reviews",
            "type": "boolean",
            "description": "Include customer review samples with each store, along with the overall rating and rating count."
          },
          "maxReviewsPerStore": {
            "title": "Maximum Reviews per Store",
            "minimum": 0,
            "type": "integer",
            "description": "Keep at most this many reviews per store. Set to 0 to keep every review the store page provides — Uber Eats publishes a sample of recent reviews rather than the full history."
          },
          "reviewsSince": {
            "title": "Only Reviews Since",
            "type": "string",
            "description": "Skip reviews older than this date. Leave empty to keep all of them. Reviews come free with the store page, so this never adds requests or cost."
          },
          "language": {
            "title": "Language",
            "enum": [
              "en",
              "fr",
              "es",
              "pt",
              "nl",
              "de",
              "pl",
              "sv",
              "ja",
              "zh-TW"
            ],
            "type": "string",
            "description": "Language for store text and menu section names. Applies to the store page and its menu sections. Item names and descriptions are written by each merchant and stay in their original language, and very large catalogs (supermarkets) fall back to English section names on their deeper pages."
          },
          "maxConcurrency": {
            "title": "Stores Processed at Once",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "How many stores to work through in parallel. Lower this if you see failures; raise it for faster runs on large store lists."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}