{"uid":"cap_Em7NkVb3YLY6w_xcwV_MH","slug":"html-table-extractor-x402-zaden-works-f524f340","name":"HTML Table Extractor (x402 / Zaden Works)","description":"Fourteen pay-per-call web tools for AI agents, billed in USDC on Base with no account or API key. START WITH /audit -- one call returns a complete page health check (SEO + structured data + accessibility, optionally plus links and sitemap) with a single score and one worst-first findings list. The parts are also sold individually. SITE AUDIT: /seo (on-page SEO and meta tags), /links (broken links), /sitemap (robots.txt and XML sitemap crawlability), /structured (JSON-LD and social preview tags), /a11y (WCAG accessibility) -- each scored 0-100 with a prioritised issue list. READING: /read (clean markdown), /snap (screenshot, PDF or rendered HTML), /tables (every HTML table as structured JSON), /verify (does a claim actually appear on this page). MONITORING: /watch (has this page changed), /compare (what differs between two pages). Plus /rank (best x402 service for a task) and /batch (several operations behind one payment).","url":"https://x402-zadenworks.zaden-gaming.workers.dev/tables","method":"POST","headers":{},"bodySchema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","required":["input"],"properties":{"input":{"type":"object","required":["type","method","bodyType","body"],"properties":{"body":{"type":"object","required":["url"],"properties":{"url":{"type":"string","description":"Public http/https URL to extract tables from"},"waitMs":{"type":"integer","maximum":5000,"minimum":0},"selector":{"type":"string","description":"Optional CSS selector to scope the search for tables to"},"maxTables":{"type":"integer","maximum":20,"minimum":1},"maxRowsPerTable":{"type":"integer","maximum":500,"minimum":1}}},"type":{"type":"string","const":"http"},"method":{"enum":["POST"],"type":"string"},"bodyType":{"enum":["json","form-data","text"],"type":"string"}},"additionalProperties":false},"output":{"type":"object","required":["type"],"properties":{"type":{"type":"string"},"example":{"type":"object","properties":{"tables":{"type":"array","items":{"type":"object"}},"tableCount":{"type":"integer"},"tablesTruncated":{"type":"boolean"}}}}}}},"responseSchema":{"type":"json","example":{"tables":[{"rows":[["1","2"],["3","4"]],"index":0,"caption":"Example table","headers":["A","B"],"rowCount":2,"rowObjects":[{"A":"1","B":"2"},{"A":"3","B":"4"}]}],"tableCount":3,"tablesTruncated":false}},"example":null,"exampleRequest":null,"tags":["x402"],"displayCostAmount":"0.01","displayCostAsset":"USDC","priceDynamic":false,"priceHint":null,"priceStatus":"priced","priceSource":"registry","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_iaGNtWVBysmMs3EyaLcOj","protocol":"x402","methodType":"crypto","chain":"base","mode":"charge","costAmount":"0.01","costPer":"request","priority":0,"asset":null,"unit":"request","depositMicros":null,"planRef":null}],"brandName":null,"brandSlug":null,"brandBaseUrl":null,"brandDocsUrl":null,"whatItDoes":"Fetches a URL and extracts all HTML tables as structured JSON, returning headers, row arrays, and (when headers are unique) row objects keyed by header name.","exampleAgentPrompt":"Can you extract all the tables from https://example.com/pricing as structured JSON — I need the headers and rows so I can compare the plan tiers?","exampleUseCases":[{"title":"Scraping competitor pricing tables","prompt":"Pull all the pricing tables from https://competitor.com/plans and give me the headers and row data as structured JSON so I can compare their tiers against ours."},{"title":"Extracting product spec sheets","prompt":"Go to https://manufacturer.com/specs/widget-x and extract every HTML table on that page — I need the structured data with column headers and rows to populate our product database."},{"title":"Parsing public event schedule","prompt":"Extract the schedule tables from https://conference.example.com/schedule so I can see all the session names, times, and room assignments in a structured format."}],"resultDescription":"Returns a JSON array of table objects, each containing: an array of header strings, an array of row arrays (each row is a list of cell values), and (when all headers are unique) an array of row objects where each key is a header name and the value is the corresponding cell content. Covers all tables found on the page.","failureModes":["URL is unreachable or returns non-200 status — table extraction fails with an error","Page has no HTML tables — returns an empty array","Tables use rowspan/colspan in complex ways that may not parse cleanly into flat row arrays","JavaScript-rendered tables may not be captured if the page requires JS execution to populate table data","Duplicate header names prevent the keyed row-object representation from being generated for that table","Malformed HTML may cause incomplete or incorrect table parsing"],"whenToPreferThis":"Choose this endpoint when you need structured data from one or more HTML tables on a specific page — such as pricing grids, spec sheets, comparison tables, or schedules — and want clean JSON (headers + rows) without writing custom HTML parsing code. It is especially useful when the table structure is relatively standard and you need both array-of-arrays and keyed-object representations. For JavaScript-rendered pages or highly dynamic content, consider a sibling endpoint that uses a full headless browser render first.","instructions":null,"reviewSummary":null,"reviewSummaryHighlights":null,"reviewSummaryConcerns":null,"reviewSummaryGeneratedAt":null,"activationCount":0,"lastUsedAt":null,"lastSuccessfullyRanAt":null,"lastHealthCheckAt":"2026-09-14T12:42:08.413Z","isFirstParty":false}