{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Maps No-Website Leads Scraper: Local Business Leads",
    "description": "Google Maps businesses without website, double-checked: businesses with no website on Maps are tested against domains at their name, then matched to their registered company (France, UK). No website businesses and local business leads with phone, rating, lead score: web design leads, pay per lead.",
    "version": "0.1",
    "x-build-id": "kHnJbFEluCQorfSqS"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/euroscrape~google-maps-no-website-leads/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-euroscrape-google-maps-no-website-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/euroscrape~google-maps-no-website-leads/runs": {
      "post": {
        "operationId": "runs-sync-euroscrape-google-maps-no-website-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/euroscrape~google-maps-no-website-leads/run-sync": {
      "post": {
        "operationId": "run-sync-euroscrape-google-maps-no-website-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",
        "required": [
          "searches"
        ],
        "properties": {
          "searches": {
            "title": "🔎 Business types",
            "type": "array",
            "description": "What you would type in Google Maps: a trade or a kind of shop (plumber, hair salon, restaurant, garage, dentist…). One search per line. Write it in the language of the country for more results (\"plombier\" in France, \"Friseur\" in Germany).",
            "items": {
              "type": "string"
            }
          },
          "locations": {
            "title": "📍 Locations",
            "type": "array",
            "description": "Cities, districts or postcodes. Each business type is searched in each location. Google Maps shows about 100 to 120 places per search: for a large city, add its districts or neighbouring towns as separate lines to go deeper.",
            "items": {
              "type": "string"
            }
          },
          "maxLeads": {
            "title": "Max leads",
            "minimum": 1,
            "type": "integer",
            "description": "The run stops when this many leads are saved. You pay per lead saved, never for the places that were read and set aside.",
            "default": 100
          },
          "maxPlacesPerSearch": {
            "title": "Max places read per search",
            "minimum": 20,
            "maximum": 400,
            "type": "integer",
            "description": "How many Google Maps places to read for each business type in each location (20 per page). Reading is free: only the leads are charged.",
            "default": 100
          },
          "deepSearch": {
            "title": "Go deeper in large cities (postcode areas)",
            "type": "boolean",
            "description": "Google Maps stops at about 100 to 120 places per search. With this on, when a location hits that ceiling, the same search is run again in each postcode area found among the results (LS6, LS11… in Leeds; 69003, 69007… in Lyon), and duplicates are removed. More places are read (reading is free), so a large city gives many more leads.",
            "default": false
          },
          "maxSubAreas": {
            "title": "Max postcode areas per location",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "With \"Go deeper\", at most this many postcode areas are searched for each business type in each location, the most common first.",
            "default": 15
          },
          "keepOutsideArea": {
            "title": "Keep places far from the searched city",
            "type": "boolean",
            "description": "Google Maps sometimes slips in a business from another city (a roofer in Marseille when you search Toulouse). By default, places whose address is far from the searched city are skipped and not charged (counted as outsideArea in the run summary). Region-wide searches (Brittany, Yorkshire) and businesses without a public address are never skipped. Turn this on to keep everything Google returns.",
            "default": false
          },
          "output": {
            "title": "Which places to save",
            "enum": [
              "noWebsite",
              "strict",
              "all"
            ],
            "type": "string",
            "description": "The website status of every saved row is in the field websiteStatus.",
            "default": "noWebsite"
          },
          "verifyDomains": {
            "title": "Double-check: look for a website that Google Maps does not show",
            "type": "boolean",
            "description": "Many businesses have a site but never added it to their Maps listing. With this on, domains made from the business name are tested, and a business whose site shows its phone number or postcode is set aside (free). Turn off for the raw Google Maps answer.",
            "default": true
          },
          "matchCompany": {
            "title": "Match each lead to its registered company (France, UK)",
            "type": "boolean",
            "description": "France: SIREN number, legal form, registration date, activity code and staff range from the official register (INSEE / INPI). UK: Companies House number when the registered office is at the shop's postcode. No director names. Other countries: left empty.",
            "default": true
          },
          "minReviews": {
            "title": "Minimum number of Google reviews",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only businesses with at least this many reviews (an active business with customers). 0 keeps all.",
            "default": 0
          },
          "maxReviews": {
            "title": "Maximum number of Google reviews",
            "minimum": 0,
            "type": "integer",
            "description": "Skip businesses with more reviews than this: well-known places usually already have a web agency. Leave empty for no limit."
          },
          "minRating": {
            "title": "Minimum Google rating",
            "type": "string",
            "description": "Keep only businesses rated at least this, e.g. \"4\" or \"4.5\" (happy customers, a business worth a good website). Places without any rating are skipped when this is set."
          },
          "excludeKeywords": {
            "title": "Skip names or categories containing",
            "type": "array",
            "description": "Words that drop a place when they appear in its name or Google categories, e.g. \"franchise\", \"ATM\", \"warehouse\". Case and accents are ignored.",
            "items": {
              "type": "string"
            }
          },
          "onlyWithPhone": {
            "title": "Only businesses with a phone number",
            "type": "boolean",
            "description": "Skip listings without a phone number.",
            "default": false
          },
          "onlyUnclaimed": {
            "title": "Only unclaimed Google profiles",
            "type": "boolean",
            "description": "Keep only businesses whose Google Business Profile has not been claimed by its owner (Google Maps shows \"Claim this business\"). These owners have never set up their listing: a second thing to offer them besides a website. Skipped places are free.",
            "default": false
          },
          "language": {
            "title": "Language of categories and opening hours",
            "type": "string",
            "description": "Two-letter language code (en, fr, de, es, it…).",
            "default": "en"
          },
          "countryCode": {
            "title": "Country of the search",
            "type": "string",
            "description": "Optional two-letter country code (fr, gb, us, de…): tells Google where to look when a city name exists in several countries. Not needed when the location already names the country."
          },
          "monitorName": {
            "title": "🔔 Monitor name (only new leads at each run)",
            "type": "string",
            "description": "Name this search and schedule the Actor weekly: each run then returns only businesses that were not delivered before (newly opened shops, new listings). A run with nothing new costs the run start only."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}