# 402utils Site Profile

> 402utils Site Profile is a paid API for AI agents from 402utils.com, paid per call via x402, $0.007/call, status unknown (last checked 2026-10-10).

Returns a comprehensive profile of a web page including HTML metadata, DNS records, robots.txt crawl permissions, RDAP domain registration, and llms.txt agent-readiness, all fetched in parallel in a single paid call.

## Facts

- Endpoint: GET https://402utils.com/v1/site-profile?utm_source=zero.xyz
- Price: $0.007/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-10
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/402utils-site-profile-d8c605d5
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_rkm7O2BjBqapMnB4diaor

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 402utils-site-profile-d8c605d5
```

Example prompt: Can you pull a full site profile for https://openai.com — I want the HTML metadata, DNS records, domain registration info, whether GPTBot is allowed by robots.txt, and whether they have an llms.txt file?

## When to prefer this

Choose this endpoint when you need a broad reconnaissance snapshot of a website in a single call rather than making separate requests for DNS, WHOIS, metadata, and robots checks. It is especially useful for agents doing site discovery, crawl planning, or domain due diligence where latency matters and you want parallel fan-out rather than sequential lookups. Prefer it over the sibling DNS-only or tech-stack endpoints when you need the combined picture including domain registration and agent-readiness signals.

## Known failure modes

- URL fails SSRF safety check — request rejected before any fetch
- All five sections fail (e.g. unreachable host) — returns 503 and no charge is applied
- Individual sections return status 'unavailable' or 'skipped' if that data source is inaccessible
- Invalid or malformed URL parameter returns a 4xx error
- Target site rate-limits or blocks the fetcher — affected section marked unavailable

## How this service works

Full profile of a web page in one paid call: <head> metadata (title, description, canonical, OpenGraph, favicon, feeds), DNS records (A/AAAA/MX/NS), robots.txt crawl permission for your user-agent, and domain registration/expiry (RDAP) — fanned out in parallel, each section with its own status. Pass ?userAgent= to test robots for a specific crawler. Page fetches are SSRF-checked. If every section fails technically you get a 503 and no charge.

## Output

A JSON object with five sections — meta (title, description, OpenGraph, favicon, feeds), dns (A/AAAA/MX/NS records), robots (crawl permission for the specified user-agent), domain (RDAP registration and expiry), and llmsTxt (presence and content of llms.txt) — each with its own status field, plus a summary showing how many sections succeeded and the 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": [
      "url"
     ],
     "properties": {
      "url": {
       "type": "string",
       "format": "uri",
       "description": "Public http(s) page URL to profile (required)."
      },
      "userAgent": {
       "type": "string",
       "default": "*",
       "description": "Crawler product token for the robots check, e.g. \"GPTBot\"."
      }
     },
     "description": "Query string only."
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object",
     "required": [
      "url",
      "meta",
      "dns",
      "robots",
      "domain",
      "llmsTxt",
      "summary"
     ],
     "properties": {
      "dns": {
       "type": "object",
       "description": "dns-lookup result with `status` (ok | unavailable | skipped)."
      },
      "url": {
       "type": "string"
      },
      "meta": {
       "type": "object",
       "description": "meta-extract result with a `status` (ok | unavailable)."
      },
      "domain": {
       "type": "object",
       "description": "domain-check result with `status` (ok | unavailable | skipped)."
      },
      "robots": {
       "type": "object",
       "description": "robots-check result with `status`."
      },
      "llmsTxt": {
       "type": "object",
       "description": "llms-txt result with `status` and `found` (the agent-readiness signal)."
      },
      "summary": {
       "type": "object",
       "required": [
        "ok",
        "checkedAt"
       ],
       "properties": {
        "ok": {
         "type": "integer",
         "description": "How many of the five sections produced a result."
        },
        "checkedAt": {
         "type": "string",
         "format": "date-time"
        }
       }
      }
     }
    }
   }
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "dns": {
   "domain": "blog.cloudflare.com",
   "status": "ok",
   "records": [
    {
     "ttl": 300,
     "type": "A",
     "value": "104.16.0.1"
    }
   ]
  },
  "url": "https://blog.cloudflare.com/",
  "meta": {
   "title": "The Cloudflare Blog",
   "status": "ok",
   "favicon": "https://blog.cloudflare.com/favicon.ico"
  },
  "domain": {
   "status": "ok",
   "registrar": "Cloudflare, Inc.",
   "supported": true,
   "registered": true
  },
  "robots": {
   "status": "ok",
   "allowed": true,
   "sitemaps": [],
   "robotsUrl": "https://blog.cloudflare.com/robots.txt",
   "robotsStatus": 200
  },
  "summary": {
   "ok": 4,
   "checkedAt": "2026-07-05T12:00:00.000Z"
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/402utils-site-profile-d8c605d5/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from 402utils.com](https://www.zero.xyz/host/402utils.com/llms.txt)
