{
  "openapi": "3.0.1",
  "info": {
    "title": "Yelp Business Scraper",
    "description": "Scrape Yelp business profiles, reviews, ratings, photos, & comprehensive business data. Get detailed local business intelligence from one of the world's largest review platforms. Star Ratings, Review Volume, Review Content, Business Details, Photos & Price Range: $ to $$$$ pricing indicators",
    "version": "1.0",
    "x-build-id": "cZUuQVOqPg3h6HfSR"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/alizarin_refrigerator-owner~yelp-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-alizarin_refrigerator-owner-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/alizarin_refrigerator-owner~yelp-scraper/runs": {
      "post": {
        "operationId": "runs-sync-alizarin_refrigerator-owner-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/alizarin_refrigerator-owner~yelp-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-alizarin_refrigerator-owner-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",
        "properties": {
          "scrapeType": {
            "title": "Scrape Type",
            "enum": [
              "business_profile",
              "search",
              "reviews"
            ],
            "type": "string",
            "description": "What type of data to scrape",
            "default": "business_profile"
          },
          "engine": {
            "title": "Fetch Engine",
            "enum": [
              "auto",
              "fast",
              "browser"
            ],
            "type": "string",
            "description": "Engine for a single business-profile scrape. 'fast' uses TLS impersonation over Yelp's regional domain (no browser, ~3s, rating and review count only) and sidesteps the bot wall on yelp.com. 'browser' uses the Camoufox stealth browser (full data, but often blocked). 'auto' tries fast first, then falls back to browser.",
            "default": "auto"
          },
          "businessUrl": {
            "title": "Business URL",
            "type": "string",
            "description": "Direct Yelp business page URL (e.g., https://www.yelp.com/biz/example-business)"
          },
          "searchTerm": {
            "title": "Search Term",
            "type": "string",
            "description": "Business name or category to search for"
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "City and state or ZIP code (e.g., 'Los Angeles, CA' or '90210')"
          },
          "categories": {
            "title": "Categories",
            "type": "array",
            "description": "Filter by Yelp categories (e.g., 'restaurants', 'plumbers', 'auto repair')",
            "items": {
              "type": "string"
            }
          },
          "priceRange": {
            "title": "Price Range Filter",
            "type": "array",
            "description": "Filter by price level (1-4 dollar signs). Enter as JSON array like [1,2] for $ and $$",
            "items": {
              "type": "integer"
            },
            "default": []
          },
          "minRating": {
            "title": "Minimum Rating",
            "minimum": 0,
            "maximum": 5,
            "type": "number",
            "description": "Minimum star rating (0 to 5.0, where 0 means no filter)",
            "default": 0
          },
          "openNow": {
            "title": "Open Now Only",
            "type": "boolean",
            "description": "Only return businesses currently open",
            "default": false
          },
          "includeReviews": {
            "title": "Include Reviews",
            "type": "boolean",
            "description": "Scrape customer reviews for each business",
            "default": true
          },
          "maxReviewsPerBusiness": {
            "title": "Max Reviews Per Business",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Maximum number of reviews to scrape per business",
            "default": 20
          },
          "includePhotos": {
            "title": "Include Photos",
            "type": "boolean",
            "description": "Extract photo URLs from business profile",
            "default": false
          },
          "maxResults": {
            "title": "Max Results",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Maximum number of businesses to scrape",
            "default": 50
          },
          "sortBy": {
            "title": "Sort Results By",
            "enum": [
              "best_match",
              "rating",
              "review_count",
              "distance"
            ],
            "type": "string",
            "description": "How to sort search results",
            "default": "best_match"
          },
          "proxyConfiguration": {
            "title": "Proxy Configuration",
            "type": "object",
            "description": "Proxy settings for the scraper",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ]
            }
          },
          "demoMode": {
            "title": "Demo Mode",
            "type": "boolean",
            "description": "Return sample data without actual scraping (for testing)",
            "default": false
          },
          "webhookUrl": {
            "title": "Webhook URL",
            "type": "string",
            "description": "URL to POST results when scraping completes (Zapier, Make, n8n, custom endpoint)"
          },
          "webhookPlatform": {
            "title": "Webhook Platform",
            "enum": [
              "zapier",
              "make",
              "n8n",
              "custom"
            ],
            "type": "string",
            "description": "Platform type for webhook payload formatting",
            "default": "custom"
          },
          "webhookHeaders": {
            "title": "Webhook Headers",
            "type": "object",
            "description": "Custom HTTP headers to include with webhook request (JSON object)"
          },
          "competitorAnalysis": {
            "title": "Competitor Gap Finder",
            "type": "boolean",
            "description": "When enabled with a businessUrl, scrapes the target business then finds and compares top competitors in the same category and city. Returns a full gap analysis with rankings, advantages, and weaknesses.",
            "default": false
          },
          "maxCompetitors": {
            "title": "Max Competitors",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "Maximum number of competitors to include in the gap analysis (1-20)",
            "default": 10
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}