Web automation API

Automate any website.It keeps working when the site changes.

Sign-ins, forms, downloads and data, built once. When a page moves a button, Kaabist finds it again, finishes the run, and asks you to approve the fix.

Start free
Connect your coding agent: claude mcp add --transport http kaab https://mcp.kaab.ist/mcp
  • Free to start
  • EU region
  • Signed webhooks

acmeRuns4182

Live
supplier-invoices@3looking
  1. sessionacme restored · signed in0.2 s
  2. goto/invoices0.9 s
  3. click#export-btn not found · page changed0.4 s
  4. healedbutton "Export" · fix waits for approval1.1 s
  5. extract2 fields · schema valid0.3 s
  6. webhooksigned · 2000.1 s
outputtyped
{
  "total": {
    "amount": 4210.00,
    "currency": "EUR"
  },
  "due": "2026-11-15"
}

status succeededheals 1duration 3.0 s

Works with
  • Claude Code
  • Codex
  • Cursor
  • TypeScript SDK
  • Python SDK
  • Go SDK
  • kaab CLI
  • Webhooks

Why it doesn’t break

Most automation breaks the week a site ships a redesign. Kaabist is built for the weeks after: it resumes where it stopped, never repeats a payment, and runs the same program however you built it.

  1. Fig 0.1

    Resumes where it stopped

    The site asks for a code. You get a link, type it, and the run picks up at the same step.

    Learn more about Resumes where it stopped
  2. Fig 0.2

    Never submits twice

    A crash halfway through a payment never pays twice. The run stops at the fence and you decide.

    Learn more about Never submits twice
  3. Fig 0.3

    Built your way

    In the visual builder, by your coding agent, or as JSON. The same program, the same guarantees.

    Learn more about Built your way

Self-healing

Sites change. Your automation doesn’t.

Every step keeps a picture of what it clicked. When the page moves, Kaabist ranks what is there now, uses the closest match to finish the run, and keeps the old locator until you approve the new one.

How healing works

last run · Oct 30snapshot

FilterExport CSV

today · Nov 2snapshot

FilterColumnsPrintExport

candidates for step 2match

  1. role=button name="Export"0.97
  2. text="Export"0.91
  3. .toolbar button:last-child0.64
  4. a[href*=export]0.22
Approve fixKeep old locatorprogram stays at @3 until you choose
Signed webhooks

Every result reaches your server, retried until it lands.

Take over anytime

Watch a run live and step in when you want.

Learn more about Take over anytime
Typed data

Prices, dates and links come back parsed and checked, with a warning when a value looks wrong.

Warned before it breaks

Canary runs and fill rates notice a changed site before your own runs fail.

Learn more about Warned before it breaks
Popups out of the way

Cookie banners, modals and product tours are closed before they block a click.

Dry runs and test keys

Try a program up to its first submit, or with test keys on their own small daily quota.

Batches

Send up to 1,000 inputs in one call and follow them as one batch.

Finds the hidden API

Spots the JSON behind the page and skips the browser next time.

Learn more about Finds the hidden API
Bring your own

Use your own proxies, LLM or captcha solver, and that line leaves your bill.

Stays signed in

Logs in once, runs on a schedule, and tells you only when something changed.

Learn more about Stays signed in

With your coding agent

One line to connect. Your agent does the rest.

Your agent writes the program, tests it and schedules it. What you get back is a versioned program you can read, diff and run from any SDK.

Connect over MCP

terminalclaude code

$ claude mcp add --transport http kaab https://mcp.kaab.ist/mcp
✓ kaab connected

> Every Monday, get the total and due date
  from portal.northwind.example

  kaab  opened the portal, signed in with session acme
  kaab  wrote supplier-invoices@1 · 3 steps
  kaab  test run passed · schema valid
  kaab  scheduled Mondays 07:00 Europe/Istanbul

supplier-invoices@1program.json

{
  "kaab": "1",
  "name": "supplier-invoices",
  "options": { "session": "acme" },
  "steps": [
    { "goto": "https://portal.northwind.example/invoices" },
    { "click": "#export-btn" },
    { "extract": {
      "total": { "selector": "#sum-total", "type": "money" },
      "due":   { "selector": "#sum-due", "type": "date" }
    } }
  ]
}

Tech specs

What’s inside the box. The limits you would ask about before you build on it.

tiers: http, browser, stealth
3
steps per program
200
per download, response or PDF
64 MB
inputs per batch call
1,000
Regions
eu, us
Engines
Chromium; Firefox on the stealth tier
Program size
256 KB, nesting depth 3
Results
JSON response or signed webhook
SDKs
TypeScript, Python, Go, CLI, REST, MCP
Viewport
1280 × 800, desktop or mobile profile

Changelog

Recently shipped. The latest four.

  1. Virus scan keeps up with large PDFs

    Downloads and PDFs up to 64 MB are scanned before they reach you.

  2. Model tokens priced per model

    Input and output tokens show up apart on your bill, each at its model's own price.

  3. 64 MB downloads and responses

    The cap for downloads, responses and PDFs went up to 64 MB.

  4. Sturdier PDF tables

    read_pdf keeps overprinted headers and single-cell rows inside a table, and drops a stray row of column numbers.

Questions

You were going to ask. So here’s the answer.

What does Kaabist do?

It runs your website tasks (signing in, filling in forms, downloading files, pulling out data) and keeps them working when the site changes.

Do I need to write code?

No. Click through the site in the visual builder, or tell your coding agent what you need. If you prefer code, write the program as JSON and use the API, SDKs or CLI.

Can I see and change what it does?

Yes. A program is a list of steps and the same JSON, versioned with a diff. Edit either in the builder and test a step before you publish.

What about 2FA codes?

The run pauses and Kaabist emails a link to you, or to a teammate or customer you choose. Type the code and it continues.

Can a retry submit a form twice?

No. If something crashes mid-submit, Kaabist stops and asks you instead of clicking again.

Bring your hardest site.Free to start.

Opening soon

Kaabist is getting ready for launch. The panel and the status page open on launch day. The docs are open already.

Read the docs