{
  "openapi": "3.0.1",
  "info": {
    "title": "Yelp Reviews API and MCP",
    "description": "Scrape Yelp reviews from a business URL or place ID - rating, full review text, date, reviewer name and stats, photos, owner replies, and helpful votes. Sort by date or rating, filter by stars, search within reviews, and paginate.",
    "version": "0.0",
    "x-build-id": "7QXKfdy5u81qS6sko"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/johnvc~Yelp-Reviews-API/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-johnvc-Yelp-Reviews-API",
        "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/johnvc~Yelp-Reviews-API/runs": {
      "post": {
        "operationId": "runs-sync-johnvc-Yelp-Reviews-API",
        "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/johnvc~Yelp-Reviews-API/run-sync": {
      "post": {
        "operationId": "run-sync-johnvc-Yelp-Reviews-API",
        "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": [
          "place_id"
        ],
        "properties": {
          "place_id": {
            "title": "Business (URL, Place ID, or Alias)",
            "minLength": 1,
            "type": "string",
            "description": "Set the Yelp business to fetch reviews for. Accepts any of: the full Yelp business URL copied from your browser (e.g. 'https://www.yelp.com/biz/maman-new-york-22'), the encoded place ID (e.g. 'ED7A7vDdg8yLNKJTSVHHmg' - the FIRST entry of the place_ids array on every Yelp Search API result), or the business alias (e.g. 'maman-new-york-22'). A URL or alias is resolved to the encoded ID automatically, which costs one extra place_resolved event; supplying the encoded ID skips that fee. A regional business URL (e.g. 'https://www.yelp.co.uk/biz/...') is handled automatically - it sets the Yelp Domain for you. Required."
          },
          "sort_by": {
            "title": "Sort By",
            "enum": [
              "relevance_desc",
              "date_desc",
              "date_asc",
              "rating_desc",
              "rating_asc",
              "elites_desc"
            ],
            "type": "string",
            "description": "Order the reviews. Defaults to Yelp's relevance order. Choose newest/oldest by date, highest/lowest by rating, or elite reviewers first."
          },
          "rating": {
            "title": "Rating Filter",
            "type": "string",
            "description": "Restrict to specific star ratings, 1 to 5. Use a single value (e.g. '5') or a comma-separated list (e.g. '4,5'). Optional."
          },
          "q": {
            "title": "Search Within Reviews",
            "type": "string",
            "description": "Keep only reviews mentioning this keyword or phrase (e.g. 'cheesecake', 'service'). Optional."
          },
          "hl": {
            "title": "Language Code",
            "pattern": "^[a-z]{2}$",
            "type": "string",
            "description": "Set the two-letter language code for the reviews interface (e.g. 'en', 'es', 'fr'). Defaults to English. Optional."
          },
          "not_recommended": {
            "title": "Not Recommended Reviews",
            "type": "boolean",
            "description": "Set true to return Yelp's not-recommended (filtered) reviews instead of the recommended ones. Defaults to false. Known limitation (verified 2026.08.03): the upstream data source returns no filtered reviews for any business right now, so a run with this enabled ends with an explanatory error instead of rows. This mode also accepts no other options, so Sort By, Rating Filter, Search Within Reviews and Language Code are ignored when it is set.",
            "default": false
          },
          "yelp_domain": {
            "title": "Yelp Domain",
            "type": "string",
            "description": "Choose which regional Yelp domain the business is on. Only needed when you supply a bare alias or encoded ID for a non-US business - a pasted regional business URL sets this for you and overrides this field. 41 domains are supported, e.g. 'www.yelp.com' (US), 'www.yelp.ca' (Canada), 'www.yelp.co.uk' (UK), 'www.yelp.fr' (France), 'www.yelp.de' (Germany). Multilingual countries use a language prefix instead of 'www', e.g. 'fr.yelp.ca' or 'zh.yelp.com.hk'. A short form like 'yelp.co.uk' is accepted and expanded for you. Optional - defaults to www.yelp.com. The full list is in the README."
          },
          "max_pages": {
            "title": "Maximum Pages",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Set the maximum number of review pages to fetch (about 49 reviews per page). Set 0 for unlimited, bounded by a safety cap of 20 pages. Default: 1. Each fetched page is billed separately under pay-per-event.",
            "default": 1
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}