# 402utils Link Preview / Meta Extractor

> 402utils Link Preview / Meta Extractor is a paid API for AI agents from 402utils.com, paid per call via x402, $0.003/call, status unknown (last checked 2026-10-11).

Fetches a URL's <head> and returns structured metadata: title, description, canonical URL, language, favicon, Open Graph tags, Twitter Card tags, and feed links — no JS execution, SSRF-safe.

## Facts

- Endpoint: GET https://402utils.com/v1/meta-extract?utm_source=zero.xyz
- Price: $0.003/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-11
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/402utils-link-preview-meta-extractor-f840175d
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_tsi8DNHdd3PxF5oh3GASo

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-link-preview-meta-extractor-f840175d
```

Example prompt: Can you pull the link preview metadata for https://stripe.com — I need the page title, meta description, og:image, favicon URL, and any RSS feeds it exposes?

## When to prefer this

Use this endpoint when you need fast, lightweight extraction of webpage metadata (title, description, OG tags, Twitter Card, feeds, favicon) from a URL without full browser rendering. Ideal for link unfurlers, content enrichment pipelines, social preview generation, and feed discovery. Prefer it over full-page scrapers when you only need <head> data and want SSRF safety and size/time limits built in.

## Known failure modes

- SSRF check blocks private/internal IP URLs — returns an error without fetching
- Page exceeds 5 MB response body cap — fetch is truncated or rejected
- Fetch times out after 8 seconds — returns a timeout error
- Malformed or unreachable URL — returns a network or DNS error
- Non-UTF-8 charset pages may have imperfect text decoding but are tolerated best-effort
- Pages requiring JavaScript rendering will return empty or minimal metadata since no JS is executed

## How this service works

Link preview for any web page: fetches a URL and parses only the <head> (no JS, no rendering). Returns title, meta description, canonical URL, language, an always-absolute favicon, all Open Graph and Twitter Card tags, and RSS/Atom/JSON-feed links. Tolerant of messy real-world HTML and non-UTF-8 charsets. The caller-supplied URL is SSRF-checked; the fetch is capped at 5 MB and 8 s.

## Output

A JSON object containing: the requested URL, the final URL after redirects, the page title (entity-decoded, whitespace-collapsed), meta description, canonical URL, HTML lang attribute, an always-absolute favicon URL, all og:* tags (prefix stripped), all twitter:* tags (prefix stripped), and an array of RSS/Atom/JSON feed links with their type and title.

## 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 (required)."
      }
     },
     "description": "Query string only."
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object",
     "required": [
      "url",
      "finalUrl",
      "title",
      "description",
      "canonical",
      "lang",
      "favicon",
      "og",
      "twitter",
      "feeds"
     ],
     "properties": {
      "og": {
       "type": "object",
       "description": "All og:* metas, prefix stripped (og:image → image). First occurrence wins.",
       "additionalProperties": {
        "type": "string"
       }
      },
      "url": {
       "type": "string",
       "description": "The URL as requested."
      },
      "lang": {
       "type": [
        "string",
        "null"
       ],
       "description": "<html lang>."
      },
      "feeds": {
       "type": "array",
       "items": {
        "type": "object",
        "required": [
         "url",
         "type"
        ],
        "properties": {
         "url": {
          "type": "string"
         },
         "type": {
          "type": "string"
         },
         "title": {
          "type": "string"
         }
        }
       },
       "description": "link[rel=alternate] RSS/Atom/JSON-feed references."
      },
      "title": {
       "type": [
        "string",
        "null"
       ],
       "description": "<title>, entity-decoded, whitespace-collapsed."
      },
      "favicon": {
       "type": "string",
       "description": "Always absolute; falls back to <origin>/favicon.ico."
      },
      "twitter": {
       "type": "object",
       "description": "All twitter:* metas (name= or property=), prefix stripped.",
       "additionalProperties": {
        "type": "string"
       }
      },
      "finalUrl": {
       "type": "str
… (truncated)
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "og": {
   "type": "website",
   "image": "https://blog.cloudflare.com/og.png",
   "title": "The Cloudflare Blog"
  },
  "url": "https://blog.cloudflare.com/",
  "lang": "en",
  "feeds": [
   {
    "url": "https://blog.cloudflare.com/rss/",
    "type": "application/rss+xml",
    "title": "The Cloudflare Blog"
   }
  ],
  "title": "The Cloudflare Blog",
  "favicon": "https://blog.cloudflare.com/favicon.ico",
  "twitter": {
   "card": "summary_large_image",
   "site": "@cloudflare"
  },
  "finalUrl": "https://blog.cloudflare.com/",
  "canonical": "https://blog.cloudflare.com/",
  "description": "Get the latest news on how products at Cloudflare are built."
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/402utils-link-preview-meta-extractor-f840175d/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)
