{
  "openapi": "3.0.1",
  "info": {
    "title": "Company Contact Finder: Website Emails, Deliverability Checked",
    "description": "Find company emails from a website, each one checked for deliverability (MX, SPF, DMARC, disposable) before you pay. A contact scraper with email check plus a team page email finder that infers addresses from the company's own format. Fixed price per website, to Google Sheets or Clay.",
    "version": "1.0",
    "x-build-id": "YvownAZ1MaXT0UOfP"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/accountable_eel~company-contact-finder/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-accountable_eel-company-contact-finder",
        "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/accountable_eel~company-contact-finder/runs": {
      "post": {
        "operationId": "runs-sync-accountable_eel-company-contact-finder",
        "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/accountable_eel~company-contact-finder/run-sync": {
      "post": {
        "operationId": "run-sync-accountable_eel-company-contact-finder",
        "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": [
          "domains"
        ],
        "properties": {
          "domains": {
            "title": "Company domains (or website URLs)",
            "type": "array",
            "description": "One company per line: acme.com, www.acme.com or https://acme.com/en/ all work. Each site is read as its homepage plus only its contact-looking pages (contact, impressum, about, team, leadership, support, legal, privacy), capped by 'Max pages per site' below. Every address found is checked against its domain's mail records. One flat price per website that returns a deliverable email; a website that returns nothing is free. Accepted formats: hetzner.com, www.fastly.com, https://basecamp.com/. You're only charged for the ones we actually find — a miss costs nothing.",
            "items": {
              "type": "string"
            }
          },
          "testRun": {
            "title": "Try it first — only process the first 5",
            "type": "boolean",
            "description": "Turn this on to test your input on a small sample before running the full list. Turn it off to process everything.",
            "default": false
          },
          "onlyFound": {
            "title": "Hide rows with no result",
            "type": "boolean",
            "description": "Only keep rows where something was actually found. Misses are always free, whether or not you show them here.",
            "default": false
          },
          "includeKeywords": {
            "title": "Only keep rows containing",
            "type": "array",
            "description": "Optional. Only keep results that mention at least one of these words (e.g. a job title, a city, a product name). Leave empty to keep everything.",
            "items": {
              "type": "string"
            }
          },
          "excludeKeywords": {
            "title": "Skip rows containing",
            "type": "array",
            "description": "Optional. Drop any result that mentions one of these words. Leave empty to skip nothing.",
            "items": {
              "type": "string"
            }
          },
          "maxResults": {
            "title": "Stop after this many results",
            "minimum": 1,
            "type": "integer",
            "description": "Optional. Stop the run once this many results have been found — useful for a quick, cheap sample. Leave blank for no limit."
          },
          "findPeople": {
            "title": "Also find named people and work out their email",
            "type": "boolean",
            "description": "Off by default. When on, the site's team, about, leadership and people pages are also read for names and job titles, and each person gets one email built from the address format this company's own published addresses demonstrate. If the site publishes no personal address, no format is learned and no person email is produced: a format is never guessed. Billed separately per person email that passes the deliverability check.",
            "default": false
          },
          "emailTypes": {
            "title": "Which kinds of address do you want?",
            "enum": [
              "both",
              "role",
              "personal"
            ],
            "type": "string",
            "description": "Leave on both for everything. Picking one kind drops the other before anything is billed, so you are never charged for addresses you filtered out. Personal-only still finds people when you turn people on; role-only never does.",
            "default": "both"
          },
          "onlyDeliverable": {
            "title": "Only return addresses whose domain accepts mail",
            "type": "boolean",
            "description": "On by default: an address is dropped when its domain has no mail route at all, or is a known disposable/temp-mail domain. Turn off to see those rows too; they are never billed either way. Mailbox existence is not checked by anyone without an SMTP handshake, and this actor does not claim to.",
            "default": true
          },
          "suppressionList": {
            "title": "Never return these (emails or domains)",
            "type": "array",
            "description": "Your opt-out list. One entry per line: a full address (jane@acme.com) or a whole domain (acme.com or @acme.com, which also covers its subdomains). Matched ignoring upper/lower case, and applied before anything is returned or billed. Add anyone who asks you to stop contacting them.",
            "items": {
              "type": "string"
            }
          },
          "columns": {
            "title": "Which columns do you want?",
            "type": "array",
            "description": "Choose which pieces of information to include in each result row. All are included by default.",
            "items": {
              "type": "string",
              "enum": [
                "domain",
                "companyName",
                "email",
                "emailType",
                "origin",
                "sourceUrl",
                "personName",
                "personTitle",
                "pattern",
                "patternConfidence",
                "mxFound",
                "provider",
                "spf",
                "dmarc",
                "dkim",
                "disposable",
                "deliverability",
                "personEmailBilled",
                "emails",
                "emailsText",
                "emailCount",
                "publishedEmailCount",
                "inferredEmailCount",
                "peopleFound",
                "peopleCapReached",
                "phones",
                "socials",
                "contactFormUrl",
                "addressText",
                "website",
                "pagesFetched",
                "pagesRead",
                "pagesSkippedByRobots",
                "pageCapReached",
                "checkedAt"
              ],
              "enumTitles": [
                "Domain",
                "Company name",
                "Email",
                "Kind of address",
                "Where it came from",
                "Source page",
                "Person",
                "Job title",
                "Address format",
                "Format confidence",
                "MX record found",
                "Mailbox host",
                "SPF published",
                "DMARC published",
                "DKIM found at a common selector",
                "Disposable domain",
                "Deliverability",
                "Billed as a person email",
                "All addresses (grouped)",
                "All addresses (comma-separated)",
                "Addresses returned",
                "Published addresses",
                "Inferred person addresses",
                "People named on the site",
                "People cap reached",
                "Phones",
                "Social profiles",
                "Contact form page",
                "Postal address",
                "Homepage read",
                "Pages fetched",
                "Pages read",
                "Pages skipped (robots.txt)",
                "Page cap reached",
                "Checked at"
              ]
            },
            "default": [
              "domain",
              "companyName",
              "email",
              "emailType",
              "origin",
              "sourceUrl",
              "personName",
              "personTitle",
              "pattern",
              "patternConfidence",
              "mxFound",
              "provider",
              "spf",
              "dmarc",
              "dkim",
              "disposable",
              "deliverability",
              "personEmailBilled",
              "emails",
              "emailsText",
              "emailCount",
              "publishedEmailCount",
              "inferredEmailCount",
              "peopleFound",
              "peopleCapReached",
              "phones",
              "socials",
              "contactFormUrl",
              "addressText",
              "website",
              "pagesFetched",
              "pagesRead",
              "pagesSkippedByRobots",
              "pageCapReached",
              "checkedAt"
            ]
          },
          "expandRows": {
            "title": "One row per email address (recommended) — turn off for one row per company instead",
            "type": "boolean",
            "description": "When on, each email address found gets its own row instead of being grouped under its company. You're still only charged once per company, no matter how many rows it produces.",
            "default": true
          },
          "maxPagesPerSite": {
            "title": "Max pages per site (hard cap)",
            "type": "integer",
            "description": "1 to 30, homepage included. Only the homepage and links that look like contact, legal, about or team pages are ever fetched, so most sites stop well before the cap. The price per website is the same whatever this is set to.",
            "default": 10
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "Parallel requests. Keep conservative — this target has no browser fallback, so getting blocked costs more than slow-and-steady.",
            "default": 5
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Apify Proxy config. Residential recommended for anti-bot-sensitive targets.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}