{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Maps Email Enricher — Find Business Emails from Maps",
    "description": "The missing step between Google Maps Scraper and your cold email tool. Paste your Maps dataset ID and get verified business emails back — crawls homepages + contact pages, scores by confidence, validates MX records. 77%+ hit rate on reachable sites.",
    "version": "1.0",
    "x-build-id": "KGkFJKx2AVR6Ay1Ag"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/kuldip_parmar~google-maps-email-enricher/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-kuldip_parmar-google-maps-email-enricher",
        "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/kuldip_parmar~google-maps-email-enricher/runs": {
      "post": {
        "operationId": "runs-sync-kuldip_parmar-google-maps-email-enricher",
        "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/kuldip_parmar~google-maps-email-enricher/run-sync": {
      "post": {
        "operationId": "run-sync-kuldip_parmar-google-maps-email-enricher",
        "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": [
          "searchTerm",
          "location"
        ],
        "properties": {
          "searchTerm": {
            "title": "🔍 Search term",
            "minLength": 1,
            "type": "string",
            "description": "What type of business are you looking for? Examples: `restaurant`, `dentist`, `plumber`, `digital agency`, `accountant`, `real estate agent`. Use the same terms you would type into Google Maps."
          },
          "location": {
            "title": "📍 Location",
            "minLength": 1,
            "type": "string",
            "description": "City, region, or country to search in. Be as specific as you need. Examples: `New York USA`, `London UK`, `Sydney Australia`, `Chicago Illinois`."
          },
          "maxResults": {
            "title": "💯 Number of businesses to find",
            "minimum": 1,
            "maximum": 120,
            "type": "integer",
            "description": "How many businesses to scrape from Google Maps. Google Maps shows up to ~120 results per search term. Default is 20 — good for testing. Use 50–100 for production runs.",
            "default": 20
          },
          "crawlSubpages": {
            "title": "🔎 Also check Contact & About pages",
            "type": "boolean",
            "description": "Recommended: ON. Many businesses only list their email on /contact or /about — not the homepage. This option checks those extra pages and increases the email hit rate by 15–20%.",
            "default": true
          },
          "validateMx": {
            "title": "✅ Validate email MX records",
            "type": "boolean",
            "description": "Recommended: ON. Checks that each email domain has working mail servers before including it in the output. Filters out dead emails from businesses that no longer operate.",
            "default": true
          },
          "skipNoWebsite": {
            "title": "🚫 Skip businesses with no website",
            "type": "boolean",
            "description": "Default: OFF. When ON, businesses that have no website listed on Google Maps are excluded from the output. Turn ON for a cleaner list when you only care about businesses with online presence.",
            "default": false
          },
          "skipNoEmail": {
            "title": "📧 Only show businesses where email was found",
            "type": "boolean",
            "description": "Default: OFF. When ON, only rows where an email was successfully found are saved. Useful when you want a clean outreach list with zero empty rows.",
            "default": false
          },
          "maxConcurrency": {
            "title": "⚡ Speed — parallel website crawlers",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "How many business websites to visit at the same time during email extraction. 10 is safe and fast for most runs. Increase to 20–30 for large runs with sufficient memory.",
            "default": 10
          },
          "proxyConfiguration": {
            "title": "🌐 Proxy settings",
            "type": "object",
            "description": "**Residential proxies strongly recommended.** Google Maps actively blocks datacenter IPs. Without residential proxies, the Maps search step may return 0 results. Residential proxies also improve email extraction hit rate on business websites that block datacenter IPs."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}