{
  "openapi": "3.0.1",
  "info": {
    "title": "Domain Lookup: WHOIS/RDAP, DNS, Email Setup, Tech Stack",
    "description": "Bulk domain lookup: registrar, created and expiry dates from RDAP/WHOIS, DNS records, email setup (mail provider, SPF, DMARC, DKIM), hosting (IP, ASN, CDN), homepage, TLS certificate and tech stack. One row per domain. Change alerts. Unregistered and failed domains are free.",
    "version": "0.1",
    "x-build-id": "yrueWZU8k2qL1Osl3"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/dottti~domain-intel/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-dottti-domain-intel",
        "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/dottti~domain-intel/runs": {
      "post": {
        "operationId": "runs-sync-dottti-domain-intel",
        "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/dottti~domain-intel/run-sync": {
      "post": {
        "operationId": "run-sync-dottti-domain-intel",
        "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": "Up to 10,000 domains per run. Plain names (example.com), URLs (https://www.example.com/page) and subdomains (shop.example.com) all work. Duplicates are removed. Use Bulk edit to paste a long list, one per line.",
            "items": {
              "type": "string"
            }
          },
          "modules": {
            "title": "What to check",
            "type": "array",
            "description": "Turn off what you do not need to make runs faster. Tech stack needs the homepage, so it also fills the website fields.",
            "items": {
              "type": "string",
              "enum": [
                "rdap",
                "dns",
                "mail",
                "hosting",
                "http",
                "tech"
              ],
              "enumTitles": [
                "Registration (RDAP or WHOIS): registrar, dates, status, nameservers",
                "DNS records: A, AAAA, NS, MX, TXT, CAA, SOA",
                "Email setup: mail provider, SPF, DMARC, DKIM, sending services",
                "Hosting: IP, ASN, provider, CDN, IP country",
                "Website: status, redirects, title, description, server, TLS certificate, social links",
                "Tech stack: CMS, ecommerce, analytics, frameworks and 7,000+ technologies"
              ]
            },
            "default": [
              "rdap",
              "dns",
              "mail",
              "hosting",
              "http",
              "tech"
            ]
          },
          "onlyChanged": {
            "title": "Only changed domains (alerts)",
            "type": "boolean",
            "description": "For scheduled runs. The first run saves every domain and returns all of them. Later runs return only domains whose registrar, expiry date, status, nameservers, IPs, MX, SPF, DMARC, hosting, homepage, certificate or technologies changed, plus domains that enter the expiry window. Unchanged domains are not returned and not charged.",
            "default": false
          },
          "stateName": {
            "title": "Watchlist name",
            "type": "string",
            "description": "Name of the saved state for alert mode. Use a different name for each list you watch. The state lives in the key-value store 'domain-intel-state' of your account.",
            "default": "default"
          },
          "expiryAlertDays": {
            "title": "Expiry alert window (days)",
            "minimum": 1,
            "maximum": 365,
            "type": "integer",
            "description": "Sets expiringSoon to true when the domain expires within this many days. In alert mode a domain is returned once when it enters this window.",
            "default": 30
          },
          "followRegistrarRdap": {
            "title": "Ask the registrar's RDAP for the owner organisation",
            "type": "boolean",
            "description": "For .com and .net the registry has no owner data. This asks the registrar's RDAP server too, and keeps the organisation and country when they are public. Personal names, emails and phones are never returned. Adds one request per domain.",
            "default": false
          },
          "dkimSelectors": {
            "title": "DKIM selectors to check",
            "type": "array",
            "description": "DKIM keys can only be found by name. These common selectors are tried (Google, Microsoft 365 and generic ones). Add your own if you know them. Max 20.",
            "default": [
              "google",
              "selector1",
              "selector2",
              "default",
              "k1",
              "s1",
              "s2",
              "dkim",
              "mail"
            ],
            "items": {
              "type": "string"
            }
          },
          "includeSocialLinks": {
            "title": "Social links from the homepage",
            "type": "boolean",
            "description": "Company profiles linked from the homepage: LinkedIn company page, X, Facebook, Instagram, YouTube, TikTok, GitHub, Snapchat, WhatsApp, Telegram. Personal LinkedIn profiles are skipped.",
            "default": true
          },
          "maxConcurrency": {
            "title": "Domains in parallel",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "How many domains are checked at the same time. Registries are paced separately, so a high value cannot flood them.",
            "default": 10
          },
          "requestTimeoutSecs": {
            "title": "Request timeout (seconds)",
            "minimum": 5,
            "maximum": 60,
            "type": "integer",
            "description": "Maximum wait for one request (homepage, RDAP, WHOIS).",
            "default": 20
          },
          "proxyConfiguration": {
            "title": "Proxy for the homepage fetch",
            "type": "object",
            "description": "Optional. RDAP, WHOIS and DNS never need a proxy. Leave empty to use the automatic ladder below."
          },
          "autoProxyFallback": {
            "title": "Retry blocked homepages through Apify Proxy",
            "type": "boolean",
            "description": "When a homepage answers with a bot check or 403/429, try again through a datacenter proxy.",
            "default": true
          },
          "allowResidentialFallback": {
            "title": "Then try residential proxy",
            "type": "boolean",
            "description": "If the datacenter proxy is blocked too, try one residential request. Platform usage is included in the price.",
            "default": true
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}