# Kaabist > Kaabist is a web automation API: it runs tasks on websites for you, even behind a login (signing in, filling in forms, downloading files, extracting data as JSON). Your coding agent (Claude Code, Codex, Cursor) builds each task once over MCP as a versioned program; Kaabist runs it on a schedule or on an API call. When a site asks for a 2FA code, the run pauses and Kaabist emails a link to the user (or a teammate or customer they choose) and continues from its last checkpoint once the code is typed. When a site changes, Kaabist finds the moved element and proposes the fix for the user to approve. A step that submits or pays never runs twice, even after a crash. Made in Istanbul. Documentation: http://localhost:3001 Every page below in one file: https://kaab.ist/llms-full.txt ## Product - [Kaabist - Unbreakable web automation API](https://kaab.ist/index.md): Kaabist automates any website, even behind a login. Your coding agent sets up the task once; Kaabist runs it on schedule, waits for your 2FA code and keeps working when the site changes. - [Resumes where it stopped · Kaabist](https://kaab.ist/product/resume.md): When a site asks for a 2FA code, captcha or approval, Kaabist pauses the run, emails you a link to answer, and resumes the program from its checkpoint instead of starting over. - [Built by your coding agent · Kaabist MCP](https://kaab.ist/product/mcp.md): Connect Claude Code, Codex or Cursor to Kaabist over MCP. Your agent drives a real browser and its session becomes a versioned, linted, dry-run-tested program. - [Never submits twice · Kaabist side-effect fences](https://kaab.ist/product/side-effects.md): Kaabist runs submit, payment and order steps under a fence: a crashed run never repeats them, retries never go back past them, and dry runs stop right before them. - [Self-healing locators · Kaabist](https://kaab.ist/product/self-healing.md): Kaabist re-finds elements when a site changes, deterministically first, and turns every fix into a proposal you review and promote to a new program version. - [API discovery · Kaabist](https://kaab.ist/product/api-discovery.md): Kaabist finds the JSON endpoint behind a page on browser runs, verifies it, and moves later runs to the cheaper HTTP tier without changing your program. - [Sessions and schedules · Kaabist](https://kaab.ist/product/sessions-and-schedules.md): Kaabist keeps logins as sessions between jobs and runs programs on cron schedules that send an event only when the extracted data changed. ## Videos - [API discovery: video · Kaabist](https://kaab.ist/videos/api-discovery.md): Kaabist finds the JSON endpoint behind a page, checks it, and later runs read it over HTTP for one credit instead of five. A 44-second video with captions. - [Answer a waiting job from a link · Kaabist](https://kaab.ist/videos/hosted-input-page.md): A job parks on a one-time code. The person with the phone answers on a hosted page, with no account, and the job carries on. A 24-second screen recording. - [Built by your coding agent over MCP: video · Kaabist](https://kaab.ist/videos/mcp.md): Claude Code, Codex or Cursor drive a real Kaabist browser over MCP, and the session becomes a tested, published program. A 45-second video with captions. - [Take over a stuck job in the panel · Kaabist](https://kaab.ist/videos/panel-takeover.md): A job parks behind a dialog no rule can close. Take over its live browser, close it by hand, and hand the job back. A 31-second screen recording. - [Review a healed locator · Kaabist](https://kaab.ist/videos/proposal-review.md): Review the locator fix Kaabist proposed after a redesign, approve it as version 2, and run it once to be sure. A 31-second screen recording. - [Resumes where it stopped: video · Kaabist](https://kaab.ist/videos/resume.md): A job parks on a one-time code, a person answers from a hosted link, and the program continues from its checkpoint. A 45-second video with captions. - [Self-healing locators: video · Kaabist](https://kaab.ist/videos/self-healing.md): A redesign breaks a locator. Kaabist finds the element again and proposes the fix as a diff for a person to approve. A 45-second video with captions. - [Never submits twice: video · Kaabist](https://kaab.ist/videos/side-effects.md): A worker crashes mid-submit. The step's fence stops the next worker from clicking again, and a person decides. A 45-second video with captions. ## Use cases - [Scrape a website that requires login · Kaabist](https://kaab.ist/use-cases/scrape-behind-login.md): Kaabist logs in as part of a program, keeps the session between jobs, and extracts typed, validated fields from pages behind a login. - [Automate logins with 2FA · Kaabist](https://kaab.ist/use-cases/login-with-2fa.md): Kaabist pauses a job on a 2FA code, emails you a link to type it in or takes the code from your system, and resumes the program from its checkpoint. - [Forms that must submit exactly once · Kaabist](https://kaab.ist/use-cases/submit-exactly-once.md): Kaabist fences submit, payment and order steps so crashes and retries never send them twice, and dry runs stop right before them. - [Turn a website into an API · Kaabist](https://kaab.ist/use-cases/website-to-api.md): Kaabist turns a website flow into an API: a versioned program with inputs, one HTTP call, typed JSON back, and webhooks when it finishes. - [Browser automation for coding agents · Kaabist](https://kaab.ist/use-cases/coding-agents.md): Let Claude Code, Codex or Cursor explore a site in a real Kaabist browser over MCP, and keep what works as a deterministic program that runs without the agent. - [Monitor pages behind a login · Kaabist](https://kaab.ist/use-cases/monitor-behind-login.md): Kaabist runs programs on a schedule behind a login, compares the extracted fields with the last run, and sends a signed event only when they changed. ## Integrations - [Kaabist for Claude Code (MCP)](https://kaab.ist/integrations/claude-code.md): Add Kaabist to Claude Code over MCP: Claude drives a real Kaabist browser and leaves a reviewed, tested program behind. Test mode and a credit cap by default. - [Kaabist for Codex (MCP)](https://kaab.ist/integrations/codex.md): Connect Codex to Kaabist's MCP server: it drives a real browser on Kaabist and saves what works as a draft program, linted and dry-run tested. - [Kaabist for Cursor (MCP)](https://kaab.ist/integrations/cursor.md): Add Kaabist to Cursor over MCP: the agent opens real Kaabist browsers, tries extracts on live pages and writes programs you keep in your repository. - [Kaabist TypeScript SDK](https://kaab.ist/integrations/typescript.md): @kaabist/sdk: typed API methods, retries with idempotency keys, and jobs.wait with onInput and onAttention for jobs that pause for input. - [Kaabist Python SDK](https://kaab.ist/integrations/python.md): pip install kaabist: the whole Kaabist API for Python 3.11+, blocking and asyncio, typed models, and jobs.wait that answers jobs waiting for input. - [Kaabist Go SDK](https://kaab.ist/integrations/go.md): github.com/kaabist/kaab-go: the Kaabist API for Go with typed errors, idempotent retries and range-able list iterators. - [kaab CLI · Kaabist](https://kaab.ist/integrations/cli.md): The kaab command line: run jobs, push and pull programs, approve proposals and create schedules and webhooks, with exit codes for scripts. - [Webhooks · Kaabist](https://kaab.ist/integrations/webhooks.md): Signed Kaabist webhook events for jobs, schedules, proposals and drift, retried with backoff, verifiable in one call, and deliverable to Slack or Discord. ## Comparisons - [Kaabist vs Airtop](https://kaab.ist/vs/airtop.md): Both review healing as drafts; Kaabist adds pauses that wait for your 2FA code and resume, and a submit that never runs twice. Compared from Airtop's documentation. - [Kaabist vs Anchor Browser](https://kaab.ist/vs/anchor-browser.md): Both heal browser automations as reviewable drafts; Kaabist adds checkpoint resume for any program and submits that never run twice. Compared from Anchor Browser's documentation. - [Kaabist vs Apify](https://kaab.ist/vs/apify.md): Apify runs scrapers from its store or your code. Kaabist resumes programs from checkpoints and never submits twice. Compared from Apify's own documentation. - [Kaabist vs Browser Use](https://kaab.ist/vs/browser-use.md): Browser Use runs AI agents from a prompt; Kaabist resumes programs from checkpoints and never submits twice. Compared from Browser Use's own documentation. - [Browser Use alternatives](https://kaab.ist/alternatives/browser-use.md): What Browser Use's documentation covers, what it does not, and how Kaabist differs. - [Kaabist vs Browserbase](https://kaab.ist/vs/browserbase.md): Browserbase gives you remote browsers to drive; Kaabist runs whole programs that resume from checkpoints and never submit twice. Compared from Browserbase's own documentation. - [Browserbase alternatives](https://kaab.ist/alternatives/browserbase.md): What Browserbase's documentation covers, what it does not, and how Kaabist differs. - [Kaabist vs Browserless](https://kaab.ist/vs/browserless.md): Browserless hosts browsers for your scripts; Kaabist runs programs that pause for your input, resume from checkpoints, heal locators and never submit twice. Compared from Browserless's documentation. - [Kaabist vs Firecrawl](https://kaab.ist/vs/firecrawl.md): Firecrawl turns pages into data for models; Kaabist runs the logged-in, multi-step flows around it and never submits twice. Compared from Firecrawl's documentation. - [Firecrawl alternatives](https://kaab.ist/alternatives/firecrawl.md): What Firecrawl's documentation covers, what it does not, and how Kaabist differs. - [Kaabist vs writing Playwright yourself](https://kaab.ist/vs/playwright.md): Playwright gives you full control and every operational problem; Kaabist runs the same flows as programs that heal, pause for your 2FA code, resume and never submit twice. - [Kaabist vs Scrape.do](https://kaab.ist/vs/scrape-do.md): Scrape.do fetches pages through proxies and headless browsers; Kaabist runs programs that resume from checkpoints and never submit twice. From Scrape.do's docs. - [Kaabist vs Skyvern](https://kaab.ist/vs/skyvern.md): Skyvern runs AI agent workflows; Kaabist runs programs that resume from checkpoints and never submit twice. Compared from Skyvern's own documentation. - [Skyvern alternatives](https://kaab.ist/alternatives/skyvern.md): What Skyvern's documentation covers, what it does not, and how Kaabist differs. ## Glossary - [What is API discovery? · Kaabist glossary](https://kaab.ist/glossary/api-discovery.md): Finding the JSON requests a website makes behind its pages, so data can be read from them instead of from the screen. - [What does await input do? · Kaabist glossary](https://kaab.ist/glossary/await-input.md): A step that pauses a job until you, a teammate or your own system supplies a value the program cannot know in advance, such as a one-time code. - [What is a browser session? · Kaabist glossary](https://kaab.ist/glossary/browser-session.md): A saved, named login state (cookies and storage) that jobs reuse so they do not log in every time. - [What is a canary run? · Kaabist glossary](https://kaab.ist/glossary/canary-run.md): A scheduled test run of a program that checks it still works on the live site before your real jobs find out it does not. - [What is a captcha policy? · Kaabist glossary](https://kaab.ist/glossary/captcha-policy.md): What a program does when a site asks it to prove it is human: pause and wait for you, solve it, or fail. - [What is change detection? · Kaabist glossary](https://kaab.ist/glossary/change-detection.md): Running a program on a schedule and being told only when the fields you care about change. - [What is a checkpoint? · Kaabist glossary](https://kaab.ist/glossary/checkpoint.md): A named point in a program that a job can restart from, so work already done is not done again. - [What is drift? · Kaabist glossary](https://kaab.ist/glossary/drift.md): The slow change of a website away from what a program was written against, until a step or a field stops matching. - [What is a dry run? · Kaabist glossary](https://kaab.ist/glossary/dry-run.md): Running a program without carrying out its side effects, to see that it reaches them and would do the right thing. - [What is an extract schema? · Kaabist glossary](https://kaab.ist/glossary/extract-schema.md): The description of the data a program returns: each field, where it is on the page, its type and the rules it must meet. - [What is a headless browser? · Kaabist glossary](https://kaab.ist/glossary/headless-browser.md): A web browser that runs without a window, driven by a program instead of a person. - [What is a hosted resolve page? · Kaabist glossary](https://kaab.ist/glossary/hosted-resolve-page.md): A page Kaabist hosts where you, a teammate or your customer can answer what a paused job is waiting for, with no Kaabist account or integration. - [What is an idempotency key? · Kaabist glossary](https://kaab.ist/glossary/idempotency-key.md): A value sent with a request so that sending it again does not do the work again. - [What is a landmark? · Kaabist glossary](https://kaab.ist/glossary/landmark.md): A named condition that says where a program is, such as being on the login page or being logged in. - [What are locator candidates? · Kaabist glossary](https://kaab.ist/glossary/locator-candidates.md): An ordered list of ways to find the same element, tried in turn until one matches exactly one element. - [What is MCP? · Kaabist glossary](https://kaab.ist/glossary/mcp.md): An open protocol that lets AI applications such as coding agents call tools provided by other services. - [What does needs attention mean? · Kaabist glossary](https://kaab.ist/glossary/needs-attention.md): The state of a job that stopped because something got in the way that you need to decide on, kept so it can continue rather than fail. - [What is network capture? · Kaabist glossary](https://kaab.ist/glossary/network-capture.md): Reading the JSON a page receives from its own server while it loads, instead of reading what it draws. - [What is an obstacle? · Kaabist glossary](https://kaab.ist/glossary/obstacle.md): Anything that covers the page a program wants to use: a cookie banner, a newsletter dialog, a product tour, a chat bubble. - [What is pagination? · Kaabist glossary](https://kaab.ist/glossary/pagination.md): Reading a list that is split across pages, by following the next link until there is none or a limit is reached. - [What is a pick sample? · Kaabist glossary](https://kaab.ist/glossary/pick-sample.md): The value a field had when it was picked on the page, kept with the field as a permanent test. - [What is a program? · Kaabist glossary](https://kaab.ist/glossary/program.md): A versioned JSON definition of a web automation: its inputs, steps, extraction and policies. - [What is a program alias? · Kaabist glossary](https://kaab.ist/glossary/program-alias.md): A name such as production that points at one version of a program and can be moved without changing the code that runs it. - [What is a proposal? · Kaabist glossary](https://kaab.ist/glossary/proposal.md): A suggested change to a program, such as a repaired locator, that waits for you to approve it before it becomes a new version. - [What is a self-healing locator? · Kaabist glossary](https://kaab.ist/glossary/self-healing-locator.md): A way of finding an element on a page that survives when the page changes, by trying several candidates and repairing itself when all of them miss. - [What is a session probe? · Kaabist glossary](https://kaab.ist/glossary/session-probe.md): A quick check, before a job starts, that a saved login is still valid. - [What is a side-effect fence? · Kaabist glossary](https://kaab.ist/glossary/side-effect-fence.md): A guard around a step that changes something in the world, such as submitting a form or paying, so it is never done twice. - [What is a takeover? · Kaabist glossary](https://kaab.ist/glossary/takeover.md): You or a teammate stepping into a paused job's live browser to do the one thing the program could not, then handing it back. - [What is a tier ladder? · Kaabist glossary](https://kaab.ist/glossary/tier-ladder.md): The order in which Kaabist tries ways of loading a page: plain HTTP first, then a browser, then a stealth browser, stopping at the cap you set. - [What is a webhook signature? · Kaabist glossary](https://kaab.ist/glossary/webhook-signature.md): A header that proves a webhook came from the service that claims to have sent it and was not changed on the way. ## Blog - [Where the name Kaabist comes from](https://kaab.ist/blog/the-name.md): Kaabist comes from kaabits, Estonian for scraper, bent so the domain reads kaab.ist: Istanbul, and -ist, the one who does the job. The logo is a spider's two eyes. - [Why a form should never submit twice · Kaabist](https://kaab.ist/blog/never-submit-twice.md): Retries are right for most failures and wrong for a submit. How Kaabist's side-effect fences make sure a claim, an order or a payment happens once, or you decide. ## Company - [About Kaabist · Made in Istanbul](https://kaab.ist/about.md): Kaabist began as a scraper and became web automation that keeps working. The name, the spider's eyes, and what we believe. - [Security · Kaabist](https://kaab.ist/security.md): How Kaabist protects logins, sessions and data: per-organisation encryption, redaction before capture, one guarded egress, isolated browsers, audit logs, EU hosting and deletion within 24 hours. - [Use cases](https://kaab.ist/use-cases.md): What teams automate with Kaabist. - [Compare Kaabist](https://kaab.ist/vs.md): Kaabist compared with browser platforms, scraping APIs and writing it yourself. - [Integrations](https://kaab.ist/integrations.md): Coding agents, SDKs, the CLI and webhooks. - [Pricing](https://kaab.ist/pricing.md): Start free with credits every month; every plan pays the same for what runs. - [Glossary of web automation](https://kaab.ist/glossary.md): Plain definitions of the terms behind reliable web automation. - [Blog](https://kaab.ist/blog.md): Notes from Kaabist on web automation that keeps working. - [Legal](https://kaab.ist/legal.md): Kaabist's terms, policies and data processing agreement. - [Brand](https://kaab.ist/brand.md): The Kaabist name, the spider's two eyes, colours, type and voice.