{
  "openapi": "3.0.1",
  "info": {
    "title": "Bulk Domain Lookup: DNS, WHOIS, SPF, DMARC & SSL",
    "description": "Bulk DNS and WHOIS lookup for any list of domains: A, MX, NS, TXT records, registrar and expiry date, email provider (Google Workspace, Microsoft 365, ...), plus SPF, DMARC, DKIM and SSL checks with an A-F grade and fixes. No API key.",
    "version": "0.2",
    "x-build-id": "vD1laDtILPp68Czef"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/rod_analytics~domain-security-audit/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-rod_analytics-domain-security-audit",
        "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/rod_analytics~domain-security-audit/runs": {
      "post": {
        "operationId": "runs-sync-rod_analytics-domain-security-audit",
        "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/rod_analytics~domain-security-audit/run-sync": {
      "post": {
        "operationId": "run-sync-rod_analytics-domain-security-audit",
        "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": {
          "domains": {
            "title": "Domains",
            "type": "array",
            "description": "Domains to look up, one per line (commas and spaces also separate entries). Bare domains (example.com), subdomains (mail.example.com), URLs (https://www.example.com/page), email addresses (jane@example.com) and IDN names (münchen.de) are accepted. A leading www. is removed so email checks run on the mail domain. Invalid entries are listed in the results with an error and are not charged.",
            "items": {
              "type": "string"
            }
          },
          "dkimSelectors": {
            "title": "Extra DKIM selectors",
            "type": "array",
            "description": "DKIM keys can only be found if you know the selector. These common selectors are always checked: google, selector1, selector2, default, k1, s1, mail, dkim. Add your own here, for example the one in the DKIM-Signature header (s=) of an email you received.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "checks": {
            "title": "Checks to run",
            "type": "array",
            "description": "Leave everything selected for a full audit. Switch off checks you do not need to make runs faster. Only selected checks affect the grade.",
            "items": {
              "type": "string",
              "enum": [
                "dns",
                "spf",
                "dmarc",
                "dkim",
                "dnssec",
                "mtaSts",
                "bimi",
                "ssl",
                "headers",
                "redirect"
              ],
              "enumTitles": [
                "DNS records (A, AAAA, MX, NS, TXT, CAA)",
                "SPF",
                "DMARC",
                "DKIM (common + your selectors)",
                "DNSSEC",
                "MTA-STS and TLS-RPT",
                "BIMI",
                "SSL/TLS certificate",
                "HTTP security headers",
                "HTTP to HTTPS redirect"
              ]
            },
            "default": [
              "dns",
              "spf",
              "dmarc",
              "dkim",
              "dnssec",
              "mtaSts",
              "bimi",
              "ssl",
              "headers",
              "redirect"
            ]
          },
          "includeWhois": {
            "title": "Include WHOIS (registrar, created and expiry dates)",
            "type": "boolean",
            "description": "Adds registrar, creation date, expiry date, days to expiry and domain age for the registrable domain. Uses the registry's RDAP API, or port-43 WHOIS for TLDs without RDAP (.io, .co, .de, .it, ...). Some registries (.de, .ch, .es) publish little or no data, then the whois field explains why. Lookups are throttled per registry and cached per run, so big lists of one TLD take longer. Free, no extra charge.",
            "default": true
          },
          "maxWhoisLookups": {
            "title": "Max WHOIS lookups per run",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Safety cap for WHOIS lookups in one run. Subdomains of the same domain share one lookup. Domains past the cap are still audited, only without WHOIS data. Registries rate limit WHOIS, so keep this modest for very large lists.",
            "default": 1000
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "How many domains to audit in parallel.",
            "default": 10
          },
          "timeoutSecs": {
            "title": "Network timeout (seconds)",
            "minimum": 3,
            "maximum": 60,
            "type": "integer",
            "description": "Maximum wait for each TLS or HTTP connection. A whole domain audit is capped at 45 seconds.",
            "default": 10
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}