{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Maps Email Extractor: Only Places With E-mail",
    "description": "Google Maps places with the e-mail, phone and socials from each business website. $0.002 per place, plus $0.003 only when an e-mail is found (free plan). \"Only places with an e-mail\" charges only places that have one. Category, review and rating filters; many locations; Maps links.",
    "version": "0.0",
    "x-build-id": "8ytgnbM7KzSYtIhxT"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/webdatatools~google-maps-email-extractor/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-webdatatools-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/webdatatools~google-maps-email-extractor/runs": {
      "post": {
        "operationId": "runs-sync-webdatatools-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/webdatatools~google-maps-email-extractor/run-sync": {
      "post": {
        "operationId": "run-sync-webdatatools-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": {
          "startUrls": {
            "title": "Google Maps links",
            "description": "Optional Google Maps links, one per item, e.g. [\"https://www.google.com/maps/search/dentist+in+Austin+TX/\"]. A search link runs its text and returns up to \"Max places per search term\"; a place link returns that one place (matched by its ID). Can be used alone: leave \"Search terms\" and \"Location\" empty."
          },
          "locations": {
            "title": "Locations (list)",
            "description": "Several places to search, e.g. [\"78701\", \"78704\", \"Kadıköy, İstanbul\"]. Every search term runs in every location, and each place is returned once. Use it to go past the ~120 places one search returns. When filled, it is used instead of \"Location\"."
          },
          "categoryFilter": {
            "title": "Category filter",
            "description": "Keep only places that have one of these Google categories, e.g. [\"Dentist\", \"Orthodontist\"]. Case-insensitive, exact category name. Places in other categories are not returned and not charged."
          },
          "minReviews": {
            "title": "Minimum reviews",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only places with at least this many Google reviews, e.g. 20. 0 = no filter. Places below it are not returned and not charged."
          },
          "searchQueries": {
            "title": "Search terms",
            "description": "What to search on Google Maps. Enter one term as a string, e.g. \"dentist\", several separated by semicolons, e.g. \"dentist; orthodontist\", or a JSON array, e.g. [\"dentist\", \"orthodontist\"]. Aliases: searchStringsArray, query, keyword.",
            "default": "dentist"
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "City, region or country to search in, e.g. \"Austin, TX\" or \"Kadıköy, İstanbul\". Leave empty if your search terms already contain the place, e.g. \"plumber in Chicago\". Alias: locationQuery.",
            "default": "Austin, TX"
          },
          "maxPlacesPerSearch": {
            "title": "Max places per search term",
            "minimum": 1,
            "maximum": 120,
            "type": "integer",
            "description": "How many places to return for each search term, 1-120 (Google stops at about 120 per search), e.g. 50. You pay per place returned, see \"Only places with an e-mail\".",
            "default": 10
          },
          "splitArea": {
            "title": "Split the map area",
            "type": "boolean",
            "description": "Google gives about 120 places per search. With this on, the map area of each search term or location is split into up to 64 smaller cells, and each cell is searched, so a crowded city returns many more places (duplicates are removed). You pay per place returned, so set \"Max places per query\" and \"Maximum cost per run\".",
            "default": false
          },
          "maxPlacesPerQuery": {
            "title": "Max places per query (with split area)",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Total places for each search term or location when \"Split the map area\" is on, 1-1000, e.g. 400. Without the split it stays at \"Max places per search term\" (at most 120)."
          },
          "maxPagesPerSite": {
            "title": "Max pages per website",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "How many pages of each business website to open while looking for e-mails, e.g. 5. The homepage is opened first, then contact, impressum, about and team pages. Most sites need 2-3.",
            "default": 5
          },
          "enrichContacts": {
            "title": "Find e-mails and socials on websites",
            "type": "boolean",
            "description": "Visit each place's website and extract e-mails, phones and social profiles. Turn off to get only the Google Maps data.",
            "default": true
          },
          "onlyWithEmail": {
            "title": "Only places with an e-mail",
            "type": "boolean",
            "description": "Return only places where an e-mail was found on the website. Places without an e-mail are still searched and crawled, but they are left out of the results and you are not charged for them. Needs \"Find e-mails and socials on websites\" on.",
            "default": false
          },
          "language": {
            "title": "Language",
            "type": "string",
            "description": "Language of Google Maps results as a 2-letter code, e.g. \"en\", \"de\", \"tr\".",
            "default": "en"
          },
          "country": {
            "title": "Country",
            "type": "string",
            "description": "Country of Google Maps results as a 2-letter code, e.g. \"us\", \"gb\", \"de\".",
            "default": "us"
          },
          "skipClosedPlaces": {
            "title": "Skip closed places",
            "type": "boolean",
            "description": "Leave out places Google marks as permanently or temporarily closed.",
            "default": false
          },
          "minRating": {
            "title": "Minimum rating",
            "minimum": 0,
            "maximum": 5,
            "type": "number",
            "description": "Only return places rated at least this many stars (0-5), e.g. 4. 0 returns every place.",
            "default": 0
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}