MCP documentation menu

datapulse_scrape_result

ScrapingScope: datapulse:scrapeOutput: JSONRead-only

Get result by url hash

Description

Retrieve a scrape result by url hash. Used to poll for async scrape results.

When to use this tool:

NOT needed when: you used datapulse_scrape_submit with wait=true, because sync mode already returns the full result.

Status values (check before reading extraction):

  • pending/processing: NOT DONE — poll again in 5-10 seconds
  • completed: Extraction data is ready
  • failed: Check error field. Only failed means the scrape failed.

Bulk URLs (submitted via datapulse_scrape_bulk) can stay pending or processing much longer: behind interactive work, or while bulk work is paused. That is not a failure; poll with backoff. To rush one URL, resubmit it with datapulse_scrape_submit(url=…, force=true, wait=true).

Link discovery (completed results):

  • link_domains: {internal, external} — internal is the HOSTNAMES under the page’s own registrable domain, external the distinct third-party REGISTRABLE DOMAINS (the portfolio signal); different units, do not merge. Derived from every link; links_truncated and links_total are added when the page had more links than the scrape keeps
  • links: array of referenced URLs (the scrape keeps the first 1500, each {url, source, rel?, text?}), returned only with link_data=“links” or “both” (here, on datapulse_scrape_submit with wait=true and on datapulse_domain_overview); link_data defaults to “domains”, so by default only link_domains comes back. List and bulk responses carry link_domains only
  • Results scraped before 2026-07-02 lack both fields (absent ≠ no links; a rendered page with none has links: []); re-scrape with force=true

redirect_chain: the main-frame navigation the browser followed, one {url, status, location?, kind, error?} per document response; kind is http (a 30x), client (meta refresh or script), final (the rendered page) or error (navigation died there). Present on every read, failed rows included; absent on rows written before 2026-10-06 and when nothing was fetched (a DNS failure). final_url is the page as captured, so a script’s URL rewrite after load (google.com’s ?zx=) shows in final_url but not in the chain’s final hop.

Per-connection fields (single-result reads only): final_url, redirected, tls (absent for a plain-HTTP fetch), server_addr and quic. A failed quic probe carries error and, since 2026-09-15, reason (timeout, tls_rejected, resolve_failed, …) with tls_alert and tls_alert_code when the server sent a TLS alert.

Options:

  • include_dom: Include full cleaned HTML DOM. WARNING: typically 10KB-500KB, can exceed 1MB. Only use for specific analysis (e.g., impersonation detection).

For usage guidance, call datapulse_help(topic="scraping")

Parameters

ParameterTypeDescription
url_hash
required
string
The SHA-256 hash of the normalized URL. Returned by datapulse_scrape_submit.
Min length: 64Max length: 64Pattern: ^[a-fA-F0-9]{64}$
include_domboolean
Include the cleaned HTML DOM in the response. WARNING: Typically 10KB-500KB, can exceed 1MB. Only use when DOM analysis is needed. Default false.
Default: false
link_datastring
Which link structures the result carries: none, domains (link_domains only; the default), links (the full links array only) or both. Ask for links or both only when you need every URL — the links array runs to hundreds of entries and 100+ KB on a commercial site (903 links, 128 KB for muenchen.de).
Default: "domains"
nonedomainslinksboth
Input schema (JSON)
{
  "additionalProperties": false,
  "properties": {
    "include_dom": {
      "default": false,
      "description": "Include the cleaned HTML DOM in the response. WARNING: Typically 10KB-500KB, can exceed 1MB. Only use when DOM analysis is needed. Default false.",
      "type": "boolean"
    },
    "link_data": {
      "default": "domains",
      "description": "Which link structures the result carries: none, domains (link_domains only; the default), links (the full links array only) or both. Ask for links or both only when you need every URL — the links array runs to hundreds of entries and 100+ KB on a commercial site (903 links, 128 KB for muenchen.de).",
      "enum": [
        "none",
        "domains",
        "links",
        "both"
      ],
      "type": "string"
    },
    "url_hash": {
      "description": "The SHA-256 hash of the normalized URL. Returned by datapulse_scrape_submit.",
      "maxLength": 64,
      "minLength": 64,
      "pattern": "^[a-fA-F0-9]{64}$",
      "type": "string"
    }
  },
  "required": [
    "url_hash"
  ],
  "type": "object"
}

Generated from the live server (DataPulse MCP 1.0.0) on October 7, 2026.