{
  "openapi": "3.0.1",
  "info": {
    "title": "Yelp Reviews Scraper — Full Text, Owner Replies, Filters",
    "description": "Scrape Yelp reviews with full text, ratings, dates, user info, owner replies, photos and sentiment. Filter by stars, keyword or language. Export scraped data, run the scraper via API, schedule and monitor runs, or integrate with other tools.",
    "version": "1.0",
    "x-build-id": "seBDCQM3ShBFVl7Px"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/korado_labs~yelp-reviews-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-korado_labs-yelp-reviews-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/korado_labs~yelp-reviews-scraper/runs": {
      "post": {
        "operationId": "runs-sync-korado_labs-yelp-reviews-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/korado_labs~yelp-reviews-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-korado_labs-yelp-reviews-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": {
          "startUrls": {
            "title": "Start URLs",
            "type": "array",
            "description": "Yelp business page URLs, e.g. `https://www.yelp.com/biz/gary-danko-san-francisco`. Any Yelp domain works (yelp.com, yelp.co.uk, yelp.ca, yelp.de, …).",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "maxReviewsPerUrl": {
            "title": "Max reviews per business",
            "minimum": 1,
            "type": "integer",
            "description": "Stop after this many reviews per business. Leave empty for all reviews."
          },
          "language": {
            "title": "Language",
            "type": "string",
            "description": "Collect reviews in one language only (e.g. `en`, `de`, `fr`). Leave empty for all languages."
          },
          "dateFrom": {
            "title": "Start date",
            "type": "string",
            "description": "Only reviews posted on or after this date (YYYY-MM-DD)."
          },
          "dateTo": {
            "title": "End date",
            "type": "string",
            "description": "Only reviews posted on or before this date (YYYY-MM-DD)."
          },
          "sort": {
            "title": "Sort reviews by",
            "enum": [
              "relevance",
              "newest",
              "oldest",
              "highest_rated",
              "lowest_rated",
              "elites"
            ],
            "type": "string",
            "description": "Order in which reviews are collected. When a date range is set, newest-first is used automatically.",
            "default": "newest"
          },
          "includeSentiment": {
            "title": "Sentiment analysis",
            "type": "boolean",
            "description": "Tag every review with sentiment {label, score} (VADER). Free — no extra charge.",
            "default": true
          },
          "includeBusinessInfo": {
            "title": "Include business info record",
            "type": "boolean",
            "description": "Also save one free record per business with name, overall rating, review count, address, and phone.",
            "default": true
          },
          "requestTimeoutSecs": {
            "title": "Request timeout (seconds)",
            "minimum": 5,
            "maximum": 120,
            "type": "integer",
            "description": "Per-request timeout.",
            "default": 30
          },
          "proxy": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Yelp uses DataDome anti-bot; the Unblocker proxy group is required and used by default — no setup needed.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "UNBLOCKER"
              ]
            }
          },
          "ratings": {
            "title": "Filter by star rating",
            "type": "array",
            "description": "Only return reviews with these star ratings (1-5). Leave empty for all.",
            "items": {
              "type": "string"
            }
          },
          "query": {
            "title": "Keyword search",
            "type": "string",
            "description": "Only return reviews containing this keyword/phrase. Leave empty for all reviews."
          },
          "browserCdpUrl": {
            "title": "Stealth browser CDP endpoint (recommended)",
            "type": "string",
            "description": "CDP/WSS endpoint of a stealth scraping browser (e.g. Bright Data Scraping Browser, Browserless, ZenRows). Yelp uses DataDome, which blocks datacenter/residential proxies; a stealth browser is the reliable path. Leave empty to try Apify proxies (often 403)."
          },
          "engine": {
            "title": "Engine",
            "enum": [
              "curl",
              "browser"
            ],
            "type": "string",
            "description": "curl = fast browserless HTTP engine that passes DataDome via the Unblocker proxy (default); browser = stealth Chromium (needs browserCdpUrl on DataDome sites).",
            "default": "curl"
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}