{
  "openapi": "3.0.1",
  "info": {
    "title": "Bulk Email Verifier, Finder and Deliverability Checker",
    "description": "Verify, find, and grade emails without the guesswork. Unlike cheaper checkers that quietly mark a blocked connection as 'invalid,' this one tells you the truth: verified, invalid, or honestly unknown, every time.",
    "version": "0.0",
    "x-build-id": "IoWLgvnoDLIDl9qxu"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/neverbounce~email-finder-and-verifier/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-neverbounce-email-finder-and-verifier",
        "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/neverbounce~email-finder-and-verifier/runs": {
      "post": {
        "operationId": "runs-sync-neverbounce-email-finder-and-verifier",
        "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/neverbounce~email-finder-and-verifier/run-sync": {
      "post": {
        "operationId": "run-sync-neverbounce-email-finder-and-verifier",
        "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": {
          "emails": {
            "title": "Email addresses to verify",
            "type": "array",
            "description": "List of specific email addresses to check (format, MX, disposable/free/role detection, and a confidence score from the domain's DNS and email-authentication setup). Use the Bulk edit button to paste many at once, or skip this and upload a CSV in the field below instead.",
            "items": {
              "type": "string"
            }
          },
          "emailsFile": {
            "title": "Or upload a CSV of emails",
            "type": "string",
            "description": "Optional alternative to the list above. CSV file with a single column of email addresses and no header row. Rows here are combined with any addresses entered above."
          },
          "contacts": {
            "title": "Contacts to find emails for",
            "type": "array",
            "description": "List of {firstName, lastName, domain, linkedinUrl}. firstName, lastName, and domain (the company's website domain, e.g. example.com) are all mandatory per contact. LinkedIn URL (optional) is passed straight through to the result for your own reference. Generates common corporate email patterns and scores the best candidate. Enable website/GitHub/Gravatar checks below for stronger evidence than pattern guessing alone, all at no extra cost. You can also skip this and upload a CSV in the field below instead."
          },
          "contactsFile": {
            "title": "Or upload a CSV of contacts",
            "type": "string",
            "description": "Optional alternative to the list above. CSV file with a header row and the columns firstName, lastName, domain (all three required per row; domain is the contact's company website domain, e.g. example.com), plus an optional linkedinUrl column. Rows here are combined with any contacts entered above."
          },
          "domains": {
            "title": "Domains to discover role-based emails for",
            "type": "array",
            "description": "List of domains. Tests common role addresses (info@, contact@, sales@, support@, hello@, admin@).",
            "items": {
              "type": "string"
            }
          },
          "verificationLevel": {
            "title": "Verification level",
            "enum": [
              "format",
              "mx"
            ],
            "type": "string",
            "description": "'format' only checks syntax. 'mx' (default) also checks DNS MX records, identifies the provider, and factors the domain's SPF/DKIM/DMARC authentication setup into the confidence score. There is no live SMTP option in this Actor's own code - see README for why, and see verifyWithZeroBounce below for the optional paid alternative.",
            "default": "mx"
          },
          "verifyWithZeroBounce": {
            "title": "Use paid live mailbox verification for uncertain results (ZeroBounce)",
            "type": "boolean",
            "description": "When a result would otherwise be 'unknown' after the free DNS-based checks (most commonly free-provider addresses like Gmail/Outlook, or an unconfirmed pattern guess for a contact), this optionally calls ZeroBounce's real-time mailbox verification API for a real answer. Rows verified this way are billed at a higher per-result rate (about $0.03) than the standard rate, since it costs real money per lookup - you don't need your own ZeroBounce key, the Actor owner covers the account. Only fires for the emails/contacts input modes, and only when the domain is confirmed to have MX records; never for domain-wide role discovery. Turn off to stay entirely on the free DNS-only signals for every result. See README for details.",
            "default": true
          },
          "maxPatternsToTest": {
            "title": "Max patterns to test per contact",
            "minimum": 1,
            "maximum": 14,
            "type": "integer",
            "description": "How many common corporate email formats to generate and rank per contact.",
            "default": 8
          },
          "checkDeliverability": {
            "title": "Check domain deliverability (SPF/DKIM/DMARC)",
            "type": "boolean",
            "description": "DNS-based check of the domain's email authentication setup. Produces a letter grade (A+ to F) and a 0-100 score plus a list of issues found.",
            "default": true
          },
          "checkWebsite": {
            "title": "Search company website for emails",
            "type": "boolean",
            "description": "Contact mode only. Scrapes the domain's homepage / contact / about / team pages for an email that plausibly belongs to this person. A direct match here overrides pattern guessing and is reported as resultStatus 'valid'. Free, no extra cost, on by default.",
            "default": true
          },
          "checkGitHub": {
            "title": "Search GitHub commits",
            "type": "boolean",
            "description": "Contact mode only. Searches public GitHub commit history for an author-email match on the target domain. Useful for developer contacts. Unauthenticated requests are rate-limited to about 10/minute - add a token below for higher limits. Free, no extra cost, on by default.",
            "default": true
          },
          "checkGravatar": {
            "title": "Check Gravatar profiles",
            "type": "boolean",
            "description": "Contact mode only. Checks whether the best-candidate email has a Gravatar profile, adding a small confidence boost if so. Free, no extra cost, on by default.",
            "default": true
          },
          "githubToken": {
            "title": "GitHub API token (optional)",
            "type": "string",
            "description": "Personal access token for higher-rate-limit GitHub commit search. Only used when checkGitHub is on."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}