{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Maps Leads Scraper",
    "description": "Google Maps scraper for leads: export businesses by keyword and city with phone, website, address, rating, hours, and optional emails and social links from their websites. No login.",
    "version": "0.0",
    "x-build-id": "SbVWPJK7DnRMnOAqY"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/keklik~google-maps-leads-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-keklik-google-maps-leads-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/keklik~google-maps-leads-scraper/runs": {
      "post": {
        "operationId": "runs-sync-keklik-google-maps-leads-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/keklik~google-maps-leads-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-keklik-google-maps-leads-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 search for on Google Maps, one per line, as you would type it: dentist, italian restaurant, plumber. Each term is searched in every location below.",
            "items": {
              "type": "string"
            }
          },
          "locations": {
            "title": "Locations",
            "type": "array",
            "description": "Where to search, one per line: a city, district, postal code or region (Marseille, France; Brooklyn, NY; 75011 Paris). The scraper splits the area into as many map tiles as it needs, so it goes well past the 200 places one Google Maps search shows. Leave empty to search the terms as typed (\"pizza in Brooklyn\"), which gives at most about 200 places per term.",
            "items": {
              "type": "string"
            }
          },
          "urls": {
            "title": "Google Maps URLs",
            "type": "array",
            "description": "Optional. Google Maps search URLs (https://www.google.com/maps/search/dentist/@43.29,5.37,14z), which are searched over the map area they show, and place URLs (https://www.google.com/maps/place/..., ?cid= links, maps.app.goo.gl links or Place IDs), which give one row each.",
            "items": {
              "type": "string"
            }
          },
          "maxPlacesPerSearch": {
            "title": "Max places per search",
            "minimum": 1,
            "type": "integer",
            "description": "Stop each search term and location pair (or search URL) after this many places. Leave empty to cover the whole area."
          },
          "language": {
            "title": "Language",
            "pattern": "^[a-z]{2,3}(-[A-Za-z]{2,4})?$",
            "type": "string",
            "description": "Language code (en, fr, de, es, pt-BR...) for categories, opening hours, attributes and reviews.",
            "default": "en"
          },
          "minRating": {
            "title": "Min rating",
            "enum": [
              "",
              "2.0",
              "2.5",
              "3.0",
              "3.5",
              "4.0",
              "4.5"
            ],
            "type": "string",
            "description": "Keep only places rated at least this many stars. Google applies it to the search itself.",
            "default": ""
          },
          "minReviews": {
            "title": "Min reviews",
            "minimum": 1,
            "type": "integer",
            "description": "Keep only places with at least this many reviews."
          },
          "websiteFilter": {
            "title": "Website",
            "enum": [
              "any",
              "with",
              "without"
            ],
            "type": "string",
            "description": "Keep places by whether they list a website. Places without one are often prospects for web agencies.",
            "default": "any"
          },
          "phoneFilter": {
            "title": "Phone",
            "enum": [
              "any",
              "with",
              "without"
            ],
            "type": "string",
            "description": "Keep places by whether they list a phone number.",
            "default": "any"
          },
          "skipClosed": {
            "title": "Skip closed places",
            "type": "boolean",
            "description": "Leave out places marked temporarily or permanently closed.",
            "default": false
          },
          "skipUnrelated": {
            "title": "Skip unrelated places",
            "type": "boolean",
            "description": "Leave out the places Google adds around the real matches when an area runs out of them, such as osteopaths in a dentist search. A place matches when it has one of the main categories of the search's best results, or the search term in its name. Turn it off to keep everything Google returns.",
            "default": true
          },
          "placeDetails": {
            "title": "Place details",
            "type": "boolean",
            "description": "Open each place for the fields its page adds: reviews per star (1 to 5), review keywords with counts, delivery and takeout hours, and plus code. One extra request per place.",
            "default": false
          },
          "contactDetails": {
            "title": "Emails and social profiles from websites",
            "type": "boolean",
            "description": "Visit each place's website (home page and up to 3 contact, about or legal pages) for email addresses, phone numbers and Facebook, Instagram, LinkedIn, X, TikTok, YouTube and Pinterest profiles.",
            "default": false
          },
          "reviewsPerPlace": {
            "title": "Reviews per place",
            "minimum": 0,
            "type": "integer",
            "description": "Add up to this many reviews to each place, in a latest_reviews list. Off (0) by default. For many reviews per place, use Google Maps Reviews Scraper on the place URLs.",
            "default": 0
          },
          "reviewsSort": {
            "title": "Reviews sort",
            "enum": [
              "newest",
              "most_relevant",
              "highest_rating",
              "lowest_rating"
            ],
            "type": "string",
            "description": "Which reviews \"Reviews per place\" picks.",
            "default": "newest"
          },
          "maxResults": {
            "title": "Max results",
            "minimum": 1,
            "type": "integer",
            "description": "Stop the whole run after this many places, across all searches. Leave empty for no limit."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}