---
title: "MERCURY Cited Links"
method: GET
path: "/buy/links"
tags: ["cited-links", "link-graph", "outbound-links", "internal-links", "seo", "competitor-analysis", "privacy-audit", "third-party-origins", "crawl-frontier", "verifiable-data-record", "attestation", "provenance", "keyless", "agent-native", "scraping"]
---

# MERCURY Cited Links

`GET /buy/links`

## Request

- Base URL: `https://network.mercury-hq.com`
- URL: `https://network.mercury-hq.com/buy/links`
- Auth: none declared
- TypeScript: <https://skmtc.dev/mercury-hq/apis/mercury-x402-storefront/docs/buy/links/get.ts> (a function with typed inputs; its response is checked against the schema)

URL → a SIGNED outbound/internal link graph: every <a href> as an absolute URL + anchor text, classified internal vs external against the page origin, grouped by origin with a third-party-origin histogram (privacy-audit) and same/cross-origin counts (SEO). Deterministic — same page bytes ⇒ byte-identical graph; no LLM. Covers <a> hyperlinks only (not rel/asset tags). Receipt = EIP-191 over the graph.

## Query parameters

- `url` string, required: the page to map (http/https)

## Response `200`

Delivered after the x402 payment settles on Base mainnet.

- object
  - `ok` boolean, required: true on success; false on an honest failure (still delivered)
  - `url` string, required: final URL after redirects (the graph origin)
  - `status` integer: upstream HTTP status
  - `data` object: the structured link graph (the product the buyer consumes)
    - `pageOrigin` string: scheme://host of the final page — the reference origin
    - `total` integer: number of unique outbound <a href> links
    - `internalCount` integer: links to the same registrable host (www-insensitive)
    - `externalCount` integer: links to a different host
    - `originCount` integer: number of distinct link origins
    - `links` object[]: every link: absolute url, anchor text, its origin, and internal/external
      - `url` string
      - `text` string: anchor text (may be empty for image/icon links)
      - `origin` string: scheme://host of this link
      - `internal` boolean: true if same registrable host as the page
    - `byOrigin` object[]: links grouped by origin, descending by count (SEO + competitor map)
      - `origin` string
      - `count` integer
      - `internal` boolean
    - `thirdPartyOrigins` string[]: distinct EXTERNAL origins only — the privacy-audit / data-leak surface
  - `text` string: canonical newline string the signed receipt covers (one `text\turl` row per link, origin-sorted)
  - `contentType` string
  - `fetchedAt` string: ISO8601 fetch time (in the signed payload)
  - `error` string: present only when ok:false

## Other responses

- `402`: Payment Required — retry with an x402-signed payment (e.g. x402-fetch). Terms are in the challenge body (x402 v1).

---

[API](https://skmtc.dev/mercury-hq/apis/mercury-x402-storefront.md) - [All operations](https://skmtc.dev/mercury-hq/apis/mercury-x402-storefront/llms.txt) - [OpenAPI document](https://skmtc.dev/mercury-hq/apis/mercury-x402-storefront/revisions/211aa7db24ae?raw)
