{
  "openapi": "3.0.1",
  "info": {
    "title": "Company Enrichment API - Domain to Firmographics, Tech & Email",
    "description": "One domain in, one flat JSON company profile out: company name, address, emails, phones, socials, full tech stack, the back-office SaaS a company runs read from DNS, and a graded MX/SPF/DMARC/DKIM deliverability verdict. Flat price per domain, no run minimum, no free-tier penalty. Built for agents.",
    "version": "0.0",
    "x-build-id": "ZXUGYeSJY7TV14Y9o"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/santhej~company-intel-lookup/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-santhej-company-intel-lookup",
        "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/santhej~company-intel-lookup/runs": {
      "post": {
        "operationId": "runs-sync-santhej-company-intel-lookup",
        "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/santhej~company-intel-lookup/run-sync": {
      "post": {
        "operationId": "run-sync-santhej-company-intel-lookup",
        "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",
            "minItems": 1,
            "maxItems": 5000,
            "type": "array",
            "description": "Company domains to enrich, one per line. Accepts a bare apex ('stripe.com'), a 'www.' host, a full URL ('https://stripe.com/pricing') or an email-style host — everything is normalised to the apex domain first. Duplicates and subdomains that collapse to the same apex are deduplicated, so you are never charged twice for the same company. Up to 5,000 per run.",
            "items": {
              "type": "string"
            }
          },
          "verbosity": {
            "title": "Output verbosity",
            "enum": [
              "core",
              "full"
            ],
            "type": "string",
            "description": "How many fields each row carries. 'Core' drops raw-record duplicates of already-interpreted verdicts (raw SPF/MX/DMARC strings, page title, canonical URL, geo coordinates and the diagnostic block) — the right default when an LLM agent reads the output, because a 50-domain call at full verbosity is thousands of key/value pairs of context. 'Full' returns every field.",
            "default": "core"
          },
          "max_pages": {
            "title": "Max pages per domain",
            "minimum": 1,
            "maximum": 6,
            "type": "integer",
            "description": "Hard ceiling on HTML pages fetched per domain; the homepage counts as 1. The default of 4 buys homepage + the best contact link + the best legal/privacy link + the best careers link (on .de/.at/.ch the statutory Impressum takes the fourth slot instead). Deeper crawling adds no new fields and pollutes the contact data. Does NOT change the price: billing is per domain, never per page.",
            "default": 4
          },
          "include_tech_stack": {
            "title": "Detect tech stack",
            "type": "boolean",
            "description": "Run the fingerprint matcher for technologies, CMS, ecommerce platform, analytics and CDN. This is the only CPU-heavy step; turn it off for the lowest-latency single-domain agent call. Every other signal family still returns, and the price is unchanged either way.",
            "default": true
          },
          "include_open_roles": {
            "title": "Fetch open roles",
            "type": "boolean",
            "description": "When off, the actor still identifies the applicant tracking system the company uses, but skips every job-board payload — which removes the largest single download from the hot path. Turn it on to also return the open-role count, the departments hiring and a 10-role sample. See the README for the honest hit rate before relying on this.",
            "default": false
          },
          "role_emails_only": {
            "title": "Role email addresses only",
            "type": "boolean",
            "description": "GDPR-conservative default. When on, only role accounts on the company's own domain are returned (info@, hello@, sales@, support@, contact@, press@, careers@, hi@, team@, enquiries@, admin@, office@). Addresses on other domains are ALWAYS dropped regardless of this setting, and team/staff pages are never crawled.",
            "default": true
          },
          "residential_fallback": {
            "title": "Retry blocked sites via residential IP",
            "type": "boolean",
            "description": "Opt-in single retry through a residential IP when a site answers 403, 429 or 451. Hard-capped at one request and 150 KB of wire traffic. Billed as a separate 'Blocked site unblocked' event only when the retry actually returns usable HTML — never on a failed attempt. If your account has no residential proxy access the run logs a warning and continues normally.",
            "default": false
          },
          "max_concurrency": {
            "title": "Max concurrent domains",
            "minimum": 1,
            "maximum": 30,
            "type": "integer",
            "description": "How many domains are enriched in parallel. The default of 8 is tuned for the actor's 1 GB memory allocation, where the container gets a quarter of a CPU core and higher concurrency makes request timeouts fire late and spuriously. Per-host concurrency is always pinned to 1 regardless of this value.",
            "default": 8
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}