{
  "openapi": "3.0.1",
  "info": {
    "title": "Yell Scraper - UK Business Phones, Addresses, Emails & Reviews",
    "description": "Scrape Yell.com, the UK business directory: name, phone, website, address, postcode, category, rating and review count by trade and town or Yell URL. Add business details (coordinates, hours, services, payment, socials), reviews and emails from each business's site. Monitor mode, past 250 a search.",
    "version": "0.1",
    "x-build-id": "ez0Jk9stvRbRICktq"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapersdelight~yell-business-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapersdelight-yell-business-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/scrapersdelight~yell-business-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapersdelight-yell-business-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/scrapersdelight~yell-business-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapersdelight-yell-business-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": "Trades or business types",
            "type": "array",
            "description": "What you would type into Yell, e.g. \"plumbers\", \"dentists\", \"solicitors\". Each is searched in every location below. With \"Search by\" set to company name, these are company names (e.g. \"Greggs\").",
            "items": {
              "type": "string"
            }
          },
          "locations": {
            "title": "Locations",
            "type": "array",
            "description": "UK town, city, county or postcode, e.g. \"London\", \"Leeds\", \"M3 3NW\". Empty = the whole United Kingdom.",
            "items": {
              "type": "string"
            }
          },
          "searchBy": {
            "title": "Search by",
            "enum": [
              "keywords",
              "companyName"
            ],
            "type": "string",
            "description": "Trade / keyword (Yell's normal search) or company name (Yell's company search, e.g. every Greggs in Leeds).",
            "default": "keywords"
          },
          "startUrls": {
            "title": "Yell URLs",
            "type": "array",
            "description": "Optional. Yell search pages (yell.com/ucs/UcsSearchAction.do?keywords=...&location=..., or yell.com/s/plumbers-london.html) keep their sort and filters and are paged automatically; a business page (yell.com/biz/...) returns that one business.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "relevance",
              "distance",
              "rating",
              "mostReviewed"
            ],
            "type": "string",
            "description": "Yell's result order. Distance sorts from the searched place.",
            "default": "relevance"
          },
          "onlyWith": {
            "title": "Only businesses with",
            "enum": [
              "any",
              "websites",
              "reviews",
              "photos",
              "videos"
            ],
            "type": "string",
            "description": "Yell's \"only show\" filter (one at a time).",
            "default": "any"
          },
          "category": {
            "title": "Narrow to a Yell category",
            "type": "string",
            "description": "One of the narrower categories Yell offers for a search, e.g. \"Emergency Plumbers\" or \"Boiler Service & Repair\" for plumbers. Empty = all."
          },
          "withPhoneOnly": {
            "title": "With a phone number only",
            "type": "boolean",
            "description": "Skip businesses without a phone number.",
            "default": false
          },
          "withWebsiteOnly": {
            "title": "With a website only",
            "type": "boolean",
            "description": "Skip businesses without a website.",
            "default": false
          },
          "minRating": {
            "title": "Minimum rating",
            "minimum": 0,
            "maximum": 5,
            "type": "number",
            "description": "Only businesses rated at least this (1-5). Businesses with no ratings are skipped when set. 0 = off.",
            "default": 0
          },
          "minReviews": {
            "title": "Minimum number of ratings",
            "minimum": 0,
            "maximum": 10000,
            "type": "integer",
            "description": "Only businesses with at least this many Yell ratings. 0 = off.",
            "default": 0
          },
          "skipSponsored": {
            "title": "Skip sponsored listings",
            "type": "boolean",
            "description": "Leave out paid (sponsored) placements.",
            "default": false
          },
          "includeDetails": {
            "title": "Business details",
            "type": "boolean",
            "description": "Open each business page for the full street address and postcode, coordinates, weekday opening hours, about text, full services list, payment methods, photos, social links and credentials.",
            "default": false
          },
          "includeReviews": {
            "title": "Reviews",
            "type": "boolean",
            "description": "Add the business's Yell reviews (author, date, rating, title, text, business reply), newest first.",
            "default": false
          },
          "maxReviewsPerBusiness": {
            "title": "Reviews per business",
            "minimum": 0,
            "maximum": 1000,
            "type": "integer",
            "description": "Most reviews to add per business. 0 = all of them.",
            "default": 10
          },
          "includeEmails": {
            "title": "Find emails",
            "type": "boolean",
            "description": "Yell publishes no email addresses. This reads each business's own website (homepage + its contact / about page) and keeps addresses on the business's domain or an ordinary mailbox provider (gmail.com, btinternet.com...).",
            "default": false
          },
          "verifyEmailDomain": {
            "title": "Check the email domain receives mail",
            "type": "boolean",
            "description": "Keep an email only when its domain has a mail server (MX record).",
            "default": true
          },
          "monitorMode": {
            "title": "Only new businesses",
            "type": "boolean",
            "description": "Deliver only businesses this search has not delivered in an earlier run (remembered in a named key-value store).",
            "default": false
          },
          "monitorStoreName": {
            "title": "Monitor store name",
            "type": "string",
            "description": "Name of the key-value store that remembers delivered businesses. Default: yell-business-monitor."
          },
          "maxResults": {
            "title": "Max businesses",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Most businesses for the whole run. Yell serves 250 per search (10 pages of 25); use more locations or Deep search for more.",
            "default": 100
          },
          "maxResultsPerSearch": {
            "title": "Max businesses per search",
            "minimum": 0,
            "maximum": 100000,
            "type": "integer",
            "description": "Cap for each term + location pair. 0 = no per-search cap.",
            "default": 0
          },
          "deepSearch": {
            "title": "Deep search (past 250 per search)",
            "type": "boolean",
            "description": "When Yell lists more than 250 businesses for a search, also read it sorted by rating, most reviewed and distance, and under each of Yell's narrower categories. Each adds up to 250 more; repeats are delivered once.",
            "default": false
          },
          "useUnblocker": {
            "title": "Use Apify's Unblocker as the last resort",
            "type": "boolean",
            "description": "When Yell refuses the direct and residential routes, read pages through Apify's Unblocker (kept within a per-run budget).",
            "default": true
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Optional. Requests go direct first, then through Apify's RESIDENTIAL proxy (UK) only when Yell refuses them. Add your own proxy URLs here to use them first.",
            "default": {
              "useApifyProxy": false
            }
          }
        }
      },
      "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}