# Tanod Web URL Parser

> Tanod Web URL Parser is a paid API for AI agents from web.tanod.dev, paid per call via x402, $0.001/call, status unknown (last checked 2026-10-13).

Parses and normalizes a URL into its structural components (scheme, host, subdomain, domain, suffix, path, query params, port, IDNA validity, etc.) without fetching it.

## Facts

- Endpoint: POST https://web.tanod.dev/v1/url?utm_source=zero.xyz
- Price: $0.001/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-13
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/tanod-web-url-parser-b20a20c4
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_ChOP69Koo653EfwF4tmiw

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 tanod-web-url-parser-b20a20c4 -d '<json body>'
```

Example prompt: Parse the URL https://shop.example.co.uk/a?b=1 and tell me its subdomain, registrable domain, public suffix, path segments, and query parameters.

## When to prefer this

Choose this endpoint when you need fast, offline-style URL decomposition with accurate public suffix resolution (using the Mozilla Public Suffix List) and IDNA/Unicode hostname handling — without making an HTTP request to the target URL. Ideal for pipelines that normalize, deduplicate, or group URLs by domain, or that need to extract query parameters and path segments programmatically. Prefer over regex-based parsing when correctness for ccTLDs (e.g. .co.uk, .com.au) and internationalized hostnames matters.

## Known failure modes

- Empty or missing 'url' field returns a validation error
- URL exceeding 2048 characters is rejected
- Whitespace in URL causes rejection — must be percent-encoded
- Non-printable characters in URL cause parse failure
- Malformed percent-encoding may cause an error or unexpected normalization
- Payment failure (402) if USDC micropayment is not attached

## How this service works

Web tools: search, page to Markdown or screenshot, company profile and jobs, sitemaps, RDAP, IP.

## Output

A JSON object containing the fully decomposed URL: normalized form, scheme (with flag if assumed), host (ASCII and Unicode), subdomain, domain label, public suffix, registrable domain, ICANN registrable domain, path, path segments, query string, parsed query params, port (explicit and effective), fragment, username, IP version and is_ip flag, IDNA validity, host Unicode scripts, mixed-script flag, and truncation indicators for params and path segments.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "url": {
   "type": "string",
   "maxLength": 2048,
   "minLength": 1,
   "description": "URL to parse (never fetched); printable, no whitespace (percent-encode it). Without :// it is read as https://."
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "host": "shop.example.co.uk",
  "path": "/a",
  "port": null,
  "is_ip": false,
  "query": "b=1",
  "params": [
   [
    "b",
    "1"
   ]
  ],
  "scheme": "https",
  "source": {
   "url": "https://publicsuffix.org/",
   "library": "tldextract 5.4.0 (bundled Public Suffix List snapshot) + idna 3.20",
   "license": "BSD-3-Clause (libraries); PSL data MPL-2.0"
  },
  "fragment": null,
  "username": null,
  "subdomain": "shop",
  "host_ascii": "shop.example.co.uk",
  "idna_valid": true,
  "ip_version": null,
  "normalized": "https://shop.example.co.uk/a?b=1",
  "domain_label": "example",
  "has_password": false,
  "host_scripts": [
   "LATIN"
  ],
  "host_unicode": "shop.example.co.uk",
  "icann_suffix": "co.uk",
  "known_suffix": true,
  "path_segments": [
   "a"
  ],
  "public_suffix": "co.uk",
  "effective_port": 443,
  "scheme_assumed": false,
  "params_truncated": false,
  "suffix_is_private": false,
  "mixed_script_label": false,
  "registrable_domain": "example.co.uk",
  "path_segments_truncated": false,
  "icann_registrable_domain": "example.co.uk"
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/tanod-web-url-parser-b20a20c4/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from web.tanod.dev](https://www.zero.xyz/host/web.tanod.dev/llms.txt)
