{"openapi":"3.1.0","info":{"title":"Softbot Reader","version":"1.1.0","description":"Fetch a public web page and return clean markdown, title and metadata. Respects robots.txt. Paid per call via x402 (USDC on Solana)."},"servers":[{"url":"https://softbot-reader-mainnet.softbot.workers.dev"}],"paths":{"/v1/read":{"post":{"summary":"Read a URL as markdown","description":"Fetch a public web page and return clean markdown, title and metadata. Respects robots.txt. Use when you need the readable text of a page (articles, docs, blog posts) as clean markdown to summarise, quote or reason over.","x-x402":{"price_usdc":0.003,"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["url"],"properties":{"url":{"type":"string","format":"uri","description":"Public http(s) URL to read"}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"final_url":{"type":"string"},"status":{"type":"integer"},"title":{"type":"string"},"metadata":{"type":"object"},"markdown":{"type":"string"},"truncated":{"type":"boolean"},"word_count":{"type":"integer"}}}}}},"402":{"description":"Payment required (x402)"},"4XX":{"description":"Rejected URL (not charged)"}}}},"/v1/extract":{"post":{"summary":"Reader Pro: structured data from a URL","description":"Reader Pro: fetch a public web page and return structured data, no LLM: OpenGraph/meta tags, parsed JSON-LD (schema.org), HTML tables as row objects, deduped internal/external links, emails/phones/social profiles, heading outline, images with alt text, plus optional CSS-selector fields. Use when you need machine-readable facts from a page instead of prose: a table of prices/stats, product or event data from schema.org JSON-LD, a company's contact emails/phones/socials, a site's link map, or specific elements by CSS selector. Cheaper and more reliable than asking an LLM to parse HTML.","x-x402":{"price_usdc":0.004,"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["url"],"properties":{"url":{"type":"string","format":"uri","description":"Public http(s) URL"},"include":{"type":"array","items":{"type":"string","enum":["meta","tables","links","contacts","jsonld","headings","images"]},"description":"Sections to return (default: all)"},"fields":{"type":"object","additionalProperties":{"type":"string"},"description":"Map of name -> CSS selector; returns text of up to 50 matches. Append ' @attr' to return an attribute, e.g. 'a.product @href'. Max 20 fields."}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"final_url":{"type":"string"},"status":{"type":"integer"},"truncated":{"type":"boolean"},"meta":{"type":"object","description":"title, lang, canonical, icon, tags{og:*, twitter:*, description,...}"},"jsonld":{"type":"object","description":"items[], types[], parse_errors"},"tables":{"type":"array","description":"[{caption, headers[], rows:[{header: value}], row_count, truncated}]"},"links":{"type":"object","description":"internal[{url,text}], external[{url,text}]"},"contacts":{"type":"object","description":"emails[], phones[], social[{network,url}]"},"headings":{"type":"array","description":"[{level, text, id}]"},"images":{"type":"array","description":"[{src, alt, width, height}]"},"fields":{"type":"object","description":"name -> string[] (or {error})"}}}}}},"402":{"description":"Payment required (x402)"},"4XX":{"description":"Rejected URL or input (not charged)"}}}},"/health":{"get":{"responses":{"200":{"description":"OK"}}}}}}