{
  "openapi": "3.0.1",
  "info": {
    "title": "Email Verification API - Deliverability and Spam Traps",
    "description": "Verify email addresses at the mailbox rather than by syntax: does it exist, is it a role or catch-all address, is it disposable, is it a spam trap, is it on a block list, has it appeared in a breach. Returns a trust score and a send recommendation. Pay per result.",
    "version": "0.1",
    "x-build-id": "dcra0IfI7bC1ZaoxI"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/nabeelbaghoor~email-verification-deliverability-api/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-nabeelbaghoor-email-verification-deliverability-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-deliverability-api/runs": {
      "post": {
        "operationId": "runs-sync-nabeelbaghoor-email-verification-deliverability-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-deliverability-api/run-sync": {
      "post": {
        "operationId": "run-sync-nabeelbaghoor-email-verification-deliverability-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 check",
            "enum": [
              "verify",
              "assess",
              "blocklists",
              "whois"
            ],
            "type": "string",
            "description": "Which product to call. These live on three separate services behind one licence, so the mode selects the service as well as the check. Verification is the one most runs want.",
            "default": "verify"
          },
          "queries": {
            "title": "What to check",
            "type": "array",
            "description": "Email addresses to check, one per line. In WHOIS mode give domain names instead; a whole email address is accepted there too and reduced to its domain, since a list of addresses is usually what you have. Duplicates are checked once.",
            "items": {
              "type": "string"
            }
          },
          "assessIpAddress": {
            "title": "End user IP address",
            "type": "string",
            "description": "In assess mode, the IP address the signup came from, checked for data centre and Tor exit node origin. Note that this and the two name fields are positional: leaving this empty means the names below are ignored as well, because the provider reads them by position."
          },
          "assessFirstName": {
            "title": "Expected first name",
            "type": "string",
            "description": "In assess mode, a first name to check the address against. Only used when an IP address is also given, because the provider reads these by position."
          },
          "assessLastName": {
            "title": "Expected last name",
            "type": "string",
            "description": "In assess mode, a last name to check the address against. Only used when an IP address and a first name are also given, because the provider reads these by position."
          },
          "results": {
            "title": "Keep only these results",
            "type": "array",
            "description": "Only keep rows whose verification result is one of these. Ok means the mailbox exists, Bad means it does not, RetryLater means the receiving server would not answer right now, and Unverifiable means it cannot be determined at all. Leave empty to keep every result.",
            "items": {
              "type": "string",
              "enum": [
                "Ok",
                "Bad",
                "RetryLater",
                "Unverifiable"
              ],
              "enumTitles": [
                "Ok: the mailbox exists",
                "Bad: the mailbox does not exist",
                "RetryLater: the server would not answer, usually grey-listing",
                "Unverifiable: cannot be determined"
              ]
            },
            "default": []
          },
          "deliverableOnly": {
            "title": "Keep only deliverable addresses",
            "type": "boolean",
            "description": "Drop everything except addresses confirmed to exist. The one-tick way to turn a raw list into a sending list. Be aware this also drops the retry-later rows, which are usually good addresses behind a server that was being cautious.",
            "default": false
          },
          "sendRecommendations": {
            "title": "Keep only these send recommendations",
            "type": "array",
            "description": "Only keep rows the provider recommended this way. This is the provider's own verdict combining deliverability and risk, and it is what to route on if you do not want to build your own rule from the individual flags.",
            "items": {
              "type": "string",
              "enum": [
                "SafeToSend",
                "RiskyToSend",
                "DoNotSend"
              ],
              "enumTitles": [
                "Safe to send",
                "Risky to send",
                "Do not send"
              ]
            },
            "default": []
          },
          "minTrustScore": {
            "title": "Minimum trust score",
            "minimum": 0,
            "maximum": 10,
            "type": "number",
            "description": "Only keep rows scoring at or above this on the provider's trust scale, where higher is better. Leave at zero to keep every score.",
            "default": 0
          },
          "maxRiskScore": {
            "title": "Maximum risk score",
            "minimum": 0,
            "maximum": 10,
            "type": "number",
            "description": "Only keep rows whose overall risk score is at or below this, where higher is worse. The mirror of the trust score and a finer instrument than the send recommendation. Leave at zero to keep every score.",
            "default": 0
          },
          "excludeRole": {
            "title": "Drop role addresses",
            "type": "boolean",
            "description": "Leave out shared mailboxes such as info, sales, support and postmaster. These are real and deliverable but they belong to a function rather than a person, and sending marketing to them is a common source of complaints.",
            "default": false
          },
          "excludeFreeMail": {
            "title": "Drop free mail providers",
            "type": "boolean",
            "description": "Leave out addresses on free consumer mail providers, keeping only company domains. Useful when the list is meant to be a business one.",
            "default": false
          },
          "excludeDisposable": {
            "title": "Drop disposable addresses",
            "type": "boolean",
            "description": "Leave out throwaway domains, which are the usual signature of a signup that was never meant to be reachable.",
            "default": false
          },
          "excludeCatchAll": {
            "title": "Drop catch-all domains",
            "type": "boolean",
            "description": "Leave out addresses on domains that accept mail for every possible mailbox. A catch-all cannot be confirmed either way, so it is neither a pass nor a fail, and whether you keep them depends on how much bounce risk you can carry.",
            "default": false
          },
          "excludeSpamTraps": {
            "title": "Drop spam traps",
            "type": "boolean",
            "description": "Leave out addresses the provider identified as spam traps. Worth thinking about rather than skipping: a spam trap is an address that exists purely to catch senders who do not verify, and hitting one can affect your sending reputation far out of proportion to the single message.",
            "default": false
          },
          "excludeDarkWeb": {
            "title": "Drop addresses seen in breaches",
            "type": "boolean",
            "description": "Leave out addresses the provider has seen in breached data circulating online.",
            "default": false
          },
          "excludeGibberish": {
            "title": "Drop gibberish addresses",
            "type": "boolean",
            "description": "Leave out addresses whose local part or domain looks machine-generated rather than chosen by a person.",
            "default": false
          },
          "excludeBlockListed": {
            "title": "Drop block-listed addresses",
            "type": "boolean",
            "description": "In block list mode, leave out addresses that appear on at least one list.",
            "default": false
          },
          "reportQuota": {
            "title": "Report your provider balance",
            "type": "boolean",
            "description": "Log how much of your provider allowance is left before the run starts. Informational only: this check answers for any key at all, including a wrong one, so it can report a balance but it can never confirm that your credential works.",
            "default": false
          },
          "requestsPerMinute": {
            "title": "Requests per minute",
            "minimum": 1,
            "maximum": 3000,
            "type": "integer",
            "description": "Pace the run so it stays under whatever rate your plan allows. Mailbox verification is slower than most lookups because it actually connects to the receiving server, so a low rate here costs less time than it looks.",
            "default": 120
          },
          "skipNotFound": {
            "title": "Skip values with no result",
            "type": "boolean",
            "description": "Leave values the provider returned nothing for, and inputs refused before they were sent, out of the dataset. Off by default, because knowing which of your addresses were unusable is usually the point. Misses are never charged for either way.",
            "default": false
          },
          "maxResults": {
            "title": "Maximum results",
            "minimum": 1,
            "maximum": 100000,
            "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 license key for the email verification API, taken from your provider account. Note that this provider carries the key in the request URL rather than in a header, so nothing in this actor ever logs a request URL. 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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}