{
  "openapi": "3.0.1",
  "info": {
    "title": "Yellow Pages US Scraper — Business Leads & Reviews",
    "description": "Scrape US business listings from yellowpages.com — name, phone, address, website, email, hours, services, ratings, reviews, social links, BBB accreditation, and trust signals. Search by keyword + location, paste category URLs, or pull individual business profiles.",
    "version": "1.0",
    "x-build-id": "AWNSIF1naBDeJPiep"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/muhammadafzal~yellow-pages-us-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-muhammadafzal-yellow-pages-us-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/muhammadafzal~yellow-pages-us-scraper/runs": {
      "post": {
        "operationId": "runs-sync-muhammadafzal-yellow-pages-us-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/muhammadafzal~yellow-pages-us-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-muhammadafzal-yellow-pages-us-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": {
          "searchTerms": {
            "title": "Search Terms",
            "type": "array",
            "description": "Keywords or business categories to search for on Yellow Pages. Examples: \"plumber\", \"dentist\", \"italian restaurant\", \"auto repair\". Each term is cross-joined with every entry in Locations — for example, 2 terms x 3 locations = 6 searches. Use this when the user describes a type of business or category. Use startUrls instead when the user provides specific yellowpages.com URLs.",
            "items": {
              "type": "string"
            }
          },
          "locations": {
            "title": "Locations",
            "type": "array",
            "description": "US locations in \"City, ST\" format, or 5-digit ZIP codes. Examples: \"Boston, MA\", \"90210\", \"Brooklyn, NY\", \"Austin, TX\". Each location is cross-joined with every search term. Use \"City, ST\" for best results — Yellow Pages geocodes the location and returns nearby businesses.",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Yellow Pages URLs",
            "type": "array",
            "description": "Paste one or more yellowpages.com URLs. Accepts search results (yellowpages.com/search?...), city-category pages (yellowpages.com/boston-ma/plumbers), or individual business profiles (yellowpages.com/.../mip/<slug>-<id>). Filters in the URL are honored as-is. When provided alongside searchTerms, both are crawled. Use this when the user provides specific URLs instead of keywords.",
            "items": {
              "type": "object",
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL",
                  "description": "A yellowpages.com URL — search results, city-category page, or individual business profile URL"
                }
              }
            }
          },
          "sortBy": {
            "title": "Sort Listings By",
            "enum": [
              "default",
              "distance",
              "name",
              "rating"
            ],
            "type": "string",
            "description": "How Yellow Pages sorts the search results before we collect them. \"default\" = relevance (YP's own ranking). \"distance\" = nearest first. \"name\" = alphabetical. \"rating\" = highest rated first. Applies to keyword + location searches and category URLs; ignored for individual business profile URLs.",
            "default": "default"
          },
          "includeReviews": {
            "title": "Include Client Reviews",
            "type": "boolean",
            "description": "When enabled, embed each business's customer reviews on the result row (newest first). Off by default — turning this on makes runs slower and more expensive, since each business needs additional review-page fetches. Use maxReviewsPerBusiness to cap the count.",
            "default": false
          },
          "maxReviewsPerBusiness": {
            "title": "Max Reviews per Business",
            "minimum": 0,
            "type": "integer",
            "description": "Cap on the number of reviews captured per business when \"Include Client Reviews\" is on (most recent first). Set to 0 to capture every available review (an internal hard cap of ~2,000 reviews per business still applies). Ignored when reviews are disabled.",
            "default": 30
          },
          "maxResults": {
            "title": "Max Results",
            "minimum": 0,
            "type": "integer",
            "description": "Hard cap on total business rows across all searches and URLs. Default 100 — increase for bigger runs, or set to 0 for no cap (an internal upper limit of 100,000 still applies). The actor stops requesting new listing pages once this number is reached but keeps the full final page even if it slightly overshoots. A single search term + location pair caps at roughly 6,000 results (Yellow Pages itself rarely returns more) — split a large request across multiple cities or ZIPs to gather more.",
            "default": 100
          },
          "maxPagesPerSearch": {
            "title": "Max Pages per Search",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "Maximum result pages to crawl per (search term x location) pair or per start URL. Yellow Pages typically caps results around 30 pages. Lower this for faster, cheaper runs; raise it for exhaustive coverage. Default 5 balances coverage and cost.",
            "default": 5
          },
          "proxyConfiguration": {
            "title": "Proxy Configuration",
            "type": "object",
            "description": "Apify proxy settings. US residential proxies (RESIDENTIAL, country US) are REQUIRED — Yellow Pages is fronted by Cloudflare and blocks datacenter IPs and non-US residential ranges. Leave as default unless you have a custom residential proxy provider (Decodo, Bright Data, IPRoyal).",
            "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}