{
  "openapi": "3.0.1",
  "info": {
    "title": "Deliveroo Scraper",
    "description": "Scrape restaurant and menu data from Deliveroo - names, ratings, delivery times, full menus with prices across UK, UAE, and Europe.",
    "version": "1.0",
    "x-build-id": "s7VIl0b3GsF4NhO6u"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/thirdwatch~deliveroo-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-thirdwatch-deliveroo-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/thirdwatch~deliveroo-scraper/runs": {
      "post": {
        "operationId": "runs-sync-thirdwatch-deliveroo-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/thirdwatch~deliveroo-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-thirdwatch-deliveroo-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": {
          "restaurantUrls": {
            "title": "Restaurant Menu URLs (cheapest path)",
            "type": "array",
            "description": "Paste specific Deliveroo restaurant menu URLs to scrape exactly those restaurants and their full menus. Skips location discovery entirely: when this field is set, 'queries', 'address', 'location', and 'locationUrl' are ignored. This is the cheapest and fastest path — it runs over plain HTTP, so no browser is started and no browser-start fee is charged. Keep the full URL including '?day=', '&geohash=' and '&time=' — they decide which menu Deliveroo serves. Example: https://deliveroo.co.uk/menu/London/soho/nandos-soho?day=today&geohash=gcpvhcy10y87&time=ASAP",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "queries": {
            "title": "Locations",
            "type": "array",
            "description": "Ignored when 'restaurantUrls' is set. City and neighborhood pairs to scrape restaurants from. Format: 'city/neighborhood'. Examples: 'london/soho', 'dubai/dubai-marina', 'paris/le-marais'. Find these from any Deliveroo listing page URL.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "domain": {
            "title": "Deliveroo Market",
            "enum": [
              "co.uk",
              "ae",
              "fr",
              "it",
              "ie",
              "be",
              "nl",
              "hk",
              "sg",
              "au",
              "qa",
              "kw"
            ],
            "type": "string",
            "description": "Which Deliveroo market to search. Select the country where you want restaurant data.",
            "default": "co.uk"
          },
          "maxResults": {
            "title": "Max Restaurants Per Query",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "Maximum number of restaurants to return per location query. Does not truncate 'restaurantUrls' — an explicit URL list is always scraped in full. Capped to keep exploratory browser runs affordable.",
            "default": 5
          },
          "location": {
            "title": "Location Coordinates",
            "type": "object",
            "description": "Ignored when 'restaurantUrls' is set. Latitude and longitude for address-based markets (UAE, Qatar, Kuwait, etc.) where area slugs don't work. Provide lat/lng directly OR use locationUrl instead. Example: {\"lat\": 25.2048, \"lng\": 55.2708} for Dubai Downtown."
          },
          "locationUrl": {
            "title": "Google Maps URL",
            "type": "string",
            "description": "Ignored when 'restaurantUrls' is set. Google Maps URL to extract coordinates from. Supported formats: 'https://maps.google.com/?q=25.2048,55.2708', 'https://www.google.com/maps/@25.2048,55.2708,15z', or any Google Maps URL with coordinates."
          },
          "address": {
            "title": "Address / Place Name",
            "type": "string",
            "description": "Ignored when 'restaurantUrls' is set. A human-readable address or place name to type into Deliveroo's address search (e.g., 'Dubai Mall', 'Downtown Dubai', 'JBR Beach'). Required for UAE and similar markets that don't have area-based URLs. Used with the location coordinates to set the delivery location."
          },
          "scrapeMenu": {
            "title": "Scrape Full Menus",
            "type": "boolean",
            "description": "Applies to location-based runs only ('restaurantUrls' always returns the full menu). If enabled, also scrapes the full menu (items, prices, descriptions, dietary tags) for each restaurant. This makes additional HTTP requests, takes longer, and caps each query to 25 restaurants.",
            "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}