Tabstack - Web Data and Browser Automation APIs<br>Skip to content
Latest Update·Tabstack on Stripe Projects
Managed Web API<br>Extract data and automate the web in one API call<br>Pass a URL, a schema, a question, or a task. No LLM, browser, or pipeline to manage; it all runs on Tabstack. You get structured data, cited answers, or completed browser tasks in minutes. Never sold, never trained on.<br>Start for free →Read the docs<br>✓10,000 free credits✓Never trained on✓No credit card required
/extract/json
Request<br>url:nike.com/t/pegasus-premium-womens-road-running-shoes-OHKEqA2b/HQ2593-004<br>schema:{ name, price, sizes: [{ size, in_stock }] }
Response<br>matches your schema<br>Nike Pegasus Premium$220<br>sizes<br>W 7 / M 5.5in stock<br>W 8 / M 6.5sold out<br>W 9 / M 7.5in stock
✓ One call. Down to per-size stock.
API Endpoints<br>Every web interaction your agent or stack needs.
/extract/json/extract/markdown/generate/json/research/automate
POST /extract/json
const data = await client.extract.json({<br>url: 'https://news.ycombinator.com',<br>json_schema: { posts: [{ title: 'string', points: 'number' }] }<br>})
JSON RESPONSE<br>"posts": [<br>{ "title": "Postgres tips", "points": 842 },<br>{ "title": "Why Rust won", "points": 511 },<br>{ "title": "SQLite at scale", "points": 307 }
TypeScript SDKPython SDKMCPCLI<br>Add to any agent in 30 seconds.
extract.ts<br>TypeScriptPythonCLI<br>import Tabstack from '@tabstack/sdk'
const client = new Tabstack()
const { jobs } = await client.extract.json({<br>url: 'https://www.google.com/about/careers/applications/jobs/results',<br>json_schema: {<br>jobs: [{ title: 'string', location: 'string' }]<br>})
// jobs →<br>// [<br>// { title: 'Application Engineer', location: 'Sunnyvale, CA' },<br>// { title: 'Staff Data Scientist', location: 'Kirkland, WA' }<br>// ]
/extract + /generate<br>Stop building the extraction layer. Just call the endpoint.<br>Define the structured output your agent or stack needs and call one endpoint. The reasoning, rendering, and schema enforcement all happen before the response comes back, so you ship the feature instead of maintaining the pipeline under it.<br>Features<br>✓Clean Markdown from any URL<br>✓Schema-matched JSON returned inside the call<br>✓Reasoned output from your instructions, not just field extraction
Extract structured data →
/research<br>Run a research agent with cited answers in a single API call.<br>Ask a question and get back a synthesized answer with every claim cited to its source. Source selection, reading, synthesis, and citation all happen inside the call, so you ship a research agent your users can trust instead of building the backend that makes one work.<br>Features<br>✓Streams results over SSE<br>✓Inline citations on every claim<br>✓Answers from the live web, not a pre-indexed cache
Get cited answers →
research.ts<br>TypeScriptPythonCLI<br>import Tabstack from '@tabstack/sdk'
const client = new Tabstack()
const stream = await client.agent.research({<br>query: 'Key risks in CRE lending right now?',<br>mode: 'fast'<br>})
for await (const event of stream) {<br>if (event.event === 'complete') {<br>console.log(event.data.report) // synthesized answer<br>console.log(event.data.metadata.citedPages) // cited sources
// event.data.report →<br>// "CRE lending faces tighter capital rules [1]<br>// and rising office vacancies [2]."<br>// [1] federalreserve.gov [2] spglobal.com
automate.ts<br>TypeScriptPythonCLI<br>import Tabstack from '@tabstack/sdk'
const client = new Tabstack()
const stream = await client.agent.automate({<br>task: `Book the cheapest one-way SFO to NYC nonstop this Friday,<br>no early departure, and no rush-hour landing`,<br>url: 'https://flights.example.com'<br>})
for await (const event of stream) {<br>if (event.event === 'task:completed') {<br>console.log(event.data.finalAnswer)
// event.data.finalAnswer →<br>// "Delta DL 412 · $228, one-way nonstop.<br>// Departs 12:35p, lands 8:55p, clear of rush hour.<br>// Selected, ready to book."
/automate<br>Automate the web without running browser infrastructure.<br>Describe a task in plain language and Tabstack carries it out on the live page: navigating, clicking, filling forms, and completing multi-step flows on sites you don't control. The browser, the model, and the orchestration all run on Tabstack, so your stack or agent can act on the web without provisioning a browser or wiring in an LLM.<br>Features<br>✓Pauses for human input with interactive mode<br>✓Navigates, clicks, and fills forms on JS-heavy pages<br>✓Powered by Pilo, our open-source browser engine that uses 60-80% fewer tokens than screenshots
Automate browser tasks →
What people build<br>From endpoint to product.<br>Real products, built on a handful of calls instead of a data pipeline.
Competitive Intelligence Dashboards<br>Track competitor pricing, packaging, and positioning on a schedule. One call returns schema-matched JSON, so a live dashboard stays current without anyone copy-pasting from a browser.<br>/extract/json/generate/json
Lead Enrichment Pipelines<br>Turn a raw domain into headcount, tech stack, funding, and ICP fit. Enrich every inbound lead inside your pipeline instead of wiring...