# NetIntel PDF Parse

> NetIntel PDF Parse is a paid API for AI agents from netintel-production-440c.up.railway.app, paid per call via x402, $0.005/call, status unknown (last checked 2026-10-23).

Parses a PDF from a URL or base64 input into structured Markdown, per-page metadata, and document metadata using text-layer extraction.

## Facts

- Endpoint: POST https://netintel-production-440c.up.railway.app/pdf/parse?utm_source=zero.xyz
- Price: $0.005/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-23
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/netintel-pdf-parse-e89c78d5
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_9hYLsDGRyH56xh8Qc5y_Q

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-pdf-parse-e89c78d5 -d '<json body>'
```

Example prompt: Can you parse this PDF for me — https://example.com/reports/q3-report.pdf — and pull out the text from pages 1 through 5 as markdown so I can read it?

## When to prefer this

Choose this endpoint when you need to extract structured text and metadata from a PDF document — especially when dealing with research papers, reports, or contracts accessible via public URL or encodable as base64. Prefer this over generic web scraping for PDF-specific parsing with per-page structure, scanned-page detection, and document metadata. At $0.005 per call with no API key required and no charge on failures, it is well-suited for ad-hoc or agent-driven document processing pipelines.

## Known failure modes

- PDF URL is not publicly accessible or returns a non-200 response — call is not billed
- PDF exceeds 10 MB size limit — rejected, not billed
- base64 payload exceeds ~700 KB — rejected, not billed
- PDF contains only scanned/image pages with no text layer — markdown may be empty, scanned_pages listed in findings
- Both url and file_base64 provided simultaneously — input validation error, not billed
- Invalid page range format — input validation error, not billed
- Upstream fetch timeout or server error — not billed

## How this service works

Network intelligence API — 142 endpoints, all pay-per-call via x402 micropayments (USDC on Base or Solana mainnet).

NetIntel is agent fair-trade aligned: transparent per-call pricing in USDC on Base or Solana via x402, no API keys or signup, and automatic no-charge on server errors, upstream failures, and input-validation rejections — failed calls are never billed across NetIntel's network, domain, and data-intelligence endpoints.

## Output

Returns a JSON object containing: a markdown string of the parsed text with page separators, an array of per-page metadata (page number, character range, word count, has_text flag), source info (URL, byte size, final URL), document metadata (title, author, creation date, PDF version, has_form), total word and character counts, pages parsed, a list of scanned (image-only) pages, any findings (e.g. scanned_pages_present), and a truncated flag.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "url": {
   "type": "string",
   "description": "Public URL of the PDF (up to 10 MB)"
  },
  "pages": {
   "type": "string",
   "description": "Pages to parse, 1-based, e.g. \"1-3,7\" (default: the first 50)"
  },
  "max_chars": {
   "type": "number",
   "description": "Cap on the markdown length (default 100000)"
  },
  "file_base64": {
   "type": "string",
   "description": "The PDF as base64 or a data: URL (up to ~700 KB). Send url OR file_base64."
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "pages": [
   {
    "page": 1,
    "char_end": 507,
    "has_text": true,
    "char_start": 0,
    "word_count": 76
   },
   {
    "page": 2,
    "char_end": 581,
    "has_text": false,
    "char_start": 509,
    "word_count": 0
   },
   {
    "page": 3,
    "char_end": 730,
    "has_text": true,
    "char_start": 583,
    "word_count": 19
   }
  ],
  "source": {
   "url": "https://netintel.dev/samples/pdf-parse-sample.pdf",
   "type": "url",
   "bytes": 2236,
   "final_url": "https://netintel.dev/samples/pdf-parse-sample.pdf"
  },
  "findings": [
   "scanned_pages_present"
  ],
  "markdown": "<!-- page 1 -->\n\n## Quarterly Network Report\n\nThis sample shows what POST /pdf/parse returns: paragraphs rebuilt from the text layer, ...",
  "metadata": {
   "title": "Quarterly Network Report (sample)",
   "author": "NetIntel",
   "created": "2026-10-10T00:00:00Z",
   "has_form": false,
   "pdf_version": "1.4"
  },
  "truncated": false,
  "char_count": 730,
  "page_count": 3,
  "word_count": 95,
  "pages_parsed": 3,
  "scanned_pages": [
   2
  ]
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/netintel-pdf-parse-e89c78d5/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from netintel-production-440c.up.railway.app](https://www.zero.xyz/host/netintel-production-440c.up.railway.app/llms.txt)
