{
  "openapi": "3.1.0",
  "info": {
    "title": "DomainDNA API API",
    "version": "1.0.0",
    "summary": "Domain intelligence API: tech stack detection (CMS, e-commerce, frameworks, analytics, tag managers, CDNs, chat and more, each with evidence), MX email provider (Google Workspace, Microsoft 365, Proofpoint...), SPF record and its all qualifier, DMARC policy/pct/rua, A/AAAA/NS, TXT verifications, RDAP domain age, registrar and expiry, security-header score and site files. REST + MCP server.",
    "description": "Paid API keys from $19/month (Scout: 5,000 domain checks a month); free tier 25 domain checks a day per IP with no key. Buy: https://domaindna-api.cybermax-tools.workers.dev/buy/scout?s=lead · all plans: https://domaindna-api.cybermax-tools.workers.dev/docs#pricing\n\nPricing: free tier 25 domain checks/day per IP, no key. Paid API keys: Scout $19/month = 5,000 domain checks/month; Analyst $49/month = 15,000 domain checks/month; Platform $99/month = 40,000 domain checks/month; Pay as you go $5 = 1,000 domain checks (one-time pack); Scout yearly $190/year = 5,000 domain checks/month; Analyst yearly $490/year = 15,000 domain checks/month; Platform yearly $990/year = 40,000 domain checks/month. Get a key: https://domaindna-api.cybermax-tools.workers.dev/docs#pricing\n\nOne call per domain: the site's tech stack with the evidence for each technology (103+ fingerprints), its email provider, SPF and DMARC policy, domain age and registrar, security headers and robots/sitemap/llms.txt. For sales and marketing teams, security reviews, agencies and AI agents. 25 free domains a day, no key; plans from $5 (one-time pack) or $19/month.\n\nFree tier: Domains per call: /api/report 1, /api/email-security 5, /api/tech 3, /api/registration 10; 10 calls a minute per IP on the free tier. Free tier: 25 domains a day per IP, no key. Paid keys from $5 (one-time pack) or $19/month (see Get an API key). Each domain in a call counts as one check (duplicates in the same call count once). Failed calls are not counted. Answers are cached for 1 hour per domain and check (cached: true). Tech detection reads the homepage the way a browser would (first 300 KB); sites behind a bot wall come back with blocked: true and a partial list. No TLS certificate check (Workers cannot read certificates; the Apify tool has it). Registration dates come from the registry's own RDAP server; a few country TLDs publish none, and some registries (.org) rate-limit busy periods (registration: null with the reason in errors; retry later, and successful answers are cached). No key needed. Remote MCP server: https://domaindna-api.cybermax-tools.workers.dev/mcp",
    "contact": {
      "name": "CyberMax",
      "url": "https://cybermax-tools-cybermax.static.hf.space/"
    },
    "license": {
      "name": "Proprietary (free tier + paid API keys)",
      "identifier": "LicenseRef-CyberMax"
    },
    "x-pricing": {
      "api": "DomainDNA API",
      "currency": "USD",
      "free": {
        "price": 0,
        "callsPerDayPerIp": 25,
        "perMinutePerIp": 10,
        "key": "none needed"
      },
      "plans": [
        {
          "id": "scout",
          "name": "Scout",
          "price": 19,
          "billing": "per month",
          "calls": 5000,
          "per": "calendar month (UTC)",
          "perMinute": 30,
          "buy": "https://domaindna-api.cybermax-tools.workers.dev/buy/scout?s=openapi"
        },
        {
          "id": "analyst",
          "name": "Analyst",
          "price": 49,
          "billing": "per month",
          "calls": 15000,
          "per": "calendar month (UTC)",
          "perMinute": 60,
          "buy": "https://domaindna-api.cybermax-tools.workers.dev/buy/analyst?s=openapi"
        },
        {
          "id": "platform",
          "name": "Platform",
          "price": 99,
          "billing": "per month",
          "calls": 40000,
          "per": "calendar month (UTC)",
          "perMinute": 120,
          "buy": "https://domaindna-api.cybermax-tools.workers.dev/buy/platform?s=openapi"
        },
        {
          "id": "payg",
          "name": "Pay as you go",
          "price": 5,
          "billing": "one-time",
          "calls": 1000,
          "per": "until used",
          "perMinute": 30,
          "buy": "https://domaindna-api.cybermax-tools.workers.dev/buy/payg?s=openapi"
        },
        {
          "id": "scout-yearly",
          "name": "Scout yearly",
          "price": 190,
          "billing": "per year",
          "calls": 5000,
          "per": "calendar month (UTC)",
          "perMinute": 30,
          "buy": "https://domaindna-api.cybermax-tools.workers.dev/buy/scout-yearly?s=openapi"
        },
        {
          "id": "analyst-yearly",
          "name": "Analyst yearly",
          "price": 490,
          "billing": "per year",
          "calls": 15000,
          "per": "calendar month (UTC)",
          "perMinute": 60,
          "buy": "https://domaindna-api.cybermax-tools.workers.dev/buy/analyst-yearly?s=openapi"
        },
        {
          "id": "platform-yearly",
          "name": "Platform yearly",
          "price": 990,
          "billing": "per year",
          "calls": 40000,
          "per": "calendar month (UTC)",
          "perMinute": 120,
          "buy": "https://domaindna-api.cybermax-tools.workers.dev/buy/platform-yearly?s=openapi"
        }
      ],
      "unit": "domain checks",
      "howToUse": {
        "header": "x-api-key: YOUR_KEY",
        "alt": [
          "Authorization: Bearer YOUR_KEY",
          "?key=YOUR_KEY"
        ],
        "mcp": "send the key as Authorization: Bearer YOUR_KEY",
        "usage": "https://domaindna-api.cybermax-tools.workers.dev/key"
      },
      "manageKey": "https://domaindna-api.cybermax-tools.workers.dev/manage",
      "payments": "Stripe Checkout: card, Apple Pay, Google Pay, Link; sales tax/VAT handled by Stripe. Cancel any time at https://domaindna-api.cybermax-tools.workers.dev/manage."
    }
  },
  "servers": [
    {
      "url": "https://domaindna-api.cybermax-tools.workers.dev"
    }
  ],
  "paths": {
    "/api/report": {
      "get": {
        "tags": [
          "DomainDNA API"
        ],
        "summary": "Everything about one domain: tech stack, email security, DNS, registration, site files",
        "description": "For one domain, URL or email: exists, reachable, finalUrl, title/description/language, technologies [{name, category, evidence}], securityHeaders (6 headers + score), email { mxProvider, mx, spf { present, record, allQualifier, includes }, dmarc { present, policy, subdomainPolicy, pct, rua } }, dns { a, aaaa, ns }, verifications (TXT site verifications), registration { registrar, createdAt, updatedAt, expiresAt, ageDays, status }, files { robotsTxt, sitemapXml, llmsTxt, securityTxt } and a one-line summary.",
        "operationId": "domainReportGet",
        "parameters": [
          {
            "name": "domain",
            "in": "query",
            "required": false,
            "description": "A domain, URL or email. Subdomains are kept for the website and DNS checks; DMARC and RDAP use the registrable domain.",
            "schema": {
              "type": "string"
            },
            "example": "stripe.com"
          }
        ],
        "responses": {
          "200": {
            "description": "Results (same field names as the bulk version's dataset records) plus the free-tier limits.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                },
                "example": {
                  "check": "report",
                  "results": [
                    {
                      "input": "stripe.com",
                      "domain": "stripe.com",
                      "reachable": true,
                      "errors": [],
                      "dns": {
                        "a": [
                          "198.137.150.41",
                          "198.202.176.41"
                        ],
                        "aaaa": [],
                        "ns": [
                          "ns-1087.awsdns-07.org",
                          "ns-1882.awsdns-43.co.uk",
                          "ns-423.awsdns-52.com",
                          "ns-705.awsdns-24.net"
                        ]
                      },
                      "email": {
                        "mxProvider": "Google Workspace",
                        "mx": [
                          "aspmx.l.google.com",
                          "alt1.aspmx.l.google.com",
                          "alt2.aspmx.l.google.com",
                          "aspmx2.googlemail.com",
                          "aspmx3.googlemail.com"
                        ],
                        "spf": {
                          "present": true,
                          "record": "v=spf1 ip4:198.2.180.60/32 ip4:13.111.2.227/32 include:spf1.stripe.com include:greenhouse-outbound-mail.stripe.com include:_spf.qualtrics.com ~all",
                          "allQualifier": "softfail",
                          "includes": [
                            "spf1.stripe.com",
                            "greenhouse-outbound-mail.stripe.com",
                            "_spf.qualtrics.com"
                          ],
                          "multipleRecords": false
                        },
                        "dmarc": {
                          "present": true,
                          "record": "v=DMARC1; p=reject; pct=100; fo=1; rua=mailto:dmarc-reports@stripe.com; ruf=mailto:dmarc-forensics@stripe.com;",
                          "policy": "reject",
                          "subdomainPolicy": null,
                          "pct": 100,
                          "rua": true
                        }
                      },
                      "verifications": [
                        "apple",
                        "atlassian",
                        "canva",
                        "docker",
                        "facebook",
                        "google"
                      ],
                      "url": "https://stripe.com/",
                      "finalUrl": "https://stripe.com/",
                      "statusCode": 200,
                      "blocked": false,
                      "title": "Stripe | Financial Infrastructure to Grow Your Revenue",
                      "description": "Stripe is a financial services platform that helps all types of businesses accept payments, build flexible billing models, and manage money movement.",
                      "language": "en-US",
                      "technologies": [
                        {
                          "name": "Next.js",
                          "category": "JS framework",
                          "evidence": "html: /_next/static/"
                        }
                      ],
                      "securityHeaders": {
                        "strictTransportSecurity": true,
                        "contentSecurityPolicy": true,
                        "xFrameOptions": true,
                        "xContentTypeOptions": true,
                        "referrerPolicy": true,
                        "permissionsPolicy": false,
                        "score": "5/6"
                      },
                      "registration": {
                        "registrar": "SafeNames Ltd.",
                        "createdAt": "1995-09-12T04:00:00Z",
                        "updatedAt": "2025-10-01T01:39:51Z",
                        "expiresAt": "2027-09-11T04:00:00Z",
                        "ageDays": 11342,
                        "status": [
                          "client delete prohibited",
                          "client transfer prohibited",
                          "client update prohibited",
                          "server delete prohibited",
                          "server transfer prohibited",
                          "server update prohibited"
                        ]
                      },
                      "files": {
                        "robotsTxt": true,
                        "sitemapXml": false,
                        "llmsTxt": true,
                        "securityTxt": true
                      },
                      "exists": true,
                      "summary": "stripe.com: email on Google Workspace, DMARC p=reject, domain 31y old.",
                      "analyzedAt": "2026-10-01T07:47:30.978Z",
                      "cached": false
                    }
                  ],
                  "count": 1
                }
              }
            }
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Invalid or revoked API key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Free tier used up (25/day per IP) or rate/plan limit reached; the body has an upgrade link.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "504": {
            "description": "Took too long; ask for fewer items",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "DomainDNA API"
        ],
        "summary": "Everything about one domain: tech stack, email security, DNS, registration, site files",
        "description": "For one domain, URL or email: exists, reachable, finalUrl, title/description/language, technologies [{name, category, evidence}], securityHeaders (6 headers + score), email { mxProvider, mx, spf { present, record, allQualifier, includes }, dmarc { present, policy, subdomainPolicy, pct, rua } }, dns { a, aaaa, ns }, verifications (TXT site verifications), registration { registrar, createdAt, updatedAt, expiresAt, ageDays, status }, files { robotsTxt, sitemapXml, llmsTxt, securityTxt } and a one-line summary.",
        "operationId": "domainReportPost",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "domains": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "maxItems": 1
                  }
                },
                "required": [
                  "domains"
                ]
              },
              "example": {
                "domains": [
                  "stripe.com"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Results (same field names as the bulk version's dataset records) plus the free-tier limits.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                },
                "example": {
                  "check": "report",
                  "results": [
                    {
                      "input": "stripe.com",
                      "domain": "stripe.com",
                      "reachable": true,
                      "errors": [],
                      "dns": {
                        "a": [
                          "198.137.150.41",
                          "198.202.176.41"
                        ],
                        "aaaa": [],
                        "ns": [
                          "ns-1087.awsdns-07.org",
                          "ns-1882.awsdns-43.co.uk",
                          "ns-423.awsdns-52.com",
                          "ns-705.awsdns-24.net"
                        ]
                      },
                      "email": {
                        "mxProvider": "Google Workspace",
                        "mx": [
                          "aspmx.l.google.com",
                          "alt1.aspmx.l.google.com",
                          "alt2.aspmx.l.google.com",
                          "aspmx2.googlemail.com",
                          "aspmx3.googlemail.com"
                        ],
                        "spf": {
                          "present": true,
                          "record": "v=spf1 ip4:198.2.180.60/32 ip4:13.111.2.227/32 include:spf1.stripe.com include:greenhouse-outbound-mail.stripe.com include:_spf.qualtrics.com ~all",
                          "allQualifier": "softfail",
                          "includes": [
                            "spf1.stripe.com",
                            "greenhouse-outbound-mail.stripe.com",
                            "_spf.qualtrics.com"
                          ],
                          "multipleRecords": false
                        },
                        "dmarc": {
                          "present": true,
                          "record": "v=DMARC1; p=reject; pct=100; fo=1; rua=mailto:dmarc-reports@stripe.com; ruf=mailto:dmarc-forensics@stripe.com;",
                          "policy": "reject",
                          "subdomainPolicy": null,
                          "pct": 100,
                          "rua": true
                        }
                      },
                      "verifications": [
                        "apple",
                        "atlassian",
                        "canva",
                        "docker",
                        "facebook",
                        "google"
                      ],
                      "url": "https://stripe.com/",
                      "finalUrl": "https://stripe.com/",
                      "statusCode": 200,
                      "blocked": false,
                      "title": "Stripe | Financial Infrastructure to Grow Your Revenue",
                      "description": "Stripe is a financial services platform that helps all types of businesses accept payments, build flexible billing models, and manage money movement.",
                      "language": "en-US",
                      "technologies": [
                        {
                          "name": "Next.js",
                          "category": "JS framework",
                          "evidence": "html: /_next/static/"
                        }
                      ],
                      "securityHeaders": {
                        "strictTransportSecurity": true,
                        "contentSecurityPolicy": true,
                        "xFrameOptions": true,
                        "xContentTypeOptions": true,
                        "referrerPolicy": true,
                        "permissionsPolicy": false,
                        "score": "5/6"
                      },
                      "registration": {
                        "registrar": "SafeNames Ltd.",
                        "createdAt": "1995-09-12T04:00:00Z",
                        "updatedAt": "2025-10-01T01:39:51Z",
                        "expiresAt": "2027-09-11T04:00:00Z",
                        "ageDays": 11342,
                        "status": [
                          "client delete prohibited",
                          "client transfer prohibited",
                          "client update prohibited",
                          "server delete prohibited",
                          "server transfer prohibited",
                          "server update prohibited"
                        ]
                      },
                      "files": {
                        "robotsTxt": true,
                        "sitemapXml": false,
                        "llmsTxt": true,
                        "securityTxt": true
                      },
                      "exists": true,
                      "summary": "stripe.com: email on Google Workspace, DMARC p=reject, domain 31y old.",
                      "analyzedAt": "2026-10-01T07:47:30.978Z",
                      "cached": false
                    }
                  ],
                  "count": 1
                }
              }
            }
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Invalid or revoked API key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Free tier used up (25/day per IP) or rate/plan limit reached; the body has an upgrade link.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "504": {
            "description": "Took too long; ask for fewer items",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/email-security": {
      "get": {
        "tags": [
          "DomainDNA API"
        ],
        "summary": "Email provider, SPF and DMARC for up to 5 domains",
        "description": "Per domain: email.mxProvider (Google Workspace, Microsoft 365, Proofpoint, Mimecast, Zoho...), mx hosts, spf (record, allQualifier fail/softfail/neutral/pass, includes), dmarc (policy none/quarantine/reject, subdomain policy, pct, rua), dns A/AAAA/NS and TXT verifications, from public DNS over HTTPS.",
        "operationId": "emailSecurityGet",
        "parameters": [
          {
            "name": "domain",
            "in": "query",
            "required": false,
            "description": "A domain, URL or email, or up to 5 separated by commas. Subdomains are kept for the website and DNS checks; DMARC and RDAP use the registrable domain.",
            "schema": {
              "type": "string"
            },
            "example": "stripe.com,notion.so"
          }
        ],
        "responses": {
          "200": {
            "description": "Results (same field names as the bulk version's dataset records) plus the free-tier limits.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Invalid or revoked API key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Free tier used up (25/day per IP) or rate/plan limit reached; the body has an upgrade link.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "504": {
            "description": "Took too long; ask for fewer items",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "DomainDNA API"
        ],
        "summary": "Email provider, SPF and DMARC for up to 5 domains",
        "description": "Per domain: email.mxProvider (Google Workspace, Microsoft 365, Proofpoint, Mimecast, Zoho...), mx hosts, spf (record, allQualifier fail/softfail/neutral/pass, includes), dmarc (policy none/quarantine/reject, subdomain policy, pct, rua), dns A/AAAA/NS and TXT verifications, from public DNS over HTTPS.",
        "operationId": "emailSecurityPost",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "domains": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "maxItems": 5
                  }
                },
                "required": [
                  "domains"
                ]
              },
              "example": {
                "domains": [
                  "stripe.com",
                  "notion.so"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Results (same field names as the bulk version's dataset records) plus the free-tier limits.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Invalid or revoked API key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Free tier used up (25/day per IP) or rate/plan limit reached; the body has an upgrade link.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "504": {
            "description": "Took too long; ask for fewer items",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/tech": {
      "get": {
        "tags": [
          "DomainDNA API"
        ],
        "summary": "Tech stack of up to 3 websites, with evidence",
        "description": "Per domain: technologies [{name, category, evidence}] from 103+ fingerprints (meta generator, headers, cookies, script URLs, page HTML), securityHeaders, title, description, language, final URL, status code and a blocked flag for bot walls.",
        "operationId": "techStackGet",
        "parameters": [
          {
            "name": "domain",
            "in": "query",
            "required": false,
            "description": "A domain, URL or email, or up to 3 separated by commas. Subdomains are kept for the website and DNS checks; DMARC and RDAP use the registrable domain.",
            "schema": {
              "type": "string"
            },
            "example": "stripe.com,notion.so"
          }
        ],
        "responses": {
          "200": {
            "description": "Results (same field names as the bulk version's dataset records) plus the free-tier limits.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Invalid or revoked API key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Free tier used up (25/day per IP) or rate/plan limit reached; the body has an upgrade link.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "504": {
            "description": "Took too long; ask for fewer items",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "DomainDNA API"
        ],
        "summary": "Tech stack of up to 3 websites, with evidence",
        "description": "Per domain: technologies [{name, category, evidence}] from 103+ fingerprints (meta generator, headers, cookies, script URLs, page HTML), securityHeaders, title, description, language, final URL, status code and a blocked flag for bot walls.",
        "operationId": "techStackPost",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "domains": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "maxItems": 3
                  }
                },
                "required": [
                  "domains"
                ]
              },
              "example": {
                "domains": [
                  "stripe.com",
                  "notion.so"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Results (same field names as the bulk version's dataset records) plus the free-tier limits.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Invalid or revoked API key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Free tier used up (25/day per IP) or rate/plan limit reached; the body has an upgrade link.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "504": {
            "description": "Took too long; ask for fewer items",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/registration": {
      "get": {
        "tags": [
          "DomainDNA API"
        ],
        "summary": "Domain age, registrar and expiry for up to 10 domains (RDAP)",
        "description": "Per domain: registration { registrar, createdAt, updatedAt, expiresAt, ageDays, status } from the registry's own RDAP server (found through IANA's bootstrap file).",
        "operationId": "domainRegistrationGet",
        "parameters": [
          {
            "name": "domain",
            "in": "query",
            "required": false,
            "description": "A domain, URL or email, or up to 10 separated by commas. Subdomains are kept for the website and DNS checks; DMARC and RDAP use the registrable domain.",
            "schema": {
              "type": "string"
            },
            "example": "stripe.com,notion.so"
          }
        ],
        "responses": {
          "200": {
            "description": "Results (same field names as the bulk version's dataset records) plus the free-tier limits.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Invalid or revoked API key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Free tier used up (25/day per IP) or rate/plan limit reached; the body has an upgrade link.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "504": {
            "description": "Took too long; ask for fewer items",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "DomainDNA API"
        ],
        "summary": "Domain age, registrar and expiry for up to 10 domains (RDAP)",
        "description": "Per domain: registration { registrar, createdAt, updatedAt, expiresAt, ageDays, status } from the registry's own RDAP server (found through IANA's bootstrap file).",
        "operationId": "domainRegistrationPost",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "domains": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "maxItems": 10
                  }
                },
                "required": [
                  "domains"
                ]
              },
              "example": {
                "domains": [
                  "stripe.com",
                  "notion.so"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Results (same field names as the bulk version's dataset records) plus the free-tier limits.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Invalid or revoked API key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Free tier used up (25/day per IP) or rate/plan limit reached; the body has an upgrade link.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "504": {
            "description": "Took too long; ask for fewer items",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "Error": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string"
          },
          "message": {
            "type": "string"
          },
          "retryAfterSeconds": {
            "type": "integer"
          },
          "limits": {
            "type": "object"
          }
        },
        "required": [
          "error",
          "message"
        ]
      }
    },
    "securitySchemes": {
      "ApiKeyHeader": {
        "type": "apiKey",
        "in": "header",
        "name": "x-api-key",
        "description": "Optional. Paid plan key from https://domaindna-api.cybermax-tools.workers.dev/docs#pricing; leave out for the free tier."
      },
      "BearerKey": {
        "type": "http",
        "scheme": "bearer",
        "description": "Same key as a Bearer token."
      }
    }
  },
  "x-mcp-server": "https://domaindna-api.cybermax-tools.workers.dev/mcp",
  "externalDocs": {
    "description": "Get an API key (pricing)",
    "url": "https://domaindna-api.cybermax-tools.workers.dev/docs#pricing"
  },
  "security": [
    {},
    {
      "ApiKeyHeader": []
    },
    {
      "BearerKey": []
    }
  ]
}