{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Maps Scraper + Email & Social Extractor",
    "description": "Scrape businesses from Google Maps and get their emails, phones and social profiles from their websites in one run. Includes address, rating, reviews, hours and coordinates. Replaces a Maps scraper plus an email extractor. Pay only per result.",
    "version": "0.0",
    "x-build-id": "1h6pw3Ui2C1KkjDwK"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/yasaslive~google-maps-leads-email-enrichment/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-yasaslive-google-maps-leads-email-enrichment",
        "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/yasaslive~google-maps-leads-email-enrichment/runs": {
      "post": {
        "operationId": "runs-sync-yasaslive-google-maps-leads-email-enrichment",
        "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/yasaslive~google-maps-leads-email-enrichment/run-sync": {
      "post": {
        "operationId": "run-sync-yasaslive-google-maps-leads-email-enrichment",
        "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": {
          "searchQueries": {
            "title": "Search queries",
            "type": "array",
            "description": "What you would type into Google Maps, including the location. One query per line, e.g. \"dentist in Austin, TX\" or \"plumber in Manchester, UK\".",
            "default": [
              "dentist in Austin, TX"
            ],
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Google Maps search URLs (optional)",
            "type": "array",
            "description": "Paste Google Maps search URLs (https://www.google.com/maps/search/...) to scrape exactly the map area you are looking at. Place URLs (/maps/place/...) are not supported.",
            "default": [],
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "maxPlacesPerQuery": {
            "title": "Max places per search query",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Maximum number of places to collect for each search query or URL. Google Maps itself rarely shows more than ~120 places for one query, so split big areas into several queries (e.g. by neighborhood).",
            "default": 50
          },
          "maxResults": {
            "title": "Max results (total)",
            "minimum": 1,
            "type": "integer",
            "description": "Hard cap on the total number of places saved across all queries. Raise it when you add more queries. The run also stops automatically when your maximum cost per run is reached.",
            "default": 50
          },
          "language": {
            "title": "Language",
            "enum": [
              "en",
              "de",
              "fr",
              "es",
              "it",
              "pt",
              "pt-BR",
              "nl",
              "pl",
              "sv",
              "da",
              "no",
              "fi",
              "cs",
              "tr",
              "ja",
              "ko",
              "zh-CN",
              "ar",
              "hi"
            ],
            "type": "string",
            "description": "Language of place names, categories and opening hours returned by Google Maps.",
            "default": "en"
          },
          "countryCode": {
            "title": "Country (optional)",
            "pattern": "^([A-Za-z]{2})?$",
            "type": "string",
            "description": "Two-letter country code (e.g. US, GB, DE) used for the Google region and proxy location. Leave empty to detect it from each query (\"Austin, TX\" → US); falls back to US.",
            "default": ""
          },
          "enrichContacts": {
            "title": "Extract emails, phones & social profiles",
            "type": "boolean",
            "description": "Visit each business website (homepage, contact, about, team, impressum pages) to find emails, phone numbers and Facebook / Instagram / LinkedIn / X / YouTube / TikTok profiles. Charged as \"place enriched\" only when at least one contact is found.",
            "default": true
          },
          "maxPagesPerWebsite": {
            "title": "Max pages per website",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "How many pages to open on each business website: the homepage plus the most promising contact / about / team / impressum pages.",
            "default": 5
          },
          "emailTypes": {
            "title": "Email types",
            "enum": [
              "all",
              "generic-only"
            ],
            "type": "string",
            "description": "\"All\" returns role addresses (info@, office@) and addresses that may belong to a person (jane.doe@). \"Generic only\" returns role addresses only, which is safer for GDPR-regulated outreach.",
            "default": "all"
          },
          "validateEmailMx": {
            "title": "Validate email domains (MX check)",
            "type": "boolean",
            "description": "Drop emails whose domain cannot receive mail (no MX record). Recommended.",
            "default": true
          },
          "includeReviewsSummary": {
            "title": "Include reviews summary",
            "type": "boolean",
            "description": "Adds the star-rating distribution (how many 1★ … 5★ reviews) for each place. Makes one extra request per place, so runs take a little longer. Individual reviews are never collected.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy for Google Maps",
            "type": "object",
            "description": "Google blocks datacenter IPs quickly, so residential proxies are used by default. The exit country is matched to each query automatically.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ]
            }
          },
          "enrichmentProxyConfiguration": {
            "title": "Proxy for business websites",
            "type": "object",
            "description": "Proxy used when visiting business websites. The default (datacenter) is fast and cheap; switch to residential only if many websites block you.",
            "default": {
              "useApifyProxy": true
            }
          },
          "maxRequestRetries": {
            "title": "Max request retries",
            "minimum": 0,
            "maximum": 10,
            "type": "integer",
            "description": "How many times a failed or blocked Google Maps request is retried (with a new session/IP and exponential backoff) before giving up. Business-website requests are retried at most 2 times so one slow website cannot hold up the run.",
            "default": 4
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}