{
  "openapi": "3.0.1",
  "info": {
    "title": "Company Contact Extractor - Emails, Phones & Socials",
    "description": "Extract public business contact details from company websites: emails, phone numbers, LinkedIn/X/Facebook/Instagram/YouTube/TikTok/GitHub/Crunchbase profiles, contact page, address. Input: domains or URLs. Output: one item per domain. Pay only for domains with contacts.",
    "version": "1.0",
    "x-build-id": "E44BqjdeleD2DiB7J"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/artificially~company-contact-extractor/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-artificially-company-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/artificially~company-contact-extractor/runs": {
      "post": {
        "operationId": "runs-sync-artificially-company-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/artificially~company-contact-extractor/run-sync": {
      "post": {
        "operationId": "run-sync-artificially-company-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",
        "required": [
          "websites"
        ],
        "properties": {
          "websites": {
            "title": "Company websites or domains",
            "type": "array",
            "description": "Required. One company website per entry: a bare domain (e.g. stripe.com), a domain with www (e.g. www.hetzner.com) or a full URL (e.g. https://apify.com or https://apify.com/contact to start on a specific page). http/https and www/non-www are resolved automatically and redirects are followed. Only the company's own website is crawled; do not enter LinkedIn, Facebook or Google Maps URLs. Example: [\"stripe.com\", \"https://www.manufactum.de\", \"fancourier.ro\"].",
            "items": {
              "type": "string"
            }
          },
          "maxPagesPerDomain": {
            "title": "Max pages per domain",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "How many pages to load per website, from 1 to 50, including the home page. The actor starts on the home page and then opens the most promising internal pages first (contact, imprint/Impressum, about, team, support, legal/privacy, careers; keywords in 20+ languages). Example: 5 for fast runs, 10 (default) for good coverage, 20 for large sites. More pages means more contacts but a slower run.",
            "default": 10
          },
          "includeEmails": {
            "title": "Extract emails",
            "type": "boolean",
            "description": "Collect email addresses from mailto: links, page text (including obfuscated forms like info [at] example [dot] com and Cloudflare-protected emails) and schema.org data. Set to false to skip emails.",
            "default": true
          },
          "emailFilter": {
            "title": "Email filter",
            "enum": [
              "all",
              "generic_only",
              "exclude_generic"
            ],
            "type": "string",
            "description": "Which emails to keep. \"all\" keeps every plausible email. \"generic_only\" keeps role addresses such as info@, sales@, contact@, support@, office@, press@ (safest for GDPR). \"exclude_generic\" keeps only addresses that look personal (e.g. jane.doe@). Each email in the output also carries type (generic or personal) so you can filter later.",
            "default": "all"
          },
          "includePhones": {
            "title": "Extract phone numbers",
            "type": "boolean",
            "description": "Collect phone numbers from tel: links, schema.org data and labeled text (e.g. \"Tel.: 030 1234567\", \"Phone: +1 415 555 2671\"). Numbers are validated and normalized to E.164 with libphonenumber, using the website's country (from the domain ending, address or page language) for local formats. Fax numbers are skipped. Set to false to skip phones.",
            "default": true
          },
          "includeSocials": {
            "title": "Extract social profiles",
            "type": "boolean",
            "description": "Find the company's own profiles on LinkedIn, X/Twitter, Facebook, Instagram, YouTube, TikTok, GitHub and Crunchbase. Share buttons and unrelated profiles are ignored; when several profiles exist the one linked in the header/footer, in schema.org sameAs, or matching the domain name wins. Set to false to skip socials.",
            "default": true
          },
          "compactOutput": {
            "title": "Compact output (for AI agents)",
            "type": "boolean",
            "description": "Set to true to save a slim item per domain: domain, companyName, emails (plain strings), phones (E.164 strings), socials (only the networks found) and contactPageUrl. Source URLs, email types, address and crawl stats are dropped. Recommended when an AI agent or LLM reads the results. Leave false for the full item.",
            "default": false
          },
          "sameDomainOnly": {
            "title": "Stay on the same host",
            "type": "boolean",
            "description": "If true (default), only pages on the website's own host are crawled (www and non-www count as the same). Set to false to also follow links to subdomains of the same company domain, e.g. support.example.com or about.example.com. External websites are never crawled.",
            "default": true
          },
          "respectRobotsTxt": {
            "title": "Respect robots.txt",
            "type": "boolean",
            "description": "If true (default), pages disallowed by the website's robots.txt are not loaded, and domains that disallow everything are reported in FAILED_DOMAINS with reason blocked_by_robots. Set to false only if you have the right to crawl those pages.",
            "default": true
          },
          "maxConcurrency": {
            "title": "Domains in parallel",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "How many websites are crawled at the same time, from 1 to 50. Each website still gets at most 2 requests at a time with a short delay between them, to stay polite. Example: 10 (default).",
            "default": 10
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Optional. Most company websites work without a proxy. If many domains end up in FAILED_DOMAINS with reason blocked (bot protection), enable Apify Proxy, e.g. {\"useApifyProxy\": true} for datacenter or {\"useApifyProxy\": true, \"apifyProxyGroups\": [\"RESIDENTIAL\"]} for residential."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}