Skip to content
web · web · audit · webpage-metadata · meta-tags · open-graph · canonical-url · seo-metadata · page-title · meta-description · headings · json-ld · twitter-card · schema.org · hreflang · icons · feeds · enrichment

Webpage metadata extraction

Extract webpage metadata from one public URL: page title, meta description, canonical URL, headings, hreflang, icons, feeds, Open Graph, Twitter Cards, and JSON-LD Schema.org types, with redirect and response provenance plus privacy-safe, publisher-asserted Organization facts with field evidence.

$0.002 USDCBase + Solanax402 v2POSTCustomer-evidenced
Pay $0.002 USDC and run in your browserView free result sample

Endpoint

https://apiacre.com/v1/web/metadata

Send the JSON body below. An unpaid request returns HTTP 402 with a PAYMENT-REQUIRED header; an x402-compatible buyer signs the requirement and retries with PAYMENT-SIGNATURE.

Pay $0.002 USDC and run in your browser

Official Coinbase agent path

Coinbase Agentic Wallet can satisfy this x402 request in one command. Running it may pay automatically, so --max-amount is fixed to $0.002 USDC in atomic units. Copying the command does not install, authenticate, sign, or pay; review the request and use a separate low-value wallet before running it.

npx --yes awal@latest x402 pay https://apiacre.com/v1/web/metadata \
  -X POST \
  -d '{"url":"https://apiacre.com"}' \
  --max-amount 2000 \
  --json

Coinbase pay-for-service documentation · Buyer setup and wallet safety

Alternative third-party AgentCash commands

Run check first without payment. Its fetch command may automatically pay up to the exact listed price.

npx --yes agentcash@latest check https://apiacre.com/v1/web/metadata
npx --yes agentcash@latest fetch https://apiacre.com/v1/web/metadata \
  --method POST \
  --header 'content-type: application/json' \
  --body '{"url":"https://apiacre.com"}' \
  --payment-protocol x402 \
  --payment-network base \
  --max-amount 0.002

AgentCash CLI documentation

Input example

{
  "url": "https://apiacre.com"
}

Response shape

View free static sample JSON

{
  "request_id": "018f1f54-7f38-7ba2-8dc3-5f90272d9f1a",
  "service": "web.metadata",
  "version": "1",
  "data": {
    "requestedUrl": "https://apiacre.com/",
    "redirected": false,
    "url": "https://apiacre.com/",
    "title": "API Acre \u2014 Pay-per-call APIs on Base",
    "description": "70 pay-per-call APIs for agents, settled in USDC on Base through x402.",
    "canonical": "https://apiacre.com",
    "language": "en",
    "document": {
      "charset": "utf-8",
      "viewport": "width=device-width,initial-scale=1",
      "robots": "index,follow",
      "author": null,
      "generator": null,
      "themeColor": null
    },
    "openGraph": {
      "title": "API Acre \u2014 Pay-per-call APIs on Base",
      "description": "Buy focused web, document, developer, research, and EVM results with USDC over x402.",
      "image": null,
      "imageAlt": null,
      "url": "https://apiacre.com",
      "type": "website",
      "siteName": null,
      "locale": null
    },
    "twitter": {
      "card": null,
      "title": null,
      "description": null,
      "image": null,
      "imageAlt": null,
      "site": null,
      "creator": null
    },
    "headings": {
      "h1": [
        "Useful APIs. One call at a time."
      ],
      "h2Count": 2,
      "h3Count": 55
    },
    "alternates": [],
    "feeds": [],
    "icons": [],
    "structuredData": {
      "blocks": 1,
      "validBlocks": 1,
      "invalidBlocks": 0,
      "types": [
        "Organization",
        "WebAPI"
      ],
      "truncated": false,
      "organizationFacts": {
        "status": "complete",
        "method": "apiacre-schemaorg-organization-facts/1",
        "scope": "Publisher-asserted Schema.org Organization facts; not verification of identity, domain ownership, or legal status. Person and contact fields are excluded.",
        "publisherAsserted": true,
        "identityVerified": false,
        "domainOwnershipVerified": false,
        "legalStatusVerified": false,
        "additionalNetworkRequestsMade": 0,
        "sourceScriptsSha256": "0afe4ab775e3985222320128f13c95ea10bf90021a8a8915479873f26f2fc40d",
        "vocabulary": {
          "name": "Schema.org",
          "url": "https://schema.org/",
          "license": "CC BY-SA 3.0",
          "licenseUrl": "https://creativecommons.org/licenses/by-sa/3.0/"
        },
        "scriptsSeen": 1,
        "scriptsProcessed": 1,
        "nodesSeen": 2,
        "organizationsReturned": 1,
        "organizations": [
          {
            "type": "Organization",
            "id": null,
            "fields": {
              "name": "API Acre",
              "url": "https://apiacre.com"
            },
            "evidence": [
              {
                "field": "name",
                "blockIndex": 0,
                "jsonPointer": "/provider/name",
                "valueSha256": "8538606619feeaf0e13ae5d29a5a81970b47bedc403e6468475c08209c140da7"
              },
              {
                "field": "url",
                "blockIndex": 0,
                "jsonPointer": "/provider/url",
                "valueSha256": "2995a6567e3c0dfe6fca040f7bc2c4de577ed3f777d5e6548ed3986557d2a44b"
              }
            ]
          }
        ],
        "conflicts": [],
        "warnings": [],
        "limits": {
          "maxScriptsProcessed": 100,
          "maxInputCharacters": 500000,
          "maxObjectNodes": 500,
          "maxDepth": 20,
          "processingBudgetMs": 1000
        }
      }
    },
    "response": {
      "statusCode": 200,
      "contentType": "text/html; charset=utf-8",
      "elapsedMs": 42,
      "bytes": 21633,
      "bodySha256": "3886972b5512bf62a93dbdf790af504cab300572de9837088909ebd4aa3a3b4e"
    }
  },
  "meta": {
    "duration_ms": 42,
    "cached": false,
    "sources": [],
    "warnings": [],
    "next_actions": [
      {
        "service": "web.extract",
        "title": "Web content extraction",
        "reason": "Retrieve the same public URL as clean text or Markdown with bounded structured links and page signals for downstream research or RAG.",
        "method": "POST",
        "path": "/v1/web/extract",
        "price": "$0.01",
        "input_template": {
          "url": "$request.url",
          "output": "markdown"
        },
        "use_output": "Use result.data.content as the normalized page body, result.data.links as a bounded link inventory, and the hashes as fetch-specific provenance.",
        "handoff_path": "/catalog/web.extract",
        "checkout_path": "/try/web.extract",
        "sample_path": "/samples/web.extract",
        "maximum_atomic_usdc": "10000",
        "handoff_payment_required": false,
        "executes_automatically": false,
        "authorization_required": true
      },
      {
        "service": "data.schema",
        "title": "JSON Schema generator",
        "reason": "Turn the normalized metadata result into a reusable validation contract.",
        "method": "POST",
        "path": "/v1/data/schema",
        "price": "$0.025",
        "input_template": {
          "content": "$json($result.data)",
          "format": "json"
        },
        "use_output": "Persist result.data.schema to validate future metadata records.",
        "handoff_path": "/catalog/data.schema",
        "checkout_path": "/try/data.schema",
        "sample_path": "/samples/data.schema",
        "maximum_atomic_usdc": "25000",
        "handoff_payment_required": false,
        "executes_automatically": false,
        "authorization_required": true
      },
      {
        "service": "web.domain-intelligence",
        "title": "Domain intelligence",
        "reason": "Add DNS, TLS, RDAP, mail-policy, and domain-age evidence for the same public website.",
        "method": "POST",
        "path": "/v1/web/domain-intelligence",
        "price": "$0.02",
        "input_template": {
          "url": "$request.url"
        },
        "use_output": "Use result.data.signals and warnings as bounded technical domain evidence; do not treat them as an ownership or safety verdict.",
        "handoff_path": "/catalog/web.domain-intelligence",
        "checkout_path": "/try/web.domain-intelligence",
        "sample_path": "/samples/web.domain-intelligence",
        "maximum_atomic_usdc": "20000",
        "handoff_payment_required": false,
        "executes_automatically": false,
        "authorization_required": true
      }
    ]
  }
}

Complete recipes using this API

These buyer-controlled recipes connect this service to compatible API Acre results. Every step has its own exact price and requires separate authorization.

Continue this workflow

These optional follow-ups use this result in a larger workflow. Each call shows a fresh x402 challenge and requires separate buyer authorization.

Try the payment challenge

curl -i -X POST 'https://apiacre.com/v1/web/metadata' \
  -H 'content-type: application/json' \
  --data '{"url":"https://apiacre.com"}'