# NetIntel Web Fetch

> NetIntel Web Fetch is a paid API for AI agents from netintel.dev, paid per call via x402, $0.003/call, status unknown (last checked 2026-09-14).

Fetches any URL server-side and returns the raw response body — JSON parsed automatically, everything else as plain text — without mangling by markdown conversion.

## Facts

- Endpoint: GET https://netintel.dev/web/fetch
- Price: $0.003/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-14
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/netintel-web-fetch-fcc92d8a
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_Xdr7U4s6-7t24T3DP1nyS

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 netintel-web-fetch-fcc92d8a
```

Example prompt: Can you fetch the raw JSON from this ArcGIS feature layer endpoint for me: https://services.arcgis.com/example/FeatureServer/0/query?where=1%3D1&f=json — I need the actual parsed data, not a markdown summary.

## When to prefer this

Use this endpoint when you need the raw HTTP response body from a public URL — especially data APIs like ArcGIS, government open-data portals, or blob storage files — and other web extraction tools mangle the content by converting it to markdown. Ideal when you need JSON parsed cleanly, need to respect byte limits, or need server-side egress without CORS restrictions. Prefer over browser-based scrapers or markdown-extraction endpoints when the target is a data API rather than a human-readable webpage.

## Known failure modes

- Non-2xx upstream responses are not billed and return an error — the upstream server rejected or errored
- SSRF guard blocks private/internal IP ranges and localhost URLs
- Response body truncated at max_bytes (default 2 MB, hard cap 5 MB) with truncated flag set to true
- URL is malformed or unreachable — connection timeout or DNS failure
- Upstream returns binary content (e.g. images, PDFs) which may not be usable as text

## How this service works

Fetch any URL and get the raw body back — JSON parsed, everything else as text — from safe server-side egress. For data APIs (ArcGIS, government/open-data portals, blob storage) that /web/extract's markdown conversion mangles. No API key, SSRF-guarded, billed only on a usable 2xx response. Pass url as ?url= (GET) or a JSON body (POST).

## Output

Returns a JSON object containing: the parsed JSON body (if content is JSON), or raw text body (if not JSON), the upstream HTTP status code (2xx only — non-2xx are not billed), the content-type header, the final URL after any redirects, the byte count returned, and a truncated flag if the response was cut off at the max_bytes limit.

## 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",
       "description": "Absolute http(s) URL to fetch (data API, open-data portal, blob file). Aliases: uri, target, link, u"
      },
      "max_bytes": {
       "type": "number",
       "description": "Optional read cap in bytes (default 2000000, hard cap 5000000); longer bodies are truncated and flagged"
      }
     }
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object",
     "properties": {
      "url": {
       "type": "string"
      },
      "json": {
       "type": [
        "object",
        "array",
        "null"
       ],
       "description": "parsed body when it is JSON"
      },
      "text": {
       "type": [
        "string",
        "null"
       ],
       "description": "raw body when it is not JSON"
      },
      "bytes": {
       "type": "number",
       "description": "bytes returned (≤ max_bytes)"
      },
      "status": {
       "type": "number",
       "description": "upstream HTTP status (2xx)"
      },
      "findings": {
       "type": "array"
      },
      "final_url": {
       "type": "string",
       "description": "after redirects"
      },
      "truncated": {
       "type": "boolean"
      },
      "content_type": {
       "type": [
        "string",
        "null"
       ],
       "description": "upstream media type"
      }
     }
    }
   }
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "url": "https://api.dexscreener.com/latest/dex/tokens/0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
  "json": {
   "pairs": [
    {
     "dexId": "quickswap",
     "chainId": "base",
     "priceUsd": "1.00013",
     "baseToken": {
      "name": "USD Coin",
      "symbol": "USDC",
      "address": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"
     },
     "quoteToken": {
      "name": "USD Base Coin",
      "symbol": "USDbC",
      "address": "0xd9aAEc86B65D86f6A7B5B1b0c42FFA531710b6CA"
     },
     "pairAddress": "0x5D0bC342178C8Fe2c2f9A9fcC9D52555C99936db"
    }
   ],
   "schemaVersion": "1.0.0"
  },
  "text": null,
  "bytes": 25499,
  "status": 200,
  "findings": [],
  "final_url": "https://api.dexscreener.com/latest/dex/tokens/0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
  "truncated": false,
  "content_type": "application/json"
 }
}
```

## More

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