{
  "openapi": "3.0.1",
  "info": {
    "title": "Email ✉️ & Phone 📞 Extractor",
    "description": "📧📞 Email & Phone Extractor Scraper pulls contact details from websites and lists—emails, phone numbers, and sources for verification. Perfect for lead gen, B2B outreach, and CRM enrichment. Fast, accurate, and easy to use. 🚀",
    "version": "0.1",
    "x-build-id": "9agB0LOsWv0y4i7F4"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapium~email-and-phone-extractor/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapium-email-and-phone-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/scrapium~email-and-phone-extractor/runs": {
      "post": {
        "operationId": "runs-sync-scrapium-email-and-phone-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/scrapium~email-and-phone-extractor/run-sync": {
      "post": {
        "operationId": "run-sync-scrapium-email-and-phone-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",
        "required": [
          "startUrls"
        ],
        "properties": {
          "startUrls": {
            "title": "🔗 Start URLs",
            "type": "array",
            "description": "One or more website URLs to crawl for contact details (e.g. https://apify.com/contact). Bulk input is supported — paste a list, use Bulk edit, or load a text file / Google Sheet.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "maxRequests": {
            "title": "📄 Total maximum pages",
            "minimum": 1,
            "type": "integer",
            "description": "The hard cap on how many pages the crawler will load in total across all websites.",
            "default": 20
          },
          "sameDomain": {
            "title": "🏠 Stay within domain",
            "type": "boolean",
            "description": "When enabled, the crawler only follows links that stay on the start URL's domain.",
            "default": true
          },
          "onlyEmails": {
            "title": "📧 Only emails",
            "type": "boolean",
            "description": "When enabled, only email addresses are extracted — phone numbers and social profiles are skipped.",
            "default": false
          },
          "onlyOneEmailPerDomain": {
            "title": "1️⃣ Only one email per website",
            "type": "boolean",
            "description": "Stop crawling a website as soon as the first email address is found on it.",
            "default": false
          },
          "maxDepth": {
            "title": "🪜 Maximum link depth",
            "minimum": 0,
            "maximum": 20,
            "type": "integer",
            "description": "How deep to follow links from each start URL. 0 = only the start pages, 1 = start pages + their links, and so on.",
            "default": 2
          },
          "maxRequestsPerStartUrl": {
            "title": "🔢 Maximum links per start URL",
            "minimum": 1,
            "type": "integer",
            "description": "Optional limit on how many pages may be loaded for each individual start URL. Leave empty for no per-URL limit."
          },
          "pseudoUrls": {
            "title": "🧭 Links filter (regex patterns)",
            "type": "array",
            "description": "Only links matching one of these regular expressions are followed. The default `.*` follows every link.",
            "default": [
              ".*"
            ],
            "items": {
              "type": "string"
            }
          },
          "maxConcurrency": {
            "title": "⚡ Concurrency",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "How many pages to fetch in parallel. Higher = faster, but more likely to be rate-limited.",
            "default": 5
          },
          "requestDelay": {
            "title": "⏳ Delay between requests (seconds)",
            "minimum": 0,
            "maximum": 10,
            "type": "number",
            "description": "A polite pause added after each page. Random jitter is added automatically to look more human.",
            "default": 1
          },
          "defaultPhoneRegion": {
            "title": "🌍 Default phone region",
            "enum": [
              "",
              "US",
              "GB",
              "CA",
              "AU",
              "IN",
              "DE",
              "FR",
              "ES",
              "IT",
              "NL",
              "BR",
              "MX",
              "JP",
              "SG",
              "AE",
              "ZA",
              "SE",
              "CH"
            ],
            "type": "string",
            "description": "Region used to validate phone numbers written without a +country code. Leave on auto-detect to infer it from each website.",
            "default": ""
          },
          "usePlaywrightFallback": {
            "title": "🎭 JavaScript rendering fallback",
            "type": "boolean",
            "description": "If a page looks like it needs JavaScript, re-render it in a real browser so dynamic contact details are not missed.",
            "default": true
          },
          "proxyConfiguration": {
            "title": "🛡️ Proxy",
            "type": "object",
            "description": "By default the crawler runs WITHOUT a proxy. If a website blocks it, the Actor automatically escalates to a datacenter proxy and then to residential proxies. You can also pre-select a proxy here.",
            "default": {
              "useApifyProxy": false
            }
          },
          "considerChildFrames": {
            "title": "🖼️ Probe frames",
            "type": "boolean",
            "description": "Also extract contact details embedded inside child frames (IFRAMEs) on the page.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}