{
  "openapi": "3.0.1",
  "info": {
    "title": "Bulk Email Validation API | $0.90/1K | MX + Disposable",
    "description": "Validate email addresses in bulk. Syntax check, MX/DNS lookup, disposable and role-account detection, typo suggestions and a deliverability score. No SMTP probing. $0.90 per 1,000 emails.",
    "version": "0.1",
    "x-build-id": "VpxG8myQIteGj1qSt"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/extractkit~bulk-email-validation-api/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-extractkit-bulk-email-validation-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/extractkit~bulk-email-validation-api/runs": {
      "post": {
        "operationId": "runs-sync-extractkit-bulk-email-validation-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/extractkit~bulk-email-validation-api/run-sync": {
      "post": {
        "operationId": "run-sync-extractkit-bulk-email-validation-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": {
          "emails": {
            "title": "Email addresses",
            "type": "array",
            "description": "Addresses to verify, one per line. Accepts a bare address (ada@example.com) or a pasted contact (Ada Lovelace <ada@example.com>). For lists larger than a few hundred, use the list URL field below instead.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "emailListUrl": {
            "title": "Email list URL (bulk)",
            "type": "string",
            "description": "Public link to a .txt or .csv file of addresses — one per line, or a CSV with an 'email' column. Use this for bulk lists instead of pasting thousands of addresses above. Google Sheets: File → Share → Publish to web → CSV."
          },
          "csvColumn": {
            "title": "CSV column name",
            "type": "string",
            "description": "Which column holds the addresses, when the list URL points at a CSV with a header row. Ignored for plain text files.",
            "default": "email"
          },
          "deduplicate": {
            "title": "Remove duplicates",
            "type": "boolean",
            "description": "Verify each unique mailbox once. Understands provider rules — on Gmail, a.da+news@gmail.com and ada@gmail.com are the same mailbox. Every input row still appears in the output, so results line up with your source file.",
            "default": true
          },
          "flagRoleAccounts": {
            "title": "Flag role accounts as risky",
            "type": "boolean",
            "description": "Mark shared addresses (info@, support@, sales@) as 'risky' rather than 'deliverable'. They usually deliver fine, but convert poorly and raise spam complaints. Turn off to treat them as normal.",
            "default": true
          },
          "smtpCheck": {
            "title": "Attempt SMTP mailbox check (advanced)",
            "type": "boolean",
            "description": "Try to confirm the individual mailbox by connecting to the mail server. IMPORTANT: outbound port 25 is blocked on Apify (and most cloud platforms), so this usually times out; the address then keeps its DNS-level verdict and the 'smtp' field records why the probe failed. It also cannot prove anything for Gmail or Outlook, which accept every address by design. Leave off unless you know your case needs it — DNS-level results are unaffected either way.",
            "default": false
          },
          "smtpTimeoutMs": {
            "title": "SMTP timeout (ms)",
            "minimum": 1000,
            "maximum": 30000,
            "type": "integer",
            "description": "How long to wait for a mail server before giving up and returning 'unknown'. Only used when the SMTP check is enabled.",
            "default": 8000
          },
          "concurrency": {
            "title": "Concurrency",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "How many addresses to verify in parallel. DNS is the bottleneck; the default suits almost every list.",
            "default": 20
          },
          "dnsServers": {
            "title": "Custom DNS resolvers",
            "type": "array",
            "description": "Optional. Resolver IPs such as 1.1.1.1 or 8.8.8.8. Leave empty to use the platform default, which is correct for almost all runs.",
            "default": [],
            "items": {
              "type": "string"
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}