{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Maps Scraper",
    "description": "Extract business leads from Google Maps: names, categories, addresses, phone numbers, websites, ratings, review counts, GPS coordinates and place URLs for any search term and location. Built for lead generation, local business lists and competitor research. First 10 places in every run are free.",
    "version": "0.0",
    "x-build-id": "QDHeVk0PZwcSi4Aoc"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/salubrious_verity~google-maps-lead-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-salubrious_verity-google-maps-lead-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/salubrious_verity~google-maps-lead-scraper/runs": {
      "post": {
        "operationId": "runs-sync-salubrious_verity-google-maps-lead-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/salubrious_verity~google-maps-lead-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-salubrious_verity-google-maps-lead-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": {
          "categoryFilterWords": {
            "title": "Category filter words",
            "type": "array",
            "description": "Optional list of words describing categories you care about. Accepted for compatibility with the established Google Maps scraper input surface; the category of every place is always present in the output (categoryName / categories), so you can filter the dataset with these words in your own tooling.",
            "items": {
              "type": "string"
            }
          },
          "includeOpeningHours": {
            "title": "Include opening hours",
            "type": "boolean",
            "description": "When enabled, the opening hours shown on the place page are added to each result as an \"openingHours\" list of {day, hours} entries. Disabled by default to keep runs fast and output lean.",
            "default": false
          },
          "language": {
            "title": "Language",
            "type": "string",
            "description": "Language code used for the Google Maps interface and result text, e.g. \"en\", \"de\", \"ja\", \"es\".",
            "default": "en"
          },
          "locationQuery": {
            "title": "Location",
            "type": "string",
            "description": "Location appended to every search term, e.g. \"New York, NY\", \"Austin, Texas\" or \"Berlin, Germany\". Leave empty if your search terms already contain a location."
          },
          "maxCrawledPlacesPerSearch": {
            "title": "Maximum places per search",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Maximum number of places scraped for each search term. You are charged per place actually saved, so this is also your per-search cost cap.",
            "default": 20
          },
          "probeUrls": {
            "title": "Probe URLs (diagnostic)",
            "type": "array",
            "description": "Diagnostic mode. When set, the run only visits these URLs and writes one dataset item per URL (final URL, HTTP status, page title, document readyState, HTML length, or the navigation error). No places are scraped and nothing is charged. Use it to verify the browser/proxy path can reach a site at all, e.g. [\"https://example.com\", \"https://www.google.com\", \"https://www.google.com/maps/search/dentist?hl=en\"].",
            "items": {
              "type": "string"
            }
          },
          "proxyConfig": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Proxy configuration for the crawl. The Apify Proxy with the RESIDENTIAL group is used by default: Google Maps answers residential exits in full, while datacenter exits get capped or stalled responses and direct (proxy-less) requests get throttled. Only change this if you bring your own proxy URLs.",
            "default": {
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ],
              "useApifyProxy": true
            }
          },
          "searchString": {
            "title": "Single search term (alternative)",
            "type": "string",
            "description": "A single search term. Used only if you prefer it over the search terms list above; both are combined when both are filled in."
          },
          "searchStringsArray": {
            "title": "Search terms",
            "type": "array",
            "description": "One or more search terms to look up on Google Maps, e.g. \"dentist\", \"coffee shop\" or a specific business name. Each search is scraped separately.",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}