{
  "openapi": "3.0.1",
  "info": {
    "title": "Website Email & Contact Details Scraper: Phones, Socials",
    "description": "Email scraper and contact details extractor for company websites. One clean row per site: emails (junk filtered, MX-checked), phones, LinkedIn, Facebook, Instagram, X, YouTube, TikTok and contact page. No proxy needed. Pay only for sites with contacts.",
    "version": "1.1",
    "x-build-id": "i1cHzwfcX5lDqNWRH"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/mosaicked_sponge~website-contact-extractor/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-mosaicked_sponge-website-contact-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/mosaicked_sponge~website-contact-extractor/runs": {
      "post": {
        "operationId": "runs-sync-mosaicked_sponge-website-contact-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/mosaicked_sponge~website-contact-extractor/run-sync": {
      "post": {
        "operationId": "run-sync-mosaicked_sponge-website-contact-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": {
          "websites": {
            "title": "Websites",
            "type": "array",
            "description": "Domains or URLs, one per line (for example <code>acme.com</code> or <code>https://www.acme.com</code>). Messy cells are fine: <code>Acme Inc - acme.com</code>, <code>a.com, b.com</code>, pasted emails (their domain is used) and links copied from Markdown or Excel. You get ONE result row per input line, in the same order (<code>inputIndex</code>, <code>inputUrl</code> echo exactly what you entered). Duplicates (same host, with or without www) are scanned once and charged once.",
            "items": {
              "type": "string"
            }
          },
          "websitesFileUrl": {
            "title": "...or a file / Google Sheet with websites",
            "type": "string",
            "description": "Optional link to a public TXT or CSV file, or a Google Sheet shared as 'Anyone with the link can view'. One website per line; the website (or email) is picked from any column. Added to the list above."
          },
          "maxPagesPerSite": {
            "title": "Max pages per website",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "The homepage plus the pages most likely to contain contacts (contact, impressum/imprint, about, team, legal, locations). Your price is per website, so this only changes speed, never your bill.",
            "default": 5
          },
          "emailScope": {
            "title": "Which emails to keep",
            "enum": [
              "all",
              "sameDomain",
              "sameDomainOrFreeMail"
            ],
            "type": "string",
            "description": "<b>all</b>: every real-looking email on the site. <b>sameDomain</b>: only emails on the website's own domain (e.g. @acme.com). <b>sameDomainOrFreeMail</b>: own domain plus Gmail/Outlook/Yahoo-style addresses (common for small local businesses).",
            "default": "all"
          },
          "checkEmailDomains": {
            "title": "Check that email domains accept mail (MX)",
            "type": "boolean",
            "description": "Free DNS check per email domain. Emails on domains that cannot receive mail are dropped; every kept email shows <code>mxValid</code>. No email is ever sent.",
            "default": true
          },
          "phonesFromText": {
            "title": "Find phone numbers in page text",
            "type": "boolean",
            "description": "Besides clickable tel: links and structured data, also detect numbers written in the text. Only numbers that are valid for their country are kept (dates, prices and IDs are rejected).",
            "default": true
          },
          "onlyWebsitesWithContacts": {
            "title": "Only output websites with contacts",
            "type": "boolean",
            "description": "Hide rows for websites where nothing was found or that failed (they are free either way). Their counts stay in the OUTPUT run summary.",
            "default": false
          },
          "outputLayout": {
            "title": "Output layout",
            "enum": [
              "oneRowPerWebsite",
              "oneRowPerContact"
            ],
            "type": "string",
            "description": "<b>One row per website</b>: all contacts of a site in one row with flat columns (primaryEmail, allEmails, linkedin...). <b>One row per contact</b>: every email, phone and social profile gets its own row with its type and source page. The price is the same either way: per website, never per contact.",
            "default": "oneRowPerWebsite"
          },
          "maxConcurrency": {
            "title": "Websites in parallel",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "How many websites are scanned at the same time. Each single website still gets at most 2 requests at a time with a pause between them.",
            "default": 20
          },
          "perDomainDelayMs": {
            "title": "Pause between requests to the same website (ms)",
            "minimum": 0,
            "maximum": 10000,
            "type": "integer",
            "description": "Politeness delay between page requests to one website.",
            "default": 300
          },
          "requestTimeoutSecs": {
            "title": "Request timeout (seconds)",
            "minimum": 5,
            "maximum": 60,
            "type": "integer",
            "description": "How long to wait for one page before giving up on it.",
            "default": 15
          },
          "respectRobotsTxt": {
            "title": "Respect robots.txt",
            "type": "boolean",
            "description": "Skip pages the website's robots.txt disallows (such websites get status robots_disallowed and are not charged).",
            "default": true
          },
          "maxWebsites": {
            "title": "Max websites per run",
            "minimum": 1,
            "maximum": 50000,
            "type": "integer",
            "description": "Safety cap. Leave empty for no cap (up to 50,000). You can also set a maximum cost per run in the run options; the Actor stops cleanly when it is reached."
          },
          "proxyConfiguration": {
            "title": "Proxy for blocked websites (optional)",
            "type": "object",
            "description": "Off by default: most websites work without a proxy. If you turn on Apify Proxy (datacenter) or add your own proxy URLs, it is used ONLY to retry websites that blocked or timed out on the direct connection. Residential proxy is not supported.",
            "default": {
              "useApifyProxy": false
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}