{
  "openapi": "3.0.1",
  "info": {
    "title": "Website Contact Details Scraper – Emails, Phones & Socials",
    "description": "Give it a list of websites or domains: it crawls each site's contact, about, team and impressum pages and returns one clean lead record per website with emails, phone numbers (E.164) and LinkedIn, Facebook, Instagram, X, YouTube, TikTok, WhatsApp and other social profiles.",
    "version": "1.0",
    "x-build-id": "ADAIIRzB0ORkyftFx"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/zkill3r~website-contact-details-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-zkill3r-website-contact-details-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/zkill3r~website-contact-details-scraper/runs": {
      "post": {
        "operationId": "runs-sync-zkill3r-website-contact-details-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/zkill3r~website-contact-details-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-zkill3r-website-contact-details-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",
        "properties": {
          "startUrls": {
            "title": "Websites",
            "type": "array",
            "description": "Websites to scrape: full URLs or bare domains (\"example.com\", \"https://www.example.com/page\"). Each website is crawled from its homepage. Inputs on the same registrable domain (www.example.com, shop.example.com, example.com/contact) are treated as one website. Leave empty (with no list below) to try the Actor on apify.com and python.org.",
            "default": [],
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "websites": {
            "title": "Websites (plain list)",
            "type": "string",
            "description": "Optional. Paste a list of websites or domains, one per line (commas also work). Combined with the list above.",
            "default": ""
          },
          "maxPagesPerSite": {
            "title": "Max pages per website",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Maximum pages fetched from each website, homepage included (1–100). Contact, about, team and impressum pages are fetched first.",
            "default": 10
          },
          "maxDepth": {
            "title": "Max link depth",
            "minimum": 0,
            "maximum": 10,
            "type": "integer",
            "description": "How many clicks away from the homepage to go. 0 = homepage only, 1 = pages linked from the homepage, 2 = one more level.",
            "default": 2
          },
          "sameDomainOnly": {
            "title": "Stay on the same domain",
            "type": "boolean",
            "description": "Only follow links on the website's own registrable domain (subdomains such as shop.example.com are allowed). Turn off to also follow links to other domains (they count towards the page limit).",
            "default": true
          },
          "prioritizeContactPages": {
            "title": "Contact pages first",
            "type": "boolean",
            "description": "Fetch links that look like contact, about, team, impressum/imprint, legal, privacy, support, staff, people or careers pages (in many languages) before other links, so the page limit is spent where contact details are.",
            "default": true
          },
          "includeEmails": {
            "title": "Extract emails",
            "type": "boolean",
            "description": "Collect email addresses (mailto links, page text, Cloudflare-protected and obfuscated addresses).",
            "default": true
          },
          "includePhones": {
            "title": "Extract phone numbers",
            "type": "boolean",
            "description": "Collect phone numbers from tel: links, page text and structured data, normalized to E.164 (+14155550132).",
            "default": true
          },
          "includeSocials": {
            "title": "Extract social profiles",
            "type": "boolean",
            "description": "Collect LinkedIn, Facebook, Instagram, X/Twitter, YouTube, TikTok, Pinterest, GitHub, Threads, WhatsApp and Telegram profile links (share buttons and posts are ignored).",
            "default": true
          },
          "phoneCountryHint": {
            "title": "Phone country",
            "type": "string",
            "description": "Optional two-letter country code (US, GB, MY, DE…) used to read phone numbers written without a country code, e.g. \"(415) 555-0132\". When empty, each website's country domain is used (.my → MY, .co.uk → GB); on .com/.org sites only numbers with a +country code are read from text (tel: links are always read).",
            "default": ""
          },
          "outputPerPage": {
            "title": "Also save one record per page",
            "type": "boolean",
            "description": "Besides the merged website record, save a \"page\" record for every crawled page with what was found on it. Page records are free.",
            "default": false
          },
          "useBrowserFallback": {
            "title": "Browser fallback for JavaScript sites",
            "type": "boolean",
            "description": "When a page comes back with almost no text (a site built with JavaScript), render it in a headless browser and read it again. Slower; each rendered page is charged as a \"page-browser\" event.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Apify datacenter proxy by default. A 403/429 or bot-challenge page is retried once on a new session; if it is still blocked, the website gets status \"blocked\" (free). Use RESIDENTIAL proxy for sites behind strict bot protection.",
            "default": {
              "useApifyProxy": 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
                  },
                  "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}