{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Maps Scraper — Places, Emails, Phones & Reviews",
    "description": "Google Maps scraper: export businesses from any city, state or country with phone, website, address, rating, reviews, categories, opening hours, coordinates and plus code, plus e-mails and social profiles from their websites. No 120-result limit, no login. Not affiliated with Google.",
    "version": "1.0",
    "x-build-id": "FHkzsxLzb4vl0XHZl"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/logiover~google-maps-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-logiover-google-maps-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/logiover~google-maps-scraper/runs": {
      "post": {
        "operationId": "runs-sync-logiover-google-maps-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/logiover~google-maps-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-logiover-google-maps-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": "What to look for, as you would type it into Google Maps: \"restaurant\", \"plumber\", \"dentist\", \"hotel\", \"car repair\", \"coffee shop\". Each term is searched in every location. Tip: put the place in \"Locations\", not in the term — that lets the scraper split the area and return every place, not only Google's first page.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "locations": {
            "title": "Locations",
            "type": "array",
            "description": "Where to search: a city (\"Austin, TX\"), a district (\"Kreuzberg, Berlin\"), a state (\"Texas\"), a region, a postal code (\"10001, USA\") or a whole country (\"Netherlands\"). The boundary comes from OpenStreetMap and the area is split into map views until every part is fully read. Each location is combined with every search term.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "maxItems": {
            "title": "Max places",
            "minimum": 0,
            "maximum": 1000000,
            "type": "integer",
            "description": "Stop after this many unique places across all searches. 0 = no limit (every place Google Maps has for your searches — a whole state can be tens of thousands). Big runs need a big enough \"Maximum cost per run\".",
            "default": 1000
          },
          "scrapeContacts": {
            "title": "Add e-mails & social profiles from websites",
            "type": "boolean",
            "description": "For every place with a website, reads the homepage (and one contact / about page when the homepage shows no e-mail) and adds e-mail addresses, extra phone numbers and Facebook, Instagram, LinkedIn, X (Twitter), YouTube, TikTok and Pinterest links. Included in the price. Turn off for the fastest export of Google Maps data only.",
            "default": true
          },
          "language": {
            "title": "Language",
            "enum": [
              "en",
              "de",
              "fr",
              "es",
              "it",
              "pt",
              "pt-BR",
              "nl",
              "pl",
              "tr",
              "sv",
              "da",
              "no",
              "fi",
              "cs",
              "ro",
              "hu",
              "el",
              "ru",
              "uk",
              "ar",
              "he",
              "hi",
              "id",
              "ms",
              "th",
              "vi",
              "ja",
              "ko",
              "zh-CN",
              "zh-TW"
            ],
            "type": "string",
            "description": "Language of categories, opening hours and descriptions (place names and addresses stay as the business wrote them).",
            "default": "en"
          },
          "minRating": {
            "title": "Minimum rating",
            "enum": [
              "",
              "2",
              "2.5",
              "3",
              "3.5",
              "4",
              "4.5"
            ],
            "type": "string",
            "description": "Only places rated at least this many stars (places without a rating are left out when this is set).",
            "default": ""
          },
          "minReviews": {
            "title": "Minimum number of reviews",
            "minimum": 0,
            "maximum": 1000000,
            "type": "integer",
            "description": "Only places with at least this many Google reviews. Empty or 0 = any."
          },
          "website": {
            "title": "Website",
            "enum": [
              "any",
              "withWebsite",
              "withoutWebsite"
            ],
            "type": "string",
            "description": "Keep all places, only places with a website, or only places without one (a classic lead list for web designers and agencies).",
            "default": "any"
          },
          "skipClosed": {
            "title": "Skip permanently closed places",
            "type": "boolean",
            "description": "Google Maps still lists businesses that closed for good; they are left out by default.",
            "default": true
          },
          "categoryFilter": {
            "title": "Category must contain",
            "type": "array",
            "description": "Optional. Keep only places whose Google categories contain one of these words, e.g. \"plumber\" (drops \"Water heater store\" and other neighbours that Google mixes into a search). Case does not matter. Use the language set above.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "maxItemsPerSearch": {
            "title": "Max places per search",
            "minimum": 0,
            "maximum": 1000000,
            "type": "integer",
            "description": "Optional cap per search term × location (useful when one search would otherwise take the whole \"Max places\"). 0 = no per-search limit.",
            "default": 0
          },
          "lat": {
            "title": "Center latitude",
            "type": "string",
            "description": "Optional, instead of a location name: search a circle around this point (decimal degrees, e.g. 30.2672). Use together with longitude and radius."
          },
          "lng": {
            "title": "Center longitude",
            "type": "string",
            "description": "Longitude of the circle's center (decimal degrees, e.g. -97.7431)."
          },
          "radiusKm": {
            "title": "Radius (km)",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Radius of the circle around the center point, 1–500 km."
          },
          "boundingBox": {
            "title": "Bounding box",
            "type": "string",
            "description": "Optional, instead of a location name: \"south,west,north,east\" in decimal degrees, e.g. \"30.10,-97.95,30.52,-97.55\"."
          },
          "startUrls": {
            "title": "Google Maps URLs",
            "type": "array",
            "description": "Optional. Paste Google Maps search links (https://www.google.com/maps/search/plumber/@30.27,-97.74,12z — the visible map area is searched and split) and/or place links (https://www.google.com/maps/place/… , maps.google.com/?cid=…).",
            "default": [],
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "placeIds": {
            "title": "Place IDs / CIDs",
            "type": "array",
            "description": "Optional. Look up specific places by Google place ID (ChIJ…), numeric CID (the number in maps.google.com/?cid=…) or feature ID (0x…:0x…) — e.g. to refresh a list you already have.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "countryCode": {
            "title": "Google country",
            "type": "string",
            "description": "Optional two-letter country code that Google uses to localise results (gl), e.g. \"us\", \"de\", \"gb\". Empty = the country of each location (automatic)."
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Used only as a fallback. The scraper talks to Google Maps over a direct connection first (no proxy cost); if Google slows it down or shows a captcha, it switches to Apify datacenter proxies (a new IP per request) and then to the proxy chosen here.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}