{
  "openapi": "3.0.1",
  "info": {
    "title": "Uber Eats Scraper",
    "description": "Scrape Uber Eats restaurants and full menus by location or store URL. HTTP-only, no login, MCP-ready.",
    "version": "1.0",
    "x-build-id": "S06XFwrWki2V2aS3A"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/khadinakbar~uber-eats-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-khadinakbar-uber-eats-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/khadinakbar~uber-eats-scraper/runs": {
      "post": {
        "operationId": "runs-sync-khadinakbar-uber-eats-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/khadinakbar~uber-eats-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-khadinakbar-uber-eats-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": {
          "location": {
            "title": "Location (address or city)",
            "type": "string",
            "description": "Free-text address or city to search Uber Eats restaurants near (e.g. 'New York, NY' or '350 5th Ave, New York'). It is geocoded automatically to latitude/longitude. Defaults to 'New York, NY'. Leave blank if you instead provide locationLatLng or startUrls."
          },
          "locationLatLng": {
            "title": "Location lat,lng (overrides geocoding)",
            "type": "string",
            "description": "Exact coordinates as 'latitude,longitude' (e.g. '40.758,-73.9855'). Use this to skip geocoding or to target a precise delivery point. When set, it takes precedence over the location field. Not a place name — use the location field for free text."
          },
          "startUrls": {
            "title": "Uber Eats store URLs (menu mode)",
            "type": "array",
            "description": "List of Uber Eats restaurant/store URLs to scrape full menus from (e.g. 'https://www.ubereats.com/store/<slug>/<id>'). Each URL returns one record with the complete menu (sections, items, prices, descriptions). Use this for direct menu extraction instead of location search. Not for search keywords — use searchQuery for that.",
            "items": {
              "type": "string"
            }
          },
          "searchQuery": {
            "title": "Search keyword (cuisine, dish, or brand)",
            "type": "string",
            "description": "Optional keyword to search Uber Eats near the location (e.g. 'sushi', 'pizza', 'vegan', 'mcdonald'). Runs Uber's own relevance search and returns matching restaurants ranked by Uber. Leave blank to browse all nearby restaurants. Ignored in store-URL mode."
          },
          "enrichMenus": {
            "title": "Fetch full menu for each restaurant",
            "type": "boolean",
            "description": "When true, each restaurant in the location feed is enriched with its full menu (items, prices, descriptions, cuisines, phone, address) up to maxMenusToScrape. When false (default), only restaurant cards are returned (faster and cheaper). Adds a menu-scraped charge per enriched store. Has no effect in store-URL mode (URLs always return full menus).",
            "default": false
          },
          "maxRestaurants": {
            "title": "Max restaurants",
            "minimum": 1,
            "maximum": 200,
            "type": "integer",
            "description": "Maximum number of restaurant records to return from the location feed (e.g. 50). Caps cost and runtime. Defaults to 50; a typical feed holds ~90-125 restaurants. Ignored in store-URL mode.",
            "default": 50
          },
          "maxMenusToScrape": {
            "title": "Max menus to enrich",
            "minimum": 1,
            "maximum": 200,
            "type": "integer",
            "description": "Maximum number of full menus to fetch when enrichMenus is true (e.g. 20). Each enriched menu adds a menu-scraped charge. Defaults to 20. Lower it to control cost on large feeds.",
            "default": 20
          },
          "diningMode": {
            "title": "Dining mode",
            "enum": [
              "DELIVERY",
              "PICKUP"
            ],
            "type": "string",
            "description": "Whether to return DELIVERY or PICKUP availability and pricing. Defaults to DELIVERY. Pickup feeds may show different stores and fees.",
            "default": "DELIVERY"
          },
          "localeCode": {
            "title": "Locale code",
            "type": "string",
            "description": "Uber Eats locale for the API (e.g. 'en-US', 'en-GB', 'fr-FR'). Affects language and regional formatting. Defaults to 'en-US'. Advanced — leave as default for US targets.",
            "default": "en-US"
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Proxy settings. Defaults to Apify Residential proxies in the US, recommended because Uber Eats blocks most datacenter IPs. You may switch country to match your target market.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ],
              "apifyProxyCountry": "US"
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}