{
  "openapi": "3.0.1",
  "info": {
    "title": "Food Delivery Scraper",
    "description": "Scrape restaurant listings, full menus, prices, and reviews from Wolt, Glovo, Deliveroo, Just Eat, DoorDash, and Instacart by URL, keyword, or delivery address. Export data, run via API, schedule and monitor runs, or integrate with other tools.",
    "version": "0.1",
    "x-build-id": "DaliizhY0I7mczaHM"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/e-commerce~food-delivery-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-e-commerce-food-delivery-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/e-commerce~food-delivery-scraper/runs": {
      "post": {
        "operationId": "runs-sync-e-commerce-food-delivery-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/e-commerce~food-delivery-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-e-commerce-food-delivery-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": {
          "deliveryListingUrls": {
            "title": "🔗 Delivery listing URLs",
            "type": "array",
            "description": "Category or area listing pages to crawl. Every restaurant found on each page is scraped automatically. Paste one URL per line. Examples: 'https://wolt.com/en/de/berlin/restaurants', 'https://deliveroo.co.uk/restaurants/london/soho', 'https://www.just-eat.co.uk/area/sw1a1aa'. Leave empty if you are using restaurant detail URLs or keyword search instead.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "deliveryDetailsUrls": {
            "title": "🍽️ Restaurant detail URLs",
            "type": "array",
            "description": "Direct links to individual restaurant pages. Each URL is scraped separately to return the full menu (categories, dishes, prices, images), restaurant metadata, and reviews where available. Examples: 'https://deliveroo.co.uk/menu/london/soho/pizza-pilgrims', 'https://www.just-eat.co.uk/restaurants-example/menu'. Leave empty if you are using listing URLs or keyword search.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "keywordDelivery": {
            "title": "🔍 Keyword for search",
            "type": "string",
            "description": "Search term used to find dishes and products across the marketplaces you select below. Requires a delivery address so results can be localized. Examples: 'sushi', 'vegan burger', 'pad thai', 'ice cream'. Leave empty if you are scraping by URL."
          },
          "marketplacesDelivery": {
            "title": "🛒 Marketplaces for keyword search",
            "type": "array",
            "description": "Which delivery marketplaces the keyword search runs against. Only applies when 'Keyword for search' is set. Select one or more. Examples: 'www.doordash.com', 'www.instacart.com', 'deliveroo.co.uk'. Default behavior: if left empty, no keyword search is performed.",
            "items": {
              "type": "string",
              "enum": [
                "www.instacart.com",
                "www.doordash.com",
                "wolt.com",
                "glovoapp.com",
                "deliveroo.co.uk",
                "deliveroo.fr",
                "deliveroo.ie",
                "deliveroo.nl",
                "deliveroo.be",
                "deliveroo.it"
              ]
            }
          },
          "addressDelivery": {
            "title": "📍 Delivery address or location",
            "type": "string",
            "description": "Delivery location used to localize availability and pricing for keyword search. Accepts a city, ZIP/postal code, or full street address. Examples: 'New York', '10001', 'Berlin, Germany', '221B Baker Street, London'. Required for keyword search; ignored when scraping by URL."
          },
          "scrapeModeDelivery": {
            "title": "🎯 What to scrape",
            "enum": [
              "Menu items",
              "Restaurants (sellers)",
              "Reviews"
            ],
            "type": "string",
            "description": "What each run returns. 'Menu items' = one row per dish (name, price, description, image). 'Restaurants (sellers)' = one record per venue (rating, address, delivery time, cuisine). 'Reviews' = one row per customer review. All three join on the restaurant URL. Default: 'Menu items'.",
            "default": "Menu items"
          },
          "maxDeliveryResults": {
            "title": "🔢 Total maximum results",
            "minimum": 1,
            "type": "integer",
            "description": "Caps the total number of items (menu items, restaurants, or reviews) collected across the whole run. Use it to control run time and cost. Examples: 50 for a quick test, 1000 for a full area sweep. Default behavior: if left empty, the run collects all available results."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}