{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Maps Email Scraper & Lead Extractor",
    "description": "Extract business emails, phone numbers, websites, social media links, ratings, reviews, and opening hours from Google Maps. The most complete lead generation tool for B2B sales prospecting. Supports any location and language worldwide.",
    "version": "1.2",
    "x-build-id": "yNdPZX6EktSvVcBdP"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/highbrow_fame~google-maps-email-extractor/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-highbrow_fame-google-maps-email-extractor",
        "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/highbrow_fame~google-maps-email-extractor/runs": {
      "post": {
        "operationId": "runs-sync-highbrow_fame-google-maps-email-extractor",
        "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/highbrow_fame~google-maps-email-extractor/run-sync": {
      "post": {
        "operationId": "run-sync-highbrow_fame-google-maps-email-extractor",
        "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": "List of search queries to use on Google Maps (e.g., 'restaurants in Budapest', 'dentists in London'). Each query will produce a separate search.",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Google Maps URLs",
            "type": "array",
            "description": "Direct Google Maps search result URLs. Use this if you already have specific Google Maps URLs to scrape.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "maxResults": {
            "title": "Maximum Results Per Query",
            "minimum": 0,
            "maximum": 1000,
            "type": "integer",
            "description": "Maximum number of business listings to extract per search query. Set to 0 for unlimited. ⚠️ For >200 results, raise the Apify run timeout (Actor settings → Default run options → Timeout) to at least 7200s — full enrichment averages ~5s/lead, so 500 leads ≈ 40 min. Default timeout is 2 hours (7200s); for >800 leads bump to 4 hours (14400s). The scraper emits a runtime estimate in the log at startup.",
            "default": 100
          },
          "scrapeEmails": {
            "title": "Scrape Emails from Websites",
            "type": "boolean",
            "description": "Visit each business website to extract email addresses. Disabling this speeds up the scraper significantly.",
            "default": true
          },
          "scrapeSocials": {
            "title": "Scrape Social Media Links",
            "type": "boolean",
            "description": "Extract social media profile links (Facebook, Instagram, LinkedIn, Twitter) from business websites.",
            "default": true
          },
          "maxConcurrency": {
            "title": "Max Concurrency",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "Maximum number of pages processed in parallel. Lower values reduce the chance of being blocked.",
            "default": 5
          },
          "proxyConfiguration": {
            "title": "Proxy Configuration",
            "type": "object",
            "description": "Proxy configuration for the scraper. Apify Proxy is recommended."
          },
          "language": {
            "title": "Language",
            "enum": [
              "en",
              "de",
              "fr",
              "es",
              "it",
              "pt",
              "nl",
              "hu",
              "pl",
              "cs",
              "sk",
              "ro",
              "bg",
              "hr",
              "sl",
              "sr",
              "bs",
              "mk",
              "sq",
              "el",
              "tr",
              "ar",
              "he",
              "ja",
              "ko",
              "zh",
              "th",
              "vi",
              "id",
              "ms",
              "fil",
              "hi",
              "bn",
              "ta",
              "te",
              "ml",
              "kn",
              "mr",
              "gu",
              "pa",
              "ur",
              "fa",
              "ru",
              "uk",
              "sv",
              "no",
              "da",
              "fi"
            ],
            "type": "string",
            "description": "Language code for Google Maps results (e.g., 'en', 'de', 'hu').",
            "default": "en"
          },
          "maxEmailScrapeConcurrency": {
            "title": "Email Scrape Concurrency",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "Maximum concurrent requests when scraping business websites for emails. Keep low to avoid blocks.",
            "default": 3
          },
          "sinceDatasetId": {
            "title": "Delta Mode — Skip places already in this dataset",
            "type": "string",
            "description": "Optional. If you provide a dataset ID from a previous run, the actor will skip any Google Maps place already present there (matched by placeId). Perfect for daily/weekly scheduled runs that only want NEW leads — you save on every duplicate. Example: '0selLasyFyBlq5xRq' from a previous run."
          },
          "enrichMetaAds": {
            "title": "Enrich with Meta Ad Library lookup URL",
            "type": "boolean",
            "description": "When enabled, the scraper fetches each business's Facebook page to extract the numeric page ID, then builds a targeted Meta Ad Library URL (active ads only). Adds ~1 request per business with a Facebook URL. Great for identifying actively-advertising leads (high purchase intent).",
            "default": false
          },
          "validateEmails": {
            "title": "Validate emails (MX / SPF / DMARC / SMTP)",
            "type": "boolean",
            "description": "When enabled, the actor grades every primaryEmail before delivery: checks MX records, SPF & DMARC DNS entries, and attempts an SMTP RCPT TO probe to detect catch-all domains (high bounce risk). Fills the `emailValidation` field with deliverability 'high'/'medium'/'low'. Critical for cold-outreach teams protecting sender reputation.",
            "default": true
          },
          "extractWebSignals": {
            "title": "Extract web quality signals (lite Lighthouse)",
            "type": "boolean",
            "description": "When enabled, the actor extracts lightweight web quality signals from every homepage it already fetches: HTTPS-only, mobile-responsive, page size, favicon, Open Graph tags, structured data. Fills `webSignals` + `webQuality` ('modern'/'dated'/'poor'). Free (uses HTML already in memory). Perfect for web-agency outreach targeting.",
            "default": 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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}