{"uid":"cap_CjkI9YpFkxpSPJEk8IbN_","slug":"nero-labs-pdf-extract-21b79a2c","name":"Nero Labs PDF Extract","description":"Pay-per-call tools for AI agents, 31 in all: read web pages and RSS feeds, OCR, PDF text, transcription; email, phone and domain checks; UK, Irish and Polish company lookups and UK risk reports; website contacts, tech stack and SEO audits; PageSpeed; AI review, job post and row enrichment; data cleaning, joins, dedupe and diffs; US and EU compliance rules. No account or API key: pay each call in USDC on Base over x402.","url":"https://x402-agent-tools.nerolabs.workers.dev/pdf-extract?utm_source=zero.xyz","method":"POST","headers":{},"bodySchema":{"type":"object","properties":{"pdfUrls":{"type":"array","description":"A plain list of PDF links, for a quick one-off run with no spreadsheet. Use the dataset, file or Google Sheet inputs above to keep your own columns alongside the results."},"lastPage":{"type":"integer","minimum":1,"description":"Stop reading after this page. Leave empty to read to the end. Handy for taking only the first few pages of long reports."},"firstPage":{"type":"integer","minimum":1,"description":"Start reading at this page (1 is the first). Leave empty to read from the beginning."},"textFormat":{"enum":["plain","markdown","none"],"type":"string","default":"plain","description":"'Plain text' returns the reading-order text. 'Markdown' appends any detected tables as Markdown tables after the text, which is the friendliest shape for feeding an LLM. 'None' skips the text entirely, for runs that only want page counts, metadata or tables."},"minTableRows":{"type":"integer","default":3,"maximum":50,"minimum":2,"description":"Minimum rows before a grid counts as a table. The default of 3 is a deliberate noise floor, because printed forms are built from aligned two-line boxes and report dozens of meaningless two-row 'tables'. Lower it to 2 for invoices whose line items are one header plus one row."},"extractTables":{"type":"boolean","default":true,"description":"Reconstruct tables from the position of the text on the page and return them as rows of cells. Plain text extraction loses table structure completely, so this is where most of the value is for invoices, statements and reports."},"maxCharsPerPdf":{"type":"integer","default":200000,"maximum":2000000,"minimum":500,"description":"Cuts the returned text at this many characters so one very long document cannot produce an unusable dataset row. The row records whether it was cut."},"includePageText":{"type":"boolean","default":false,"description":"Add a 'pages' array with each page's text separately, on top of the combined text. Useful for citing a page number, and it makes rows considerably larger."}}},"responseSchema":{"type":"json","example":{"rows":[{"pdfUrl":"https://www.irs.gov/pub/irs-pdf/fw9.pdf","pdfTitle":"Form W-9 (Rev. March 2024)","charCount":5659,"pageCount":6,"pdfAuthor":"SE:W:CAR:MP","wordCount":933,"fileSizeKb":138,"tableCount":3,"ocrRequired":false,"resolvedUrl":"https://www.irs.gov/pub/irs-pdf/fw9.pdf","hasTextLayer":true,"statusDetail":null,"extractStatus":"ok","textTruncated":true}],"count":1,"_example_note":"Real output, trimmed: long lists cut to their first items, fields and text shortened."}},"example":null,"exampleRequest":null,"tags":["x402"],"displayCostAmount":"0.01","displayCostAsset":"USDC","priceDynamic":false,"priceHint":null,"priceStatus":"priced","priceSource":"probe","requiresHandshake":false,"reviewCount":0,"rating":{"score":"0.00","successRate":"0.00","reviews":0,"stars":null,"state":"unrated"},"availabilityStatus":"unknown","priceObserved":null,"sessionDeposit":null,"pricing":{"kind":"static","summary":"$0.01/call","primary":{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.01","per":"call","confidence":"exact"},"accepted":[{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.01","per":"call","confidence":"exact"}]},"paymentMethods":[{"uid":"pm_eliuYcIU0loUqYZFSYRD3","protocol":"x402","methodType":"crypto","chain":"base","mode":"charge","costAmount":"0.01","costPer":"request","priority":0,"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","unit":"request","depositMicros":null,"planRef":null}],"brandName":null,"brandSlug":null,"brandBaseUrl":null,"brandDocsUrl":null,"whatItDoes":"Extracts plain text or Markdown (including tables) from up to 10 PDF URLs, returning metadata like page count, title, author, and dates, and flagging scan-only PDFs.","exampleAgentPrompt":"Can you extract the text and tables from these two PDF links as Markdown, reading pages 1 through 10 only: https://example.com/report1.pdf and https://example.com/report2.pdf?","exampleUseCases":[{"title":"Extract tables from financial report","prompt":"Pull all the tables and text from this annual report PDF as Markdown so I can feed it to an LLM: https://example.com/annual-report-2024.pdf — stop at page 50 and keep only the first 100,000 characters."},{"title":"Batch invoice line-item extraction","prompt":"Extract the text and tables from these 5 invoice PDFs using Markdown format, and lower the minimum table rows to 2 so I catch single line-item invoices: https://example.com/inv1.pdf, https://example.com/inv2.pdf, https://example.com/inv3.pdf, https://example.com/inv4.pdf, https://example.com/inv5.pdf"},{"title":"Check if scanned PDFs need OCR","prompt":"Can you check whether these three PDFs have a readable text layer or if they're scans that need OCR? Just return the metadata — no text needed: https://example.com/scan1.pdf, https://example.com/scan2.pdf, https://example.com/scan3.pdf"}],"resultDescription":"A JSON object containing a rows array (one entry per PDF) with fields including extracted text, Markdown tables, page count, title, author, word count, file size in KB, table count, whether OCR is required, the extraction status, and whether text was truncated. Also includes a top-level count of processed PDFs.","failureModes":["PDF URL is inaccessible or returns a non-PDF response — extraction status will indicate failure","PDF is a scan with no text layer — ocrRequired flag set to true, text will be empty; use /ocr endpoint instead","More than 10 PDF URLs submitted — request may be rejected or truncated","maxCharsPerPdf limit reached — text is cut and textTruncated flag is set","Invalid page range (firstPage > lastPage) — may return empty or error response","PDF is password-protected or encrypted — extraction will fail with an error status"],"whenToPreferThis":"Use this endpoint when you have direct PDF URLs and need to extract readable text or structured tables from born-digital (non-scanned) PDFs. It is ideal for processing reports, invoices, forms, and research papers where preserving table structure matters. Prefer this over generic document parsers when you need Markdown-formatted tables ready for LLM consumption, per-page text, or PDF metadata like title and author. If the PDF is a scan with no text layer, use the /ocr sibling endpoint instead.","instructions":null,"reviewSummary":null,"reviewSummaryHighlights":null,"reviewSummaryConcerns":null,"reviewSummaryGeneratedAt":null,"activationCount":0,"lastUsedAt":null,"lastSuccessfullyRanAt":null,"lastHealthCheckAt":"2026-10-22T12:41:23.842Z","isFirstParty":false,"canonicalSlug":"nero-labs-pdf-extract-21b79a2c"}