# Johto Data API – Domain Profile

> Johto Data API – Domain Profile is a paid API for AI agents from johto-x402-api.johtodata.workers.dev, paid per call via x402, $0.03/call, status unknown (last checked 2026-10-28).

Returns a comprehensive technical profile of a domain including DNS records, TLS certificate status, web properties, email security posture, provider stack, and detected technologies.

## Facts

- Endpoint: GET https://johto-x402-api.johtodata.workers.dev/v1/domain-profile?utm_source=zero.xyz
- Price: $0.03/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-28
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/johto-data-api-domain-profile-dfe53179
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_y02qmkGqOnJ56mdOxL1An

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability johto-data-api-domain-profile-dfe53179
```

Example prompt: Pull the full domain profile for stripe.com — I want to see their DNS records, TLS certificate details, email security posture (SPF, DKIM, DMARC), hosting and CDN providers, and detected tech stack.

## When to prefer this

Choose this endpoint when you need a consolidated technical snapshot of a domain covering DNS, TLS, email security, and hosting in a single call. It is ideal for due diligence, vendor assessment, competitive intelligence, and email deliverability checks. Prefer it over running separate DNS or WHOIS lookups when you want structured, multi-faceted domain intelligence in one request at low cost ($0.003 USDC per successful call).

## Known failure modes

- Domain not found or unresolvable — returns no rows and is not charged
- Invalid domain format — rejected by schema validation before payment
- TLS check fails due to connectivity — TLS section may be empty or partial
- Domain exists but has no web presence — web section returns empty/null fields
- Rate limiting or upstream DNS resolver errors — transient failures not charged

## How this service works

Valuable data. Quality leads. Paid per call in USDC on Base via x402. Not charged if the fetch fails or nothing matches. Prices per call (USDC): /v1/jp-invoice-check $0.002; /v1/sec-13f $0.003; /v1/sec-8k $0.003; /v1/sanctions-screen $0.0025; /v1/tenders $0.011; /v1/uk-tenders $0.003; /v1/fr-tenders $0.006; /v1/au-contracts $0.0035; /v1/wallet-risk $0.0025; /v1/kyb $0.0029; /v1/read $0.0019; /v1/crawl $0.0045; /v1/jobs $0.01; /v1/domain-profile $0.003.

## Output

A JSON object with a `data` field containing: DNS section (A, MX, NS, CAA, AAAA records, TXT count, DNSSEC validation status), TLS section (certificate issuer, expiry, days remaining, domain coverage), web section (HTTPS status, HTTP status code, page title, HSTS, redirects), email security section (SPF, DKIM selectors, DMARC policy and enforcement), detected provider stacks (DNS, mail, hosting/CDN, verified services), and tech stack entries with evidence. Also includes `rows` count and `fetchedAt` timestamp.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "required": [
  "input"
 ],
 "properties": {
  "input": {
   "type": "object",
   "required": [
    "type",
    "method"
   ],
   "properties": {
    "type": {
     "type": "string",
     "const": "http"
    },
    "method": {
     "enum": [
      "GET"
     ],
     "type": "string"
    },
    "queryParams": {
     "type": "object",
     "required": [
      "domain"
     ],
     "properties": {
      "domain": {
       "type": "string",
       "pattern": "^[A-Za-z0-9][A-Za-z0-9.-]{0,252}\\.[A-Za-z][A-Za-z0-9-]{1,62}\\.?$",
       "description": "One domain name, e.g. example.com"
      }
     }
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object",
     "required": [
      "data",
      "rows",
      "fetchedAt"
     ],
     "properties": {
      "data": {
       "type": "object",
       "properties": {
        "dns": {
         "type": "object",
         "properties": {
          "a": {
           "type": "array",
           "items": {
            "type": "string"
           }
          },
          "mx": {
           "type": "array",
           "items": {
            "type": "object",
            "properties": {
             "host": {
              "type": "string"
             },
             "priority": {
              "type": "integer"
             }
            }
           }
          },
          "ns": {
           "type": "array",
           "items": {
            "type": "string"
           }
          },
          "caa": {
           "type": "array",
           "items": {
            "type": "object",
            "properties": {
             "tag": {
              "type": "string"
             },
             "flag": {
              "type": "integer"
             },
             "value": {
              "type": "string"
             }
            }
           }
          },
          "aaaa": {
           "type": "array"
          },
          "txtCount": {
           "type": "integer"
          },
          "dnssecValidated": {
           "type": "boolean"
          }
         }
        },
        "tls": {
         "type": "object",
         "properties": {
          "method": {
           "type": "string"
          },
          "reason": {},
          "checked": {
           "type": "boolean"
        
… (truncated)
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "data": {
   "dns": {
    "a": [
     "140.82.114.3"
    ],
    "mx": [
     {
      "host": "github-com.mail.protection.outlook.com",
      "priority": 0
     }
    ],
    "txtCount": 24,
    "dnssecValidated": false
   },
   "tls": {
    "checked": true,
    "certificate": {
     "issuer": "Sectigo Limited",
     "expired": false,
     "daysLeft": 38,
     "notAfter": "2026-11-29T23:59:59Z",
     "coversDomain": true
    }
   },
   "web": {
    "https": true,
    "title": "GitHub · Change is constant. GitHub keeps you ahead. · GitHub · GitHub",
    "status": "ok",
    "httpStatus": 200
   },
   "email": {
    "spf": {
     "status": "softfail",
     "lookupTermsTopLevel": 8
    },
    "dkim": {
     "selectorsFound": [
      "selector1",
      "k1"
     ]
    },
    "dmarc": {
     "pct": 100,
     "policy": "quarantine",
     "status": "quarantine"
    },
    "posture": "enforced"
   },
   "flags": [],
   "domain": "github.com",
   "providers": {
    "dns": [
     "NS1",
     "Amazon Route 53"
    ],
    "mail": [
     "Microsoft 365"
    ],
    "hostingCdn": [
     "GitHub"
    ],
    "verifiedServices": [
     "Microsoft 365",
     "Adobe"
    ]
   },
   "techstack": [
    {
     "name": "GitHub",
     "category": "Hosting",
     "evidence": "header x-github-request-id"
    }
   ]
  },
  "rows": 1,
  "fetchedAt": "2026-10-22T17:57:38Z"
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/johto-data-api-domain-profile-dfe53179/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from johto-x402-api.johtodata.workers.dev](https://www.zero.xyz/host/johto-x402-api.johtodata.workers.dev/llms.txt)
