{
  "openapi": "3.0.1",
  "info": {
    "title": "Businesses Without Websites: Local Leads for Web Designers",
    "description": "Find local businesses with no website: pick a trade and a city, get name, phone, address, rating and reviews for places that list no website on Google Maps, cross-checked on Bing, with a flag for businesses that only have a Facebook or Instagram page. Pay only for qualified leads: $0.004 each.",
    "version": "0.6",
    "x-build-id": "qVKq9pSnIOq1690qA"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/datagleaner~businesses-without-websites-leads/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-datagleaner-businesses-without-websites-leads",
        "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/datagleaner~businesses-without-websites-leads/runs": {
      "post": {
        "operationId": "runs-sync-datagleaner-businesses-without-websites-leads",
        "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/datagleaner~businesses-without-websites-leads/run-sync": {
      "post": {
        "operationId": "run-sync-datagleaner-businesses-without-websites-leads",
        "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": {
          "trades": {
            "title": "Trades or business types",
            "type": "array",
            "description": "What kind of business, as you would type it into Google Maps: `plumber`, `hair salon`, `restaurant`, `electrician`. Every trade is searched in every location. Leave trades and locations empty to run a small built-in example (up to 5 leads).",
            "items": {
              "type": "string"
            }
          },
          "locations": {
            "title": "Cities or areas",
            "type": "array",
            "description": "City, area or postcode to search in, with the state or country when the name is common: `Austin, TX`, `Leeds, UK`. One search returns up to about 200 places, so split a big city into districts for more leads.",
            "items": {
              "type": "string"
            }
          },
          "searches": {
            "title": "Extra free-text searches (optional)",
            "type": "array",
            "description": "Full Google Maps searches added to the trade x location list, e.g. `nail salon near 78701`. Optional.",
            "items": {
              "type": "string"
            }
          },
          "maxLeadsPerSearch": {
            "title": "Max leads per search",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Stop each search after this many qualified leads. Every lead returned is one billed `lead` event ($0.004). Prefill 10 keeps a first run small (about $0.04); the default of 50 applies when omitted.",
            "default": 50
          },
          "maxItems": {
            "title": "Max leads in total",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Hard cap on billed leads for the whole run, across all searches.",
            "default": 1000
          },
          "requirePhone": {
            "title": "Only businesses with a phone number",
            "type": "boolean",
            "description": "Keep only places that show a phone number, so every lead can be called. Turn off to also get places with an address only.",
            "default": true
          },
          "includeSocialOnly": {
            "title": "Include businesses with only a social page",
            "type": "boolean",
            "description": "Google Maps sometimes lists a Facebook, Instagram or link-in-bio page in the website slot. Those businesses have no real website and are often the warmest leads; they come back with `hasOnlySocialPage: true`. Turn off to get only businesses with nothing listed.",
            "default": true
          },
          "verifyWithBing": {
            "title": "Cross-check own-site domains",
            "type": "boolean",
            "description": "Guess likely domains from each candidate's name and city and drop the business when a guessed domain's home page shows the same phone number (not billed). Cuts false leads; adds a few seconds per candidate. No search engine is queried. The input key keeps its old name for compatibility.",
            "default": true
          },
          "findDomains": {
            "title": "Look up a possible website for each lead",
            "type": "boolean",
            "description": "Off by default. Each lead is looked up by name, city, phone and postal code with Data Gleaner's Company Domain Finder, run on your own Apify account, and the result is added as `foundWebsite` with its confidence. Be aware that a lead with a found website probably has one, so this mostly tells you which leads to treat as redesign rather than first-site prospects. The finder bills its own $0.0008 per website found (not this Actor). In a test about a third of leads got a domain and fewer than half of those were right.",
            "default": false
          },
          "enrichContacts": {
            "title": "Also look up emails and phones on found websites",
            "type": "boolean",
            "description": "Off by default; implies the website lookup. Websites found for your leads are then read for emails, phones, contact forms and socials with Data Gleaner's Website Contact Details Scraper, also on your own account, which bills its own $0.002 per website where an email is found. Leads with no website found get no contacts. Expect emails for only a few percent of leads: a business with no website rarely publishes one.",
            "default": false
          },
          "domainMinConfidence": {
            "title": "Minimum confidence for a found website",
            "minimum": 0,
            "maximum": 1,
            "type": "number",
            "description": "Only with the website lookup. A found website is kept (and billed by the finder) only at or above this confidence. 0.8 is high precision; lower values return more guesses.",
            "default": 0.7
          },
          "minRating": {
            "title": "Minimum rating",
            "minimum": 0,
            "maximum": 5,
            "type": "number",
            "description": "Keep only places rated at least this many stars (0 = no filter). Established, well-reviewed businesses are the ones who pay for a site.",
            "default": 0
          },
          "minReviews": {
            "title": "Minimum number of reviews",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only places with at least this many Google reviews (0 = no filter).",
            "default": 0
          },
          "language": {
            "title": "Language",
            "type": "string",
            "description": "Two-letter language code for Google Maps (`en`, `de`, `fr`, `es`...). Affects category names and address format.",
            "default": "en"
          },
          "country": {
            "title": "Country bias",
            "type": "string",
            "description": "Two-letter country code Google uses to rank results (`us`, `gb`, `de`, `au`, `ca`...). Put the city in `locations`; this only sets the regional bias.",
            "default": "us"
          },
          "delaySecs": {
            "title": "Delay between requests (seconds)",
            "minimum": 0,
            "maximum": 30,
            "type": "number",
            "description": "Pause between two requests to Google Maps.",
            "default": 0.5
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}