{
  "openapi": "3.0.1",
  "info": {
    "title": "WHOIS API - Domain, DNS, IP, Subdomain, SSL Lookup",
    "description": "Look up WHOIS registration and its history, live DNS records, IP geolocation and netblocks, subdomains, reverse IP, MX, NS and WHOIS, domain availability and reputation, website contacts and category, email verification and SSL certificates. Bring your own key.",
    "version": "0.1",
    "x-build-id": "80yWRbyvmqvJC3REW"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/nabeelbaghoor~whois-dns-ip-lookup-api/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-nabeelbaghoor-whois-dns-ip-lookup-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~whois-dns-ip-lookup-api/runs": {
      "post": {
        "operationId": "runs-sync-nabeelbaghoor-whois-dns-ip-lookup-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~whois-dns-ip-lookup-api/run-sync": {
      "post": {
        "operationId": "run-sync-nabeelbaghoor-whois-dns-ip-lookup-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 this run does",
            "enum": [
              "whois",
              "whoisHistory",
              "reverseWhois",
              "dns",
              "subdomains",
              "reverseIp",
              "reverseMx",
              "reverseNs",
              "ipGeolocation",
              "ipNetblocks",
              "domainAvailability",
              "domainReputation",
              "websiteContacts",
              "websiteCategorization",
              "emailVerification",
              "sslCertificates"
            ],
            "type": "string",
            "description": "A run answers one question with one of the provider's services. Each service has its own credit cost on your account, so a run reads one rather than all of them. Fields belonging to another mode are ignored rather than causing an error.",
            "default": "whois"
          },
          "apiKey": {
            "title": "API key",
            "type": "string",
            "description": "Your own account's API key, from the products page of your provider account. Bring your own key: nothing is shared between runs and the key is never written to the dataset or the log. If your account has an IP allowlist turned on, this run's address has to be on it, because the provider refuses a key from an unlisted address exactly as if the key were wrong."
          },
          "terms": {
            "title": "What to look up",
            "type": "array",
            "description": "One per line. A domain name for WHOIS, WHOIS history, DNS, subdomains, availability, reputation, contacts, categorisation and certificates. An IP address for reverse IP, geolocation and netblocks. A mail server host name for reverse MX and a name server host name for reverse NS. An email address for verification. The WHOIS service also accepts an IP address or an email address, and netblocks also accepts an organisation name or an autonomous system number.",
            "items": {
              "type": "string"
            }
          },
          "dnsTypes": {
            "title": "DNS record types",
            "type": "array",
            "description": "Which DNS record types to read, used by DNS mode. Leave empty for every type the provider holds. Subdomains have to be queried on their own, so read _dmarc.example.com rather than expecting a DMARC record under example.com.",
            "items": {
              "type": "string",
              "enum": [
                "A",
                "AAAA",
                "CNAME",
                "MX",
                "NS",
                "SOA",
                "TXT",
                "SRV",
                "CAA",
                "PTR",
                "DNSKEY",
                "DS",
                "NAPTR",
                "SPF"
              ]
            }
          },
          "whoisProtocol": {
            "title": "WHOIS protocol",
            "enum": [
              "auto",
              "rdap",
              "whois"
            ],
            "type": "string",
            "description": "Which protocol to read a registration over, used by WHOIS mode. Auto picks whichever answers better for the top level domain and is right for almost every run. RDAP is the structured successor to WHOIS but is not supported for every top level domain.",
            "default": "auto"
          },
          "preferFresh": {
            "title": "Prefer a fresh WHOIS record",
            "type": "boolean",
            "description": "Ask the provider for a newer record than the one it has cached. Slower, and worth it when you are watching a registration change rather than reading it once.",
            "default": false
          },
          "ignoreRawText": {
            "title": "Drop the raw WHOIS text",
            "type": "boolean",
            "description": "Strip the unparsed registry text out of each WHOIS row. The parsed fields are unaffected, and rows get much smaller.",
            "default": false
          },
          "purchaseHistory": {
            "title": "Buy the WHOIS history, not just the count",
            "type": "boolean",
            "description": "WHOIS history mode defaults to preview, which reports how many historical records exist for one credit and lists none of them. Turn this on to store the records themselves, which the provider charges 50 credits for per domain.",
            "default": false
          },
          "skipLiveWhois": {
            "title": "Skip the live WHOIS lookup",
            "type": "boolean",
            "description": "WHOIS history mode normally adds today's record to the history, which needs a live query and slows the run. Turning this on keeps the run fast, at the cost of the most recent record when nothing is cached from the last day.",
            "default": false
          },
          "sinceDate": {
            "title": "Changes discovered since",
            "type": "string",
            "description": "Only historical records the provider discovered on or after this date, written as YYYY-MM-DD. This is the field to filter on when watching for daily changes, because it uses the date the change was detected rather than the date it happened. For example 2026-01-01."
          },
          "reverseWhoisInclude": {
            "title": "Registration must contain",
            "type": "array",
            "description": "Reverse WHOIS mode only. Terms that must all appear somewhere in a domain's WHOIS details, one per line, matched without regard to case. Registrant name, organisation, email address, street, city and country all count. The provider allows at most four.",
            "items": {
              "type": "string"
            }
          },
          "reverseWhoisExclude": {
            "title": "Registration must not contain",
            "type": "array",
            "description": "Reverse WHOIS mode only. Terms that must appear in none of a domain's WHOIS details, one per line. The provider allows at most four.",
            "items": {
              "type": "string"
            }
          },
          "searchHistoricWhois": {
            "title": "Search historical registrations too",
            "type": "boolean",
            "description": "Reverse WHOIS mode only. Search past registrations as well as current ones, which finds domains an owner has since transferred or let lapse.",
            "default": false
          },
          "purchaseReverseWhois": {
            "title": "Buy the domain list, not just the count",
            "type": "boolean",
            "description": "Reverse WHOIS mode defaults to preview, which reports how many domains match without listing them and costs no credits. Turn this on to store the list itself.",
            "default": false
          },
          "createdDateFrom": {
            "title": "Registered on or after",
            "type": "string",
            "description": "Only domains created on or after this date, written as YYYY-MM-DD. Used by WHOIS history and reverse WHOIS. For example 2024-01-01."
          },
          "createdDateTo": {
            "title": "Registered on or before",
            "type": "string",
            "description": "Only domains created on or before this date, written as YYYY-MM-DD. For example 2026-01-01."
          },
          "updatedDateFrom": {
            "title": "Updated on or after",
            "type": "string",
            "description": "Only domains whose registration was updated on or after this date, written as YYYY-MM-DD. For example 2025-01-01."
          },
          "updatedDateTo": {
            "title": "Updated on or before",
            "type": "string",
            "description": "Only domains whose registration was updated on or before this date, written as YYYY-MM-DD. For example 2026-01-01."
          },
          "expiredDateFrom": {
            "title": "Expiring on or after",
            "type": "string",
            "description": "Only domains expiring on or after this date, written as YYYY-MM-DD. Pairing this with an expiry cutoff is how you build a list of domains about to lapse. For example 2026-01-01."
          },
          "expiredDateTo": {
            "title": "Expiring on or before",
            "type": "string",
            "description": "Only domains expiring on or before this date, written as YYYY-MM-DD. For example 2026-12-31."
          },
          "includeDnsChecks": {
            "title": "Check each discovered domain is live",
            "type": "boolean",
            "description": "Reverse IP, MX and NS modes only. Adds two DNS checks per result: whether the record came from a wildcard, and whether the domain still resolves. Slower, and the provider charges 7 credits per request instead of 5.",
            "default": false
          },
          "includeRelatedDomains": {
            "title": "Include domains on the same IP",
            "type": "boolean",
            "description": "IP geolocation mode only. Adds up to five domains hosted on the address. Use reverse IP mode instead when you want all of them rather than a sample.",
            "default": false
          },
          "netblockMask": {
            "title": "CIDR mask",
            "minimum": 0,
            "maximum": 128,
            "type": "integer",
            "description": "IP netblocks mode only. Look up the range containing an address at this prefix length, 0 to 32 for IPv4 and up to 128 for IPv6. Leave empty for the most specific range the provider holds."
          },
          "accurateAvailability": {
            "title": "Check availability against WHOIS too",
            "type": "boolean",
            "description": "Domain availability mode only. Checks the registry as well as DNS, which is slower and more accurate. A domain can resolve without being registered, and can be registered without resolving, so this is the setting that matters when the answer decides a purchase.",
            "default": false
          },
          "fullReputationScan": {
            "title": "Run the full reputation scan",
            "type": "boolean",
            "description": "Domain reputation mode only. Runs every test rather than the four in the fast scan, which are the domain status, malware databases, certificate validity and the WHOIS record. The provider charges 3 credits instead of 1.",
            "default": false
          },
          "freshWebsiteContacts": {
            "title": "Crawl the website again",
            "type": "boolean",
            "description": "Website contacts mode only. Fetches the contacts from the live site rather than from the provider's cache. Slower, and the right choice when a site has recently changed.",
            "default": false
          },
          "minConfidence": {
            "title": "Minimum category confidence",
            "minimum": 0,
            "maximum": 1,
            "type": "number",
            "description": "Website categorisation mode only. Drop predicted categories below this confidence, between 0 and 1. The provider's own default is 0.55; raising it returns fewer categories and fewer false positives."
          },
          "checkDns": {
            "title": "Check the email domain has mail records",
            "type": "boolean",
            "description": "Email verification mode only. Confirms the part after the at sign is a real mail domain.",
            "default": true
          },
          "checkSmtp": {
            "title": "Check the mailbox over SMTP",
            "type": "boolean",
            "description": "Email verification mode only. Opens an SMTP conversation with the mail server to see whether the mailbox exists. This is the slowest check and the one that decides deliverability, and some providers refuse to answer it at all.",
            "default": true
          },
          "checkCatchAll": {
            "title": "Check for an accept-all domain",
            "type": "boolean",
            "description": "Email verification mode only. Detects a domain that accepts mail to every address. Worth keeping on, because on an accept-all domain a passing mailbox check is not evidence the mailbox exists.",
            "default": true
          },
          "checkFreeProvider": {
            "title": "Check for a free mail provider",
            "type": "boolean",
            "description": "Email verification mode only. Flags addresses at free consumer providers rather than a company's own domain.",
            "default": true
          },
          "checkDisposable": {
            "title": "Check for a disposable address",
            "type": "boolean",
            "description": "Email verification mode only. Flags throwaway addresses from temporary mail services.",
            "default": true
          },
          "includeCertificateChain": {
            "title": "Include the whole certificate chain",
            "type": "boolean",
            "description": "SSL certificates mode only. Returns every certificate from the end-user one up to the root, rather than only the one presented for the domain.",
            "default": false
          },
          "freshCertificates": {
            "title": "Fetch certificates live",
            "type": "boolean",
            "description": "SSL certificates mode only. Reads the certificate from the host now rather than from the provider's cache.",
            "default": false
          },
          "maxResults": {
            "title": "Maximum rows",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "The most rows this run may store, and so the most it can charge for. A reverse IP or subdomain lookup on a large host can return tens of thousands of names, so this is the cap that keeps a run predictable.",
            "default": 100
          },
          "requestsPerMinute": {
            "title": "Requests per minute",
            "minimum": 1,
            "maximum": 600,
            "type": "integer",
            "description": "How fast this run calls the provider. Several of these services allow 30 requests a second, so the default is well inside that; lower it if your plan is throttled more tightly.",
            "default": 120
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}