{
  "openapi": "3.0.1",
  "info": {
    "title": "Email Verification API - Bulk Validation and Email Finder",
    "description": "Verify email addresses in bulk with SMTP, MX and catch-all checks, get the verdict and the reason code behind it, append the name, gender and location on the address, find a named person's work address, and detect the email pattern a company uses. Pay per result. Bring your own API key.",
    "version": "0.1",
    "x-build-id": "2VodqLeDocOLZPshO"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/nabeelbaghoor~email-verification-api/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-nabeelbaghoor-email-verification-api",
        "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/nabeelbaghoor~email-verification-api/runs": {
      "post": {
        "operationId": "runs-sync-nabeelbaghoor-email-verification-api",
        "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/nabeelbaghoor~email-verification-api/run-sync": {
      "post": {
        "operationId": "run-sync-nabeelbaghoor-email-verification-api",
        "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": {
          "mode": {
            "title": "What to do",
            "enum": [
              "validate",
              "emailFinder",
              "domainSearch",
              "activity"
            ],
            "type": "string",
            "description": "Validate checks a list of addresses for deliverability and appends the identity behind each one. Email finder works out one named person's address at a company. Domain search returns the address pattern a company uses, without needing any name. Activity returns how recently an address was seen engaging with email.",
            "default": "validate"
          },
          "emails": {
            "title": "Email addresses",
            "type": "array",
            "description": "Email addresses, one per line. Used by validation and by the activity route. An address pasted inside a longer string, such as a mail header or a name and address pair, is extracted before the request.",
            "items": {
              "type": "string"
            }
          },
          "ipAddresses": {
            "title": "Signup IP addresses",
            "type": "array",
            "description": "Optional IP addresses the matching address signed up from, one per line, in the same order as the addresses above. The provider uses them to add geography to the record. Leave empty when you do not have them. Validation only.",
            "items": {
              "type": "string"
            }
          },
          "domains": {
            "title": "Company domains",
            "type": "array",
            "description": "Company domains, one per line. Used by the email finder and domain search. A pasted URL is reduced to the bare hostname and an address is reduced to the part after the at sign, so a messy list still works.",
            "items": {
              "type": "string"
            }
          },
          "companyNames": {
            "title": "Company names",
            "type": "array",
            "description": "Company names, one per line, for when you know who the employer is but not their domain. The provider resolves the name to a domain first. Used by the email finder and domain search, and combined with the domains above rather than replacing them.",
            "items": {
              "type": "string"
            }
          },
          "fullNames": {
            "title": "Full names",
            "type": "array",
            "description": "Full names to find addresses for, one per line. Each name is paired with each company above: ten names and one company is ten lookups. A middle name is understood, and the last word is treated as the surname. Email finder only.",
            "items": {
              "type": "string"
            }
          },
          "statuses": {
            "title": "Keep only these verdicts",
            "type": "array",
            "description": "Only keep addresses with these verdicts. Restricting to valid is how you turn a raw list into one that is safe to send to. Leave empty to keep every verdict. Validation only, and applied after the provider answers, so it reduces dataset noise and Apify spend rather than provider credits.",
            "items": {
              "type": "string",
              "enum": [
                "valid",
                "invalid",
                "catch-all",
                "unknown",
                "spamtrap",
                "abuse",
                "do_not_mail"
              ],
              "enumTitles": [
                "Valid: mailbox exists and accepts mail",
                "Invalid: mailbox does not exist",
                "Catch-all: domain accepts everything",
                "Unknown: no verdict could be reached",
                "Spam trap: do not send",
                "Abuse: known complainer",
                "Do not mail: role, disposable or toxic"
              ]
            },
            "default": []
          },
          "subStatuses": {
            "title": "Keep only these reason codes",
            "type": "array",
            "description": "Only keep addresses whose reason code is one of these. The reason code is the detail under the verdict, and it is what separates a temporary greylist from a mailbox that genuinely does not exist. Leave empty to keep every reason. Validation only.",
            "items": {
              "type": "string",
              "enum": [
                "alternate",
                "antispam_system",
                "greylisted",
                "mail_server_temporary_error",
                "forcible_disconnect",
                "mail_server_did_not_respond",
                "timeout_exceeded",
                "failed_smtp_connection",
                "mailbox_quota_exceeded",
                "exception_occurred",
                "possible_trap",
                "role_based",
                "global_suppression",
                "mailbox_not_found",
                "no_dns_entries",
                "failed_syntax_check",
                "possible_typo",
                "unroutable_ip_address",
                "leading_period_removed",
                "does_not_accept_mail",
                "alias_address",
                "role_based_catch_all",
                "disposable",
                "toxic",
                "accept_all",
                "gold"
              ],
              "enumTitles": [
                "Alternate address",
                "Anti-spam system blocked the check",
                "Greylisted, retry later",
                "Mail server temporary error",
                "Forcible disconnect",
                "Mail server did not respond",
                "Timeout exceeded",
                "Failed SMTP connection",
                "Mailbox quota exceeded",
                "Exception occurred",
                "Possible spam trap",
                "Role based address",
                "Global suppression list",
                "Mailbox not found",
                "No DNS entries",
                "Failed syntax check",
                "Possible typo",
                "Unroutable IP address",
                "Leading period removed",
                "Domain does not accept mail",
                "Alias address",
                "Role based on a catch-all domain",
                "Disposable address",
                "Toxic address",
                "Accept all domain",
                "Gold: highest quality"
              ]
            },
            "default": []
          },
          "excludeFreeEmail": {
            "title": "Drop free consumer mailboxes",
            "type": "boolean",
            "description": "Leave out addresses on free consumer providers such as the large webmail services, keeping only company addresses. Useful when the list is meant for B2B outreach. Validation only.",
            "default": false
          },
          "requireMxRecord": {
            "title": "Require a valid MX record",
            "type": "boolean",
            "description": "Only keep addresses whose domain publishes a mail exchanger record, which means the domain can receive mail at all. A quick way to drop parked and abandoned domains. Validation only.",
            "default": false
          },
          "region": {
            "title": "Regional endpoint",
            "enum": [
              "default",
              "us",
              "eu"
            ],
            "type": "string",
            "description": "Which of the provider's regional deployments to call. Pick the US or EU deployment when your account or your data protection policy requires the request to stay in that region. The default deployment is correct for most accounts.",
            "default": "default"
          },
          "batchSize": {
            "title": "Addresses per request",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "How many addresses to validate in one request against the provider's bulk endpoint. Larger batches mean far fewer requests for a big list. Validation only.",
            "default": 100
          },
          "requestsPerMinute": {
            "title": "Requests per minute",
            "minimum": 1,
            "maximum": 1200,
            "type": "integer",
            "description": "Pace the run so it stays under whatever rate your plan allows. Lower this if the provider starts returning rate limit responses; raise it to finish a long list sooner.",
            "default": 300
          },
          "skipNotFound": {
            "title": "Skip inputs with no result",
            "type": "boolean",
            "description": "Leave inputs the provider had nothing for out of the dataset. Off by default, because keeping the misses is what lets you see which inputs resolved and which did not. Misses are never charged for either way.",
            "default": false
          },
          "maxResults": {
            "title": "Maximum results",
            "minimum": 1,
            "maximum": 50000,
            "type": "integer",
            "description": "Stop after this many rows. This is the cap on both spend and run time.",
            "default": 100
          },
          "apiKey": {
            "title": "API key",
            "type": "string",
            "description": "Your own API key for the email validation API. This provider accepts the key only as a request parameter, so the actor keeps it out of every log line instead. Required for every lookup. Stored as a secret."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}