{
  "openapi": "3.0.1",
  "info": {
    "title": "Yelp Scraper: Business Data, Reviews, Hidden Reviews & Menus",
    "description": "Scrape Yelp business profiles, ratings, hours, phone, website and photos, plus every review, including the not recommended and removed reviews Yelp hides from the public page. Search any city by keyword, pull full menus with prices. No Yelp account or proxy setup. $3 per 1,000 rows.",
    "version": "0.0",
    "x-build-id": "Z68F8FJiCbtY0drlh"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/sourabhbgp~yelp-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-sourabhbgp-yelp-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/sourabhbgp~yelp-scraper/runs": {
      "post": {
        "operationId": "runs-sync-sourabhbgp-yelp-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/sourabhbgp~yelp-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-sourabhbgp-yelp-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",
        "required": [
          "mode"
        ],
        "properties": {
          "mode": {
            "title": "What to scrape",
            "enum": [
              "reviews",
              "business",
              "notRecommendedReviews",
              "search",
              "photos",
              "menu"
            ],
            "type": "string",
            "description": "Pick one. Business details, reviews, hidden reviews, photos and menus all take Yelp business URLs. Search takes keywords and a location instead.",
            "default": "reviews"
          },
          "businesses": {
            "title": "Yelp businesses",
            "type": "array",
            "description": "Yelp business page URLs, the short alias from the URL such as gary-danko-san-francisco, or a 22 character business ID. Menu and photo page URLs work too.",
            "items": {
              "type": "string"
            }
          },
          "searchTerms": {
            "title": "Search terms",
            "type": "array",
            "description": "Search mode only. One or more keywords, for example dentist or coffee shop. Yelp caps a search at 240 result slots and repeats some listings inside them, so one term returns roughly 200 distinct businesses. Several narrow terms reach far more than one broad one.",
            "items": {
              "type": "string"
            }
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "Search mode only. A city, neighbourhood or postal code, for example San Francisco, CA."
          },
          "enrich": {
            "title": "Add full business details to search results",
            "type": "boolean",
            "description": "Search mode only. Adds phone, website, opening hours and the full rating breakdown to each search result. Merged into the same row, so you are still charged once per business. Name, rating, review count, price and address are always included without this.",
            "default": false
          },
          "sortBy": {
            "title": "Review order",
            "enum": [
              "RELEVANCE_DESC",
              "DATE_DESC",
              "DATE_ASC",
              "RATING_DESC",
              "ELITES_DESC"
            ],
            "type": "string",
            "description": "Reviews mode only. Ignored when Only new reviews is on, which always reads newest first. Elite reviewers first is a Yelp feature that times out on businesses with several thousand reviews, on Yelp's own site too; any other order works at any size.",
            "default": "RELEVANCE_DESC"
          },
          "ratings": {
            "title": "Star ratings",
            "type": "array",
            "description": "Reviews mode only. Keep only these star ratings. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "1",
                "2",
                "3",
                "4",
                "5"
              ],
              "enumTitles": [
                "1 star",
                "2 stars",
                "3 stars",
                "4 stars",
                "5 stars"
              ]
            },
            "default": []
          },
          "query": {
            "title": "Search within reviews",
            "type": "string",
            "description": "Reviews mode only. Keep only reviews mentioning this text. Yelp returns text matches in its own relevance order, so this overrides Review order and Star ratings."
          },
          "delta": {
            "title": "Only new reviews",
            "type": "boolean",
            "description": "Reviews mode only. Returns just the reviews that appeared since the last run, so a daily schedule costs a handful of rows instead of the whole history. Runs must share the same storage name below.",
            "default": false
          },
          "deltaStoreName": {
            "title": "Storage name for Only new reviews",
            "type": "string",
            "description": "Named storage that remembers which reviews were already delivered. Keep it the same across scheduled runs. Change it to start over.",
            "default": "yelp-delta"
          },
          "maxReviewsPerBusiness": {
            "title": "Maximum rows per business",
            "minimum": 0,
            "type": "integer",
            "description": "Caps reviews, hidden reviews, photos or menu items per business. Leave at 0 for everything available. Ignored by Business details, which always returns one row per business.",
            "default": 0
          },
          "maxItems": {
            "title": "Maximum rows in total",
            "minimum": 0,
            "type": "integer",
            "description": "Hard ceiling on rows for the whole run, across every business. 0 means no limit. Rows that report a problem are never counted or charged.",
            "default": 0
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Leave as is unless you have a reason to change it. Yelp works over datacenter proxy, which is the cheapest option; residential is used automatically only if datacenter gets blocked.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}