{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Maps Email Scraper",
    "description": "Google Maps Email Scraper extracts publicly available business email addresses from Google Maps listings. Build targeted contact lists by location, category, or rating. Ideal for sales teams and local marketers.",
    "version": "0.3",
    "x-build-id": "uzDdKtTo506pH6RD7"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scraper-engine~google-maps-email-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scraper-engine-google-maps-email-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/scraper-engine~google-maps-email-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scraper-engine-google-maps-email-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/scraper-engine~google-maps-email-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scraper-engine-google-maps-email-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",
        "required": [
          "keywords"
        ],
        "properties": {
          "keywords": {
            "title": "🔍 Keywords",
            "type": "array",
            "description": "🎯 The words that power your search! Add one or more keywords (e.g. ['dentist', 'plumber', 'restaurant']) and the actor finds matching local businesses, opens their websites and 📧 extracts the contact email addresses published there. 💡 Tip: more specific keywords = more targeted leads.",
            "items": {
              "type": "string"
            }
          },
          "platform": {
            "title": "🌐 Platform",
            "enum": [
              "Google-Maps"
            ],
            "type": "string",
            "description": "📍 The business universe to target. Currently locked to local businesses (Google-Maps style listings). The actor finds these businesses and their websites via Brave Search, DuckDuckGo and OpenStreetMap, then reads the contact email from the business's own site. 🚀",
            "default": "Google-Maps"
          },
          "location": {
            "title": "📍 Location Filter",
            "type": "string",
            "description": "🗺️ Optional geo-targeting! Add a city or region (e.g. 'London' 🇬🇧, 'New York' 🗽, 'Dubai' 🏙️) to narrow results to listings mentioning that place. ✨ Leave empty to search the whole globe 🌍.",
            "default": ""
          },
          "emailDomains": {
            "title": "📧 Email Domains Filter",
            "type": "array",
            "description": "🎛️ Keep only emails from the domains you care about — type as many as you like! ✍️ Popular picks: 📮 @gmail.com · 📨 @outlook.com · 💌 @hotmail.com · 💜 @yahoo.com · ☁️ @icloud.com · 📬 @aol.com · 🔒 @protonmail.com · 📥 @live.com · 📧 @gmx.com · 🟡 @yandex.com · 📗 @zoho.com. 🏢 Custom/business domains work too — e.g. @yourcompany.com. 🕳️ Leave empty to collect emails from ALL domains. 💡 Adding a domain also sharpens the search 🎯.",
            "items": {
              "type": "string"
            }
          },
          "maxEmails": {
            "title": "📊 Maximum Emails per Keyword",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "🎚️ How many emails to collect per keyword before moving on. ⚡ Higher = more leads but longer runs. Default is 10 ✅ (range 1 – 100,000).",
            "default": 10
          },
          "engine": {
            "title": "⚙️ Engine",
            "enum": [
              "legacy"
            ],
            "type": "string",
            "description": "🔧 The processing engine. Currently 'legacy' 🛡️ — a reliable, battle-tested extraction pipeline. More engines on the roadmap! 🚧",
            "default": "legacy"
          },
          "googlePlacesApiKey": {
            "title": "🔑 Google Places API Key (optional)",
            "type": "string",
            "description": "🗝️ Optional. Paste your own Google Places API key and the actor will ALSO pull business listings (name, address, phone, website) from the official Google Places API as an extra discovery source. ✅ Completely optional — leave it empty and the actor still works, using the free OpenStreetMap and web-search sources. 💳 If you supply a key, Google bills that key, not Apify."
          },
          "proxyConfiguration": {
            "title": "🛡️ Proxy Configuration",
            "type": "object",
            "description": "🌐 Control how the actor connects to the internet. 🆓 Leave it empty and the actor auto-selects a residential Apify proxy for the search step and connects directly to business websites. 🔄 Failed requests rotate the connection and retry automatically. 🧠 Advanced users can plug in custom proxies here — they will then be used for every request."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}