{"uid":"cap_U57uJckH9G3ZelcuxQkpK","slug":"structura-table-extractor-bfda6674","name":"Structura Table Extractor","description":"Turn a URL, HTML, text or a PDF-ish blob into JSON that provably validates against your JSON Schema. Paid per call over x402.","url":"https://structura.x.c00l.site/table","method":"POST","headers":{},"bodySchema":null,"responseSchema":{"type":"json","example":{"tables":[{"csv":"Plan,Monthly,Seats\r\nStarter,12,3\r\nTeam,49,25\r\n","name":"Pricing","rows":[{"Plan":"Starter","Seats":3,"Monthly":12},{"Plan":"Team","Seats":25,"Monthly":49}],"notes":"","columns":[{"name":"Plan","type":"string","unit":null,"nullCount":0},{"name":"Monthly","type":"number","unit":"USD","nullCount":0},{"name":"Seats","type":"integer","unit":null,"nullCount":0}],"rowCount":2,"columnCount":3,"orientation":"row"}],"detected":{"mode":"html-grid","skipped":0,"htmlTables":1,"mergedCells":false},"tableCount":1}},"example":null,"exampleRequest":null,"tags":["x402"],"displayCostAmount":"0.012","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.012/call","primary":{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.012","per":"call","confidence":"exact"},"accepted":[{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.012","per":"call","confidence":"exact"}]},"paymentMethods":[{"uid":"pm_TQojOfNScUH-L9Tew2CYs","protocol":"x402","methodType":"crypto","chain":"base","mode":"charge","costAmount":"0.012","costPer":"request","priority":0,"asset":null,"unit":"request","depositMicros":null,"planRef":null}],"brandName":null,"brandSlug":null,"brandBaseUrl":null,"brandDocsUrl":null,"whatItDoes":"Extracts tabular data from a URL, HTML, text, or PDF-like blob and returns structured, typed JSON with column metadata and CSV representation","exampleAgentPrompt":"Pull the pricing table from https://example.com/pricing and give me the rows and column types as structured JSON — I need the plan names, monthly cost, and seat counts cleanly typed.","exampleUseCases":[{"title":"Pricing page competitive analysis","prompt":"Grab the pricing table from https://competitor.com/pricing and extract all the plan names, monthly prices, and seat limits as structured JSON so I can compare them to ours."},{"title":"PDF-sourced data ingestion pipeline","prompt":"Here's a blob of text I pulled from a PDF report — it has a table of quarterly revenue figures by region. Can you parse it into typed JSON rows with column names and types?"},{"title":"HTML report table to CSV export","prompt":"Extract all the tables from this HTML snippet I'm pasting — I need each one as a CSV string with row counts and column metadata so I can drop them into a spreadsheet."}],"resultDescription":"Returns a JSON object containing an array of tables, each with: rows (array of typed key-value objects), columns (array with name, type, unit, and nullCount), a CSV string representation, row count, column count, orientation, and a top-level detection object describing how the table was found (mode, htmlTables count, mergedCells flag, skipped count).","failureModes":["No tables detected in the input — tableCount returns 0 and tables array is empty","URL is unreachable or returns a non-200 response — extraction fails","Input contains only images of tables (non-machine-readable) — no structured data returned","Malformed HTML or unsupported blob format causes parse failure","Merged cells in complex HTML tables may degrade row/column alignment (mergedCells flag set to true)","Payment not submitted or insufficient USDC balance — request rejected by x402 payment gate"],"whenToPreferThis":"Choose this endpoint when you need to extract one or more tables from a live URL, pasted HTML, raw text, or a PDF-like text blob and get back strongly-typed JSON rows with column metadata and CSV output — especially when you need column types (string, number, integer), units, and null counts automatically inferred. Prefer this over generic scraping endpoints when tabular structure is the primary output goal and schema conformance matters.","instructions":null,"reviewSummary":null,"reviewSummaryHighlights":null,"reviewSummaryConcerns":null,"reviewSummaryGeneratedAt":null,"activationCount":0,"lastUsedAt":null,"lastSuccessfullyRanAt":null,"lastHealthCheckAt":"2026-09-15T00:37:02.256Z","isFirstParty":false}