{
  "openapi": "3.0.1",
  "info": {
    "title": "OpenTable Restaurant Scraper",
    "description": "Scrape OpenTable restaurants by city, neighborhood or ZIP — including the phone numbers, websites and opening hours listing scrapers miss. Plus cuisines, price bands, GPS, full rating breakdowns, reviews and live reservation times as JSON. Pay only for the results you get.",
    "version": "1.0",
    "x-build-id": "10xNT3l0LBYvQEXWB"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/axlymxp~opentable-restaurant-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-axlymxp-opentable-restaurant-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/axlymxp~opentable-restaurant-scraper/runs": {
      "post": {
        "operationId": "runs-sync-axlymxp-opentable-restaurant-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/axlymxp~opentable-restaurant-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-axlymxp-opentable-restaurant-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",
            "type": "string",
            "description": "City, neighborhood or ZIP code to search around — for example 'Chicago', 'Soho, London' or '94110'. Use a plain form; over-qualified strings like 'Chicago, Illinois, USA' resolve less reliably. Ignored when latitude and longitude are set."
          },
          "searchTerm": {
            "title": "Keyword (optional)",
            "type": "string",
            "description": "Narrow the search to restaurants matching a keyword, e.g. 'sushi', 'steakhouse' or a restaurant name. Leave empty to return everything in the area."
          },
          "maxItems": {
            "title": "Max restaurants",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Stop after this many restaurants. Each restaurant is one dataset row.",
            "default": 50
          },
          "includeDetails": {
            "title": "Include full profile (phone, website, hours)",
            "type": "boolean",
            "description": "Fetch each restaurant's full profile. Required for phone number, website, opening hours, dress code, dining style, executive chef, parking, payment options and accessibility. Turning this off makes runs faster but drops those fields.",
            "default": true
          },
          "reviewsPerRestaurant": {
            "title": "Reviews per restaurant",
            "minimum": 0,
            "maximum": 200,
            "type": "integer",
            "description": "Attach up to this many diner reviews to each row (text, sub-ratings, dined date). Set 0 to skip reviews.",
            "default": 0
          },
          "reviewsSortBy": {
            "title": "Review order",
            "enum": [
              "newestReview",
              "highestRating",
              "lowestRating"
            ],
            "type": "string",
            "description": "Order in which reviews are collected.",
            "default": "newestReview"
          },
          "includeAvailability": {
            "title": "Include live reservation times",
            "type": "boolean",
            "description": "Attach bookable timeslots for the reservation date, time and party size below.",
            "default": false
          },
          "fullDayAvailability": {
            "title": "Whole-day availability",
            "type": "boolean",
            "description": "When live reservation times are enabled, return every slot of the service day instead of only those near the reservation time.",
            "default": false
          },
          "reservationDate": {
            "title": "Reservation date",
            "type": "string",
            "description": "Date used for the availability check, in YYYY-MM-DD format. Defaults to today."
          },
          "reservationTime": {
            "title": "Reservation time",
            "type": "string",
            "description": "Time used for the availability check, in 24-hour HH:MM format.",
            "default": "19:00"
          },
          "partySize": {
            "title": "Party size",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "Number of diners used for the availability check.",
            "default": 2
          },
          "cuisines": {
            "title": "Cuisines",
            "type": "array",
            "description": "Only return restaurants of these cuisines, by name (e.g. 'Italian', 'Steakhouse', 'Japanese'). Names are matched against the cuisines OpenTable actually lists for the searched area; an unknown name fails the run with the list of valid options.",
            "items": {
              "type": "string"
            }
          },
          "priceBands": {
            "title": "Price bands",
            "type": "array",
            "description": "Only return restaurants in these price bands.",
            "items": {
              "type": "string",
              "enum": [
                "2",
                "3",
                "4"
              ],
              "enumTitles": [
                "$30 and under",
                "$31 to $50",
                "$50 and over"
              ]
            }
          },
          "sort": {
            "title": "Sort by",
            "enum": [
              "best",
              "distance",
              "rating"
            ],
            "type": "string",
            "description": "Result ordering returned by OpenTable.",
            "default": "best"
          },
          "latitude": {
            "title": "Latitude (optional)",
            "type": "string",
            "description": "Exact search centre latitude, e.g. 41.9014. Set together with longitude to skip location lookup entirely."
          },
          "longitude": {
            "title": "Longitude (optional)",
            "type": "string",
            "description": "Exact search centre longitude, e.g. -87.6503. Set together with latitude to skip location lookup entirely."
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Leave enabled. OpenTable silently drops requests for the full restaurant profile from datacenter IP ranges, so a proxy is required for phone numbers, websites and opening hours.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}