{
  "openapi": "3.0.1",
  "info": {
    "title": "WHOIS & RDAP Domain Expiry Monitor",
    "description": "Bulk WHOIS/RDAP lookup and domain expiry monitor for 1,200+ TLDs. Get registrar, owner organisation, creation and expiry date, days left, EPP status, transfer lock, nameservers, DNS provider and DNSSEC from official registries. Alerts on expiring, dropped or changed domains; checks availability.",
    "version": "0.1",
    "x-build-id": "walL2P8Ag7WARAYjU"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/codeclouds~whois-rdap-domain-expiry-monitor/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-codeclouds-whois-rdap-domain-expiry-monitor",
        "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/codeclouds~whois-rdap-domain-expiry-monitor/runs": {
      "post": {
        "operationId": "runs-sync-codeclouds-whois-rdap-domain-expiry-monitor",
        "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/codeclouds~whois-rdap-domain-expiry-monitor/run-sync": {
      "post": {
        "operationId": "run-sync-codeclouds-whois-rdap-domain-expiry-monitor",
        "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": "One domain per line (comma- or space-separated lists also work). Accepts bare domains (example.com), subdomains and URLs (https://www.bbc.co.uk/news is checked as bbc.co.uk), e-mail addresses (info@acme.io) and internationalized domains (bücher.de). Duplicates are checked once. When you use the brand-name sweep below, clear this list (the example domains are ignored automatically then).",
            "default": [
              "google.com",
              "wikipedia.org",
              "bbc.co.uk",
              "claude.ai",
              "sidn.nl"
            ],
            "items": {
              "type": "string"
            }
          },
          "names": {
            "title": "Brand names to check across TLDs (optional)",
            "type": "array",
            "description": "Domain availability sweep: each name is combined with every TLD in \"TLDs to check\" (acme → acme.com, acme.io, acme.ai, ...). Combine with Output = Available domains only to get just the free ones.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "tlds": {
            "title": "TLDs to check for brand names",
            "type": "array",
            "description": "TLDs used for the brand-name sweep, without the dot. Only used when \"Brand names\" is filled.",
            "default": [
              "com",
              "net",
              "org",
              "io",
              "ai",
              "co",
              "app",
              "dev"
            ],
            "items": {
              "type": "string"
            }
          },
          "expiryWarningDays": {
            "title": "Expiry warning window (days)",
            "minimum": 1,
            "maximum": 3650,
            "type": "integer",
            "description": "A registered domain that expires within this many days gets expiryStatus = expiring_soon and counts as an alert.",
            "default": 30
          },
          "outputFilter": {
            "title": "Output",
            "enum": [
              "all",
              "alerts_only",
              "available_only"
            ],
            "type": "string",
            "description": "all: one result per domain. alerts_only: only domains that are expired, expiring soon, in auto-renew grace, pending delete or transfer, on hold, or whose registrar, owner, nameservers, status or registration changed since the previous run (cheapest for scheduled monitoring; you pay only for delivered results). available_only: only unregistered domains (for availability sweeps). Errors, unsupported TLDs and invalid entries are always included, free. The full overview is always in the SUMMARY record.",
            "default": "all"
          },
          "trackChanges": {
            "title": "Track changes between runs",
            "type": "boolean",
            "description": "Stores a snapshot per domain so the next run can report changes (renewed, registrar_changed, owner_changed, nameservers_changed, status_changed, transfer_lock_removed, dropped, newly_taken). The first run creates the baseline (changes = null). Most useful on a schedule; a single ad-hoc run only creates the baseline.",
            "default": true
          },
          "registrarLookup": {
            "title": "Look up the owner at the registrar",
            "type": "boolean",
            "description": "For registries that keep owner data at the registrar (.com, .net and others), also query the registrar's RDAP server to get the registrant organisation and country (e.g. google.com → Google LLC, US) and detect privacy/proxy services. Adds one request per domain; failures never fail the domain.",
            "default": true
          },
          "whoisFallback": {
            "title": "Use WHOIS when RDAP is missing or down",
            "type": "boolean",
            "description": "Many ccTLDs (.de, .eu, .io, .be, .co, .it, .se, .dk, .jp and more) have no RDAP service. When enabled, the registry's official port-43 WHOIS is queried instead, also when an RDAP server is unreachable. Data depth then depends on the registry (e.g. .de and .eu publish no expiry date). .ch, .li and .es refuse automated WHOIS and are reported as unsupported_tld.",
            "default": true
          },
          "maxDomains": {
            "title": "Max domains per run",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Safety cap on the number of domains checked in one run (after combining domains and brand-name sweep).",
            "default": 1000
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}