{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Maps Email & Contact Details Scraper",
    "description": "Scrape Google Maps places and enrich each with contact details from the business website: email addresses, phone numbers, and social media profiles (Facebook, Instagram, LinkedIn, X, YouTube, TikTok). Lead generation ready.",
    "version": "0.1",
    "x-build-id": "Ifa2NxSRfNPqmSaoH"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/s-r~google-maps-contact-details/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-s-r-google-maps-contact-details",
        "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/s-r~google-maps-contact-details/runs": {
      "post": {
        "operationId": "runs-sync-s-r-google-maps-contact-details",
        "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/s-r~google-maps-contact-details/run-sync": {
      "post": {
        "operationId": "run-sync-s-r-google-maps-contact-details",
        "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": [
          "queries"
        ],
        "properties": {
          "queries": {
            "title": "Search queries",
            "type": "array",
            "description": "Google Maps search queries (e.g. 'restaurants Amsterdam', 'plumbers in NYC').",
            "items": {
              "type": "string"
            }
          },
          "max_results_per_query": {
            "title": "Max results per query",
            "minimum": 1,
            "maximum": 400,
            "type": "integer",
            "description": "Cap places per query (1-400). A single request returns Google's full inventory for the area — typically up to ~300 places — far beyond Google Maps' 120-per-screen web limit.",
            "default": 120
          },
          "hl": {
            "title": "Language",
            "type": "string",
            "description": "Language code (en, nl, de, es…).",
            "default": "en"
          },
          "gl": {
            "title": "Country (ISO)",
            "type": "string",
            "description": "Two-letter country code (us, gb, nl, de…).",
            "default": "us"
          },
          "use_cookies": {
            "title": "Use fresh Google cookies",
            "type": "boolean",
            "description": "Recommended. Bypasses consent banner and reduces CAPTCHA at scale.",
            "default": true
          },
          "use_proxy": {
            "title": "Route through PROXY_URL",
            "type": "boolean",
            "description": "Optional. Adds extra IP rotation for very high volume.",
            "default": false
          },
          "scrape_contacts": {
            "title": "Scrape website contact details",
            "type": "boolean",
            "description": "Crawl each place's website (homepage + contact page) for email addresses, extra phone numbers and social media profiles (Facebook, Instagram, LinkedIn, X, YouTube, TikTok, Pinterest).",
            "default": true
          },
          "location_query": {
            "title": "Location",
            "type": "string",
            "description": "A place name to search in, such as 'Amsterdam' or 'Greater London'. Maps has no separate location parameter on this endpoint, so this is composed into the search string and the composed query is reported on every row."
          },
          "city": {
            "title": "City",
            "type": "string",
            "description": "Composed into the search string alongside the query."
          },
          "state": {
            "title": "State or province",
            "type": "string",
            "description": "Composed into the search string alongside the query."
          },
          "postal_code": {
            "title": "Postal code",
            "type": "string",
            "description": "Composed into the search string alongside the query."
          },
          "country_code": {
            "title": "Country",
            "type": "string",
            "description": "Composed into the search string. This is the place you are searching, which is not the same as the `gl` result region."
          },
          "minimum_stars": {
            "title": "Minimum rating",
            "enum": [
              "",
              "3",
              "3.5",
              "4",
              "4.5"
            ],
            "type": "string",
            "description": "Drop places rated below this. An unrated place cannot clear a minimum, so it is dropped too.",
            "default": ""
          },
          "minimum_reviews": {
            "title": "Minimum review count",
            "minimum": 0,
            "type": "integer",
            "description": "Drop places with fewer reviews than this. Useful for skipping brand-new or barely-visited listings."
          },
          "website": {
            "title": "Website",
            "enum": [
              "any",
              "with_website",
              "without_website"
            ],
            "type": "string",
            "description": "Places without a website are the classic agency lead list. Places with one are the classic competitor list.",
            "default": "any"
          },
          "skip_closed_places": {
            "title": "Skip permanently closed",
            "type": "boolean",
            "description": "Drop places Google marks permanently closed. Temporarily closed places are kept, because a temporarily closed business is still a lead.",
            "default": false
          },
          "category_filter_words": {
            "title": "Category must contain",
            "type": "array",
            "description": "Keep only places whose Google category matches one of these words. Matched against every category on the place, not just the primary one.",
            "items": {
              "type": "string"
            }
          },
          "search_matching": {
            "title": "Name matching",
            "enum": [
              "all",
              "only_includes",
              "only_exact"
            ],
            "type": "string",
            "description": "Maps returns loosely related places. This narrows on the place name.",
            "default": "all"
          }
        }
      },
      "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}