{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Maps Scraper API – Places, Phones & Ratings, No Login",
    "description": "Get Google Maps business leads by search, area, link or place ID, with no login or API key: name, phone, website, emails and social profiles from the business's own site, address, hours, rating, review count. From $0.40 per 1,000 places, emails included, 200 free monthly.",
    "version": "0.4",
    "x-build-id": "mKEwdZuNC2FABywAN"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/k-data-lab~google-maps-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-k-data-lab-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/k-data-lab~google-maps-scraper/runs": {
      "post": {
        "operationId": "runs-sync-k-data-lab-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/k-data-lab~google-maps-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-k-data-lab-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, for example \"dentist\" or \"coffee shop\". Each term runs once for every location. Use this field for any task like \"find dentists in Austin with their email and phone\": put the business type here and the city in Locations.",
            "items": {
              "type": "string"
            }
          },
          "locations": {
            "title": "Locations",
            "type": "array",
            "description": "Where to look: a city, region or postal code, one per line, for example \"Seattle, WA\". Leave empty if the search term already names the place.",
            "items": {
              "type": "string"
            }
          },
          "places": {
            "title": "Places: links or IDs",
            "type": "array",
            "description": "Look up places you already know. Accepts Google Maps place links, maps.app.goo.gl short links, search links, place IDs (ChIJ…), feature IDs (0x…:0x…) and CID numbers. Each costs one place.",
            "items": {
              "type": "string"
            }
          },
          "maxPlacesPerSearch": {
            "title": "Max places per search",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Limit for each search term and location pair. One normal search returns up to about 140 places, which is where Google Maps stops. For more, turn on Deep area scan.",
            "default": 100
          },
          "includeDetails": {
            "title": "Add place details",
            "type": "boolean",
            "description": "Also reads each place page: rating breakdown by star, review topics with mention counts, the reviews Maps shows signed out (usually 5), plus code and full attributes. Charged per place as place-details.",
            "default": false
          },
          "includeContacts": {
            "title": "Find emails and social profiles",
            "type": "boolean",
            "description": "Also opens each business's own website (home page, plus up to two contact or about pages) and adds the emails and Facebook, Instagram, LinkedIn, X, YouTube and TikTok links it publishes. Included in the place price, no extra event. Adds a few seconds per 20 places. Respects robots.txt; contactsStatus says what happened on each site.",
            "default": false
          },
          "deepScan": {
            "title": "Deep area scan (more than 140 places)",
            "type": "boolean",
            "description": "Cuts each location into map tiles and searches every tile, so you get far past the ~140 limit of one search. Takes longer, costs the same per place. Set a higher Max places per search to use it.",
            "default": false
          },
          "centerLatitude": {
            "title": "Circle: center latitude",
            "minimum": -90,
            "maximum": 90,
            "type": "number",
            "description": "Search around a point instead of a named location. Fill in latitude, longitude and radius together. Example: 30.2672"
          },
          "centerLongitude": {
            "title": "Circle: center longitude",
            "minimum": -180,
            "maximum": 180,
            "type": "number",
            "description": "Example: -97.7431"
          },
          "radiusKm": {
            "title": "Circle: radius in km",
            "minimum": 0.1,
            "maximum": 500,
            "type": "number",
            "description": "Radius around the center, from 0.1 to 500 km. Example: 5"
          },
          "minRating": {
            "title": "Minimum rating",
            "minimum": 0,
            "maximum": 5,
            "type": "number",
            "description": "Keep places rated at least this high, for example 4.5."
          },
          "minReviews": {
            "title": "Minimum number of reviews",
            "minimum": 0,
            "type": "integer",
            "description": "Keep places with at least this many reviews."
          },
          "maxReviews": {
            "title": "Maximum number of reviews",
            "minimum": 0,
            "type": "integer",
            "description": "Keep places with at most this many reviews. Handy for finding small businesses."
          },
          "website": {
            "title": "Website",
            "enum": [
              "any",
              "with",
              "without"
            ],
            "type": "string",
            "description": "Keep only places with a website, or only those without one.",
            "default": "any"
          },
          "phone": {
            "title": "Phone",
            "enum": [
              "any",
              "with",
              "without"
            ],
            "type": "string",
            "description": "Keep only places with a phone number, or only those without one.",
            "default": "any"
          },
          "categoryContains": {
            "title": "Category contains",
            "type": "array",
            "description": "Keep places whose Google Maps categories contain one of these words, for example \"dentist\" keeps \"Cosmetic dentist\". Use the language you set below.",
            "items": {
              "type": "string"
            }
          },
          "onlyWithEmail": {
            "title": "Only places with an email",
            "type": "boolean",
            "description": "Keep only places whose website publishes an email, so you pay only for those. Turns on Find emails and social profiles by itself. Max places per search still counts delivered places, so a run may read more websites to reach it.",
            "default": false
          },
          "skipClosed": {
            "title": "Skip closed businesses",
            "type": "boolean",
            "description": "Leave out places marked temporarily or permanently closed.",
            "default": false
          },
          "monitorName": {
            "title": "Monitor name (new places only)",
            "type": "string",
            "description": "Give a run a name and schedule it: each run with this name returns only places it hasn't returned before, so you see new businesses and pay only for those. Example: seattle-dentists"
          },
          "language": {
            "title": "Language",
            "type": "string",
            "description": "Language of names, categories and hours: en, de, fr, ko, pt-BR and so on.",
            "default": "en"
          },
          "country": {
            "title": "Country",
            "type": "string",
            "description": "Two-letter country code that Google Maps treats as the visitor's country: us, de, kr and so on. It affects ranking, not coverage.",
            "default": "us"
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}