{
  "openapi": "3.0.1",
  "info": {
    "title": "Public Business Email Finder — Snov.io Alternative",
    "description": "Find business email addresses visibly published on company websites. Supply domains and export email evidence, source URLs, domain-MX signals, and collection times for contact review. No guessed addresses or sending.",
    "version": "0.1",
    "x-build-id": "y7iyU0ZK5uBrWoT0X"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/khadinakbar~snov-io-alternative/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-khadinakbar-snov-io-alternative",
        "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/khadinakbar~snov-io-alternative/runs": {
      "post": {
        "operationId": "runs-sync-khadinakbar-snov-io-alternative",
        "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/khadinakbar~snov-io-alternative/run-sync": {
      "post": {
        "operationId": "run-sync-khadinakbar-snov-io-alternative",
        "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": [
          "targets"
        ],
        "properties": {
          "targets": {
            "title": "Company domains to research",
            "minItems": 1,
            "maxItems": 25,
            "type": "array",
            "description": "Provide 1 to 25 public company domains you are authorized to research. Each item accepts a hostname such as 'example.com' and optional known business context. This reads the homepage plus directly linked same-site contact, about, team, legal, privacy, or terms pages. It is not a personal-email list, private database query, or mailbox login.",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "properties": {
                "companyDomain": {
                  "title": "Company domain",
                  "type": "string",
                  "description": "Public company hostname or homepage URL, for example 'example.com' or 'https://www.example.com'. It must resolve publicly and cannot contain credentials, a private IP, localhost, or a non-standard port. The Actor normalizes the hostname before collection. This is not a LinkedIn URL, a private intranet address, or a personal email address.",
                  "maxLength": 253
                },
                "companyName": {
                  "title": "Company name",
                  "type": "string",
                  "description": "Optional company label returned with this result, for example 'Example Organization'. It is limited to 200 characters and does not change which pages are collected. Leave it blank when the domain is sufficient. This is not used to search third-party databases.",
                  "maxLength": 200
                },
                "fullName": {
                  "title": "Known business contact name",
                  "type": "string",
                  "description": "Optional known business contact name, for example 'Jane Smith'. The Actor only reports whether this text is visibly mentioned on the fetched company pages; it never generates an email pattern from the name. Leave blank for domain-level research. This is not a request to discover private contact data.",
                  "maxLength": 160
                },
                "externalId": {
                  "title": "Your record ID",
                  "type": "string",
                  "description": "Optional identifier returned unchanged, for example 'crm-001'. Use it to join results back to an authorized CRM or spreadsheet. It is limited to 200 characters. This value is not used for public-web searching.",
                  "maxLength": 200
                }
              },
              "required": [
                "companyDomain"
              ]
            }
          },
          "maxTargets": {
            "title": "Maximum domains to process",
            "minimum": 1,
            "maximum": 25,
            "type": "integer",
            "description": "Safety cap for accepted domain targets. Use 1 for a quick canary, and use up to 25 for one bounded batch. The default is 10 and values outside 1 to 25 are constrained. This is not a result-count or page-depth setting.",
            "default": 10
          },
          "maxPagesPerTarget": {
            "title": "Maximum same-site pages per domain",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "Maximum number of public same-site pages to inspect after the homepage, including the homepage. The Actor follows only directly linked contact, about, team, legal, privacy, or terms pages. The default is 3 and values are bounded from 1 to 5. This does not crawl a site broadly or invent URL paths.",
            "default": 3
          },
          "requestTimeoutSecs": {
            "title": "Per-page request timeout in seconds",
            "minimum": 5,
            "maximum": 45,
            "type": "integer",
            "description": "Time limit for one public page request, for example 20 seconds. The default is 20 and values are bounded from 5 to 45 seconds. Lower values make runs fail faster on unresponsive sites. This is not the whole-run timeout configured by Apify.",
            "default": 20
          },
          "useApifyUnblockerFallback": {
            "title": "Use Apify Unblocker after a classified failure",
            "type": "boolean",
            "description": "Enable one Apify Unblocker retry only after a public direct request is blocked or transiently unavailable. The default is true and may add Apify proxy usage charges. Disable it for direct-only testing. This is not a guarantee that protected or private pages can be accessed.",
            "default": true
          },
          "preferApifyUnblocker": {
            "title": "Try Apify Unblocker before direct access",
            "type": "boolean",
            "description": "When true, try Apify Unblocker first for every public page; direct access remains the recovery route if proxy creation fails. The default is false because direct public HTTP is cheaper and preferred. Enable only for an authorized site with observed direct blocking. This is not a bypass for login, paywall, or access controls.",
            "default": 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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}