{
  "openapi": "3.0.1",
  "info": {
    "title": "Resy Real-Time Data — Restaurants, Contacts & Leads",
    "description": "Collect fresh Resy restaurant data from any market: cuisine, price tier, ratings, reviews, address, coordinates and curated lists. Add contact enrichment for websites, phones, emails and socials. Free plan returns a 2-result sample; paid plans are unlimited.",
    "version": "0.0",
    "x-build-id": "x3YJEb8h1FgU35RTw"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/b2b_leads~Resy-Real-Time-Data/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-b2b_leads-Resy-Real-Time-Data",
        "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/b2b_leads~Resy-Real-Time-Data/runs": {
      "post": {
        "operationId": "runs-sync-b2b_leads-Resy-Real-Time-Data",
        "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/b2b_leads~Resy-Real-Time-Data/run-sync": {
      "post": {
        "operationId": "run-sync-b2b_leads-Resy-Real-Time-Data",
        "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": {
          "enableSearch": {
            "title": "Venue Discovery",
            "type": "boolean",
            "description": "Discover restaurants by keyword and market. Enabled by default.",
            "default": true
          },
          "searchTasks": {
            "title": "Search tasks",
            "type": "array",
            "description": "One row per market, plus an optional keyword. Leave the keyword empty to collect every venue in the market.",
            "items": {
              "type": "object",
              "properties": {
                "keyword": {
                  "title": "Keyword",
                  "type": "string",
                  "description": "Optional. A cuisine, dish, dining style, list name or venue name (e.g. \"sushi\", \"steakhouse\", \"brunch\", \"Date Night\"). Matches against the venue name, cuisine, neighborhood, city and curated list memberships. Leave empty for the whole market.",
                  "editor": "textfield"
                },
                "location": {
                  "title": "Market",
                  "type": "string",
                  "description": "City or area for this task (e.g. \"New York, NY\", \"Austin, TX\", \"Toronto\", \"London\"). Dozens of major markets are recognized out of the box.",
                  "editor": "textfield"
                },
                "maxItems": {
                  "title": "Max results",
                  "type": "integer",
                  "description": "Maximum venues for this task. Uses the global Max items value if omitted.",
                  "minimum": 1,
                  "editor": "number"
                },
                "partySize": {
                  "title": "Party size",
                  "type": "integer",
                  "description": "Party size used when sizing venue availability. Default 2.",
                  "minimum": 1,
                  "maximum": 20,
                  "editor": "number"
                },
                "day": {
                  "title": "Day",
                  "type": "string",
                  "description": "Optional day in YYYY-MM-DD format. Defaults to a few days out.",
                  "editor": "textfield"
                },
                "latitude": {
                  "title": "Latitude (advanced)",
                  "type": "number",
                  "description": "Optional. Use explicit coordinates for a custom area instead of the market centre.",
                  "editor": "number"
                },
                "longitude": {
                  "title": "Longitude (advanced)",
                  "type": "number",
                  "description": "Optional. Use explicit coordinates for a custom area instead of the market centre.",
                  "editor": "number"
                }
              },
              "required": [
                "location"
              ]
            }
          },
          "maxPagesPerTask": {
            "title": "Max collection depth per market",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Safety ceiling on how deep each market is collected for very large runs. Raise it for the biggest markets. NOTE: on the Apify free plan this Actor returns only a small free sample (2 results) — upgrade to a paid Apify plan for full, unlimited output.",
            "default": 30
          },
          "enableCatalogScan": {
            "title": "Full Catalog Scan",
            "type": "boolean",
            "description": "Scan the complete venue catalog and keep only the venues matching your scope filters. Ideal for national or multi-country projects.",
            "default": false
          },
          "catalogCountries": {
            "title": "Countries",
            "type": "array",
            "description": "Keep only venues in these countries. Accepts ISO codes (\"US\", \"CA\", \"GB\") or country names. Leave empty for all countries.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "catalogRegions": {
            "title": "States / regions",
            "type": "array",
            "description": "Keep only venues in these states, provinces or regions (e.g. \"TX\", \"Ontario\", \"NY\"). Leave empty for all regions.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "catalogCities": {
            "title": "Cities",
            "type": "array",
            "description": "Keep only venues in these cities or neighbourhoods (e.g. \"Austin\", \"Brooklyn\"). Leave empty for all cities.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "catalogKeyword": {
            "title": "Keyword",
            "type": "string",
            "description": "Optional keyword applied to the whole catalog scan. Matches the venue name, cuisine, neighbourhood, city and curated list memberships.",
            "default": ""
          },
          "enableVenueDetails": {
            "title": "Venue Details",
            "type": "boolean",
            "description": "Get a complete structured profile for specific Resy venues you already know about.",
            "default": false
          },
          "venueUrls": {
            "title": "Venue URLs",
            "type": "array",
            "description": "Resy venue URLs (e.g. https://resy.com/cities/new-york-ny/venues/caviar-cafe) or Resy deep links. These resolve quickly and precisely.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "venueIds": {
            "title": "Venue IDs",
            "type": "array",
            "description": "Numeric Resy venue IDs. These are resolved from the catalog, so allowing a little extra time per ID is expected.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "enableContactEnrichment": {
            "title": "Contact enrichment (website, phone, email)",
            "type": "boolean",
            "description": "Also resolve each venue's own website, phone number, email addresses and social profiles. Off by default — it adds a little extra time per venue. NOTE: on the Apify free plan this Actor returns only a small free sample (2 results) — upgrade to a paid Apify plan for full, unlimited output.",
            "default": false
          },
          "maxItems": {
            "title": "Max total items",
            "minimum": 1,
            "type": "integer",
            "description": "Global cap on dataset rows for this run across all features. Set it high for large runs. NOTE: on the Apify free plan this Actor returns a small free sample (2 results) — upgrade to a paid Apify plan for full, unlimited output.",
            "default": 1000
          },
          "webhookUrl": {
            "title": "Webhook URL",
            "type": "string",
            "description": "Optional. Every record is always saved to the run's dataset — this webhook is an ADDITIONAL real-time push. When set, each new record is also POSTed to this URL (CRM, Slack incoming webhook, Zapier, Make, Google Sheets). Full output requires a paid Apify plan.",
            "default": ""
          },
          "webhookFormat": {
            "title": "Webhook format",
            "enum": [
              "json",
              "slack"
            ],
            "type": "string",
            "description": "json = full record object; slack = Slack-friendly message payload.",
            "default": "json"
          },
          "proxyConfiguration": {
            "title": "Proxy settings",
            "type": "object",
            "description": "Apify residential proxy is enabled by default for reliable Resy collection. No setup needed.",
            "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}