{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Maps Scraper: Business Leads with Phones & Emails",
    "description": "Get the businesses on Google Maps for any search and area: name, address, phone, website, rating, review count, opening hours, plus emails and social profiles. No 120-place limit.",
    "version": "1.0",
    "x-build-id": "c6KI5pT5PIONdgssq"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/stratumics~google-maps-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-stratumics-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/stratumics~google-maps-scraper/runs": {
      "post": {
        "operationId": "runs-sync-stratumics-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/stratumics~google-maps-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-stratumics-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",
        "required": [
          "searchTerms"
        ],
        "properties": {
          "searchTerms": {
            "title": "Search terms",
            "type": "array",
            "description": "What to look for on Google Maps, one term per line, for example \"dentist\", \"coffee shop\" or \"roofing contractor\". Each term is searched in the location below. Terms that mean different things find more places than synonyms do.",
            "items": {
              "type": "string"
            }
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "City, region, postal code, neighborhood or country, written the way you would type it into Google Maps: \"Austin, TX\", \"Manchester, UK\", \"10001, USA\", \"Bavaria, Germany\". The whole area is covered, split into smaller map views where places are dense. Leave empty to put the location inside the search terms instead (for example \"dentist in Austin\"); that mode returns only what Google shows for one search."
          },
          "maxPlacesPerSearch": {
            "title": "Max places per search term",
            "minimum": 1,
            "maximum": 50000,
            "type": "integer",
            "description": "How many places to save for each search term. You pay per place saved, so this also caps the cost. Places that do not match your filters are never saved or charged.",
            "default": 50
          },
          "coordinates": {
            "title": "Center point (latitude, longitude)",
            "type": "string",
            "description": "Search around a point instead of a named location, written as \"latitude, longitude\" in decimal degrees, for example \"30.2672, -97.7431\" (copy it from Google Maps with a right click). When set, it takes priority over the location text.",
            "default": ""
          },
          "radiusKm": {
            "title": "Radius (km)",
            "minimum": 0,
            "maximum": 1000,
            "type": "number",
            "description": "Search radius in kilometers around the center point (5 km when left at 0), or around the center of the location above. Leave at 0 with a location to cover the location's whole area.",
            "default": 0
          },
          "minRating": {
            "title": "Minimum star rating",
            "minimum": 0,
            "maximum": 5,
            "type": "number",
            "description": "Keep only places rated at least this many stars (for example 4 or 4.5). 0 keeps every place, including places without reviews.",
            "default": 0
          },
          "websiteFilter": {
            "title": "Website",
            "enum": [
              "all",
              "withWebsite",
              "withoutWebsite"
            ],
            "type": "string",
            "description": "Keep all places, only places with a website, or only places without one (useful when you sell websites or online marketing).",
            "default": "all"
          },
          "categoryFilter": {
            "title": "Category contains",
            "type": "array",
            "description": "Keep only places whose Google category contains one of these words, for example \"dentist\" keeps \"Dentist\" and \"Cosmetic dentist\" but drops \"Dental supply store\". Leave empty to keep every category.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "skipClosedPlaces": {
            "title": "Skip closed places",
            "type": "boolean",
            "description": "Leave out places Google marks as permanently or temporarily closed.",
            "default": true
          },
          "scrapeContacts": {
            "title": "Find emails and social profiles on websites",
            "type": "boolean",
            "description": "Visit each place's website (homepage plus its contact and about pages) and add the email addresses and social profiles (Facebook, Instagram, LinkedIn, X, YouTube, TikTok, Pinterest, WhatsApp) found there. Places where something is found cost a small extra fee; see the Pricing tab.",
            "default": false
          },
          "contactPagesPerWebsite": {
            "title": "Pages to read per website",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "The homepage plus the most likely contact pages. 4 finds contacts on most small business sites; more pages find a few more at the cost of time.",
            "default": 4
          },
          "language": {
            "title": "Language",
            "enum": [
              "en",
              "es",
              "fr",
              "de",
              "it",
              "pt",
              "pt-BR",
              "nl",
              "pl",
              "sv",
              "da",
              "no",
              "fi",
              "cs",
              "ro",
              "hu",
              "el",
              "tr",
              "ru",
              "uk",
              "ar",
              "he",
              "hi",
              "id",
              "ms",
              "th",
              "vi",
              "ja",
              "ko",
              "zh-CN",
              "zh-TW"
            ],
            "type": "string",
            "description": "Language of categories, opening hours and other text, as a Google language code.",
            "default": "en"
          },
          "countryCode": {
            "title": "Country",
            "type": "string",
            "description": "Two-letter country code Google uses for the search (\"us\", \"gb\", \"de\", \"au\"...). Set it to the country you search in for the most local results and address format.",
            "default": "us"
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Apify's datacenter proxy works well with Google Maps and is used by default. If Google blocks it, the scraper switches to a direct connection on its own.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}