PDF Table Extraction
for Developers & AI Agents
Register programmatically, submit PDFs via REST or MCP, receive structured JSON or Markdown. No human steps. Fully automatable.
Three ways to integrate
Choose the approach that fits your stack.
MCP Server
Zero-code integration for Claude Desktop, Cursor, Zed, and any MCP-compatible host. Add one config block — tools appear automatically in your AI assistant.
Recommended for AI agentsREST API
Async job model — submit, poll, retrieve. Works from any language or automation platform. OpenAPI spec available for SDK generation.
Any language / platformOpenAPI Spec
Machine-readable API definition at /openapi.json. Import into Postman, generate a typed SDK, or feed directly to your AI agent.
REST API — 4-step quickstart
Register → submit → poll → retrieve. All from code, no browser required.
// 1. Register (fully automated — no human step)
const reg = await fetch('https://tableforge.ai/api/v1/auth/register', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ email: 'bot@example.com', password: 'securepass' }),
}).then(r => r.json())
const apiKey = reg.apiKey.key // store this — shown once
// 2. Submit extraction job (multipart)
const form = new FormData()
form.append('file', fs.createReadStream('report.pdf'), 'report.pdf')
form.append('mode', 'data_clean') // 2× credits — normalized output
const { jobId } = await fetch('https://tableforge.ai/api/v1/jobs', {
method: 'POST',
headers: { 'Authorization': `Bearer ${apiKey}` },
body: form,
}).then(r => r.json())
// 3. Poll until complete
let job
do {
await new Promise(r => setTimeout(r, 3000))
job = await fetch(`https://tableforge.ai/api/v1/jobs/${jobId}`, {
headers: { 'Authorization': `Bearer ${apiKey}` },
}).then(r => r.json())
} while (job.status === 'queued' || job.status === 'processing')
// 4. Retrieve structured result
const result = await fetch(`https://tableforge.ai/api/v1/jobs/${jobId}/result`, {
headers: { 'Authorization': `Bearer ${apiKey}` },
}).then(r => r.json())
console.log(`Extracted ${result.tables.length} tables from ${result.pageCount} pages`)
// result.tables[0].cells → [{ content, rowIndex, columnIndex, rowSpan, columnSpan }, ...]MCP server for Claude Desktop
Add one block to your Claude Desktop config. TableForge tools (extract_tables, check_job_status, get_job_result) appear in the tool picker automatically.
Works with Claude Desktop, Cursor, Zed, Continue, and any other host that supports the Streamable HTTP MCP transport.
Config file location: ~/.config/claude/claude_desktop_config.json (macOS/Linux) or %APPDATA%\Claude\claude_desktop_config.json (Windows)
// ~/.config/claude/claude_desktop_config.json
{
"mcpServers": {
"tableforge": {
"type": "streamable-http",
"url": "https://tableforge.ai/api/mcp",
"headers": {
"Authorization": "Bearer tf_live_YOUR_KEY"
}
}
}
}Extraction modes
| Mode | Credits | Output | Best for |
|---|---|---|---|
| table | 1× per page | JSON + Excel | Quick extraction, simple tables |
| data_clean | 2× per page | JSON + Excel | Database import, analytics pipelines |
| markdown | 2× per page | Markdown text | LLM context windows, RAG pipelines |
| layout_match | 4× per page | JSON + Excel | Legal docs, compliance, pixel-perfect fidelity |
Monthly credits reset on your billing cycle. Overage billing available on all paid plans.
API access by plan
Get your API key in 30 seconds
One POST to register. No human verification step. Pro plan and above.