[{"data":1,"prerenderedAt":103},["ShallowReactive",2],{"content-\u002Fbuild-with-code\u002Fapi":3,"content-doc-\u002Fbuild-with-code\u002Fapi-inline":3},{"id":4,"title":5,"body":6,"date":94,"description":95,"extension":96,"meta":97,"navigation":98,"order":94,"path":99,"seo":100,"stem":101,"__hash__":102},"content\u002Fbuild-with-code\u002Fapi\u002Findex.md","The Browser Automation API for Humans and AI Agents | axiom.ai",{"type":7,"value":8,"toc":90},"minimark",[9,23,32,38,49,54,64,72,83],[10,11,18],"infrastructure-hero",{"ctaText":12,"ctaTo":13,"description":14,"min-vh":15,"title":16,"trust":17},"Get API key","https:\u002F\u002Fcode.axiom.ai","Chrome browsers in our cloud, three layers to drive them. Start with the Step API: 20 functions that navigate, click, type, scrape, solve captchas, and call AI mid-run, so you write less code. Drop to CDP for raw control, or run whole automations over REST.\n","50","The browser API\nfor humans & AI.\n","Try for free, with 2 hours of runtime.",[19,20],"global-hero-animation",{":aura":21,":grid":22,":shapes":22,":spotlight":22},"false","true",[24,25],"feature-list",{":items":26,"description":27,"eyebrow":28,"link":29,"linkText":30,"title":31},"[{\"title\":\"Write less code\",\"description\":\"In Puppeteer or Playwright you write the mechanics yourself: waitForSelector, $$eval, click next, wait, loop. A step is that sequence already written. Pass it what it needs: click takes the button selector, scrape takes the data selector, the next-page selector, and a result count. A dozen lines come out as one.\"},{\"title\":\"Drive it from an MCP client\",\"description\":\"Give your agents hands on a real browser. The steps become tools an MCP client calls on its own: scrape a page for the data it needs, or chain a series to log in, fill a form, and read the result back. Claude, Cursor, or an agent you built yourself, all on your account key. The axiom.ai MCP server ships in the next release.\"},{\"title\":\"Mix with the other layers\",\"description\":\"Steps are ordinary async functions, so they can sit in the middle of the JavaScript you already write. Pull rows from your database and loop them through a step. Drop to raw CDP with Puppeteer or Playwright when a step doesn't cover something, then carry on with steps in the same session, on the same browser.\"},{\"title\":\"Error handling built in\",\"description\":\"The steps run on the same engine as the No-Code Tool, so they wait for elements, retry flaky actions, and time out sensibly by default. Long-running steps poll transparently until they finish.\"}]","Twenty functions that each do a whole job: navigate, click, type, solve a captcha, scrape a paginated list, run an AI prompt mid-session. Call them from Node, a CDP client, or an agent over MCP.","Start here","\u002Fbuild-with-code\u002Fapi\u002Fstep","Explore the Step API","The Step API: the No-Code Tool's engine, as functions.",[33,34],"api-code-example",{"caption":35,"example":36,"link-text":37},"Scrape 200 rows in four lines.","step","Step API docs",[39,40],"feature-grid",{":items":41,"className":42,"cols":44,"description":45,"eyebrow":46,"title":47,"variant":48},"[{\"shape\":\"cube\",\"title\":\"Chrome API\",\"bgClass\":\"iso-grid-gray-50\",\"description\":\"A CDP WebSocket to fresh cloud Chrome. Puppeteer, Playwright, or any language that speaks the protocol. Existing scripts run as-is.\",\"to\":\"\u002Fbuild-with-code\u002Fapi\u002Fchrome\",\"linkText\":\"Read more about the Chrome API\"},{\"shape\":\"integration\",\"title\":\"Orchestrate API\",\"bgClass\":\"iso-grid-gray-50\",\"description\":\"Trigger any pre-built automation, code or no-code, and manage its runs over REST. For Zapier, Make, cron, or a backend.\",\"to\":\"\u002Fbuild-with-code\u002Fapi\u002Forchestrate\",\"linkText\":\"Read more about the Orchestrate API\"}]",[43],"py-16",2,"The Step API sits between two layers: CDP below it for protocol-level control, Orchestrate above it for running no-code automations.","The other two layers","Raw control, or run what you've built.","outline",[50,51],"infrastructure-stats",{":stats":52,"className":53},"[{\"value\":\"800,000\",\"suffix\":\"+\",\"label\":\"BOTS RUN\",\"description\":\"Total bots run\"},{\"value\":\"12.5M\",\"suffix\":\"+\",\"label\":\"RUNTIME MINS\",\"description\":\"Total runtime\"},{\"value\":\"300,000\",\"suffix\":\"+\",\"label\":\"BROWSER AUTOMATORS\",\"description\":\"Total users\"}]",[],[55,56],"feature-grid-staggered",{":flat":22,":items":57,"description":58,"eyebrow":59,"link":60,"linkText":61,"title":62,"variant":63},"[{\"shape\":\"cube\",\"title\":\"Chrome API docs\",\"link\":\"\u002Fdocs\u002Fdeveloper-hub\u002Fapi\u002Fcdp\",\"linkText\":\"Read the Chrome API docs\"},{\"shape\":\"staircase\",\"title\":\"Step API docs\",\"link\":\"\u002Fdocs\u002Fdeveloper-hub\u002Fapi\u002Fstep-functions\",\"linkText\":\"Read the Step API docs\"},{\"shape\":\"integration\",\"title\":\"Orchestrate API docs\",\"link\":\"\u002Fdocs\u002Fdeveloper-hub\u002Fapi\u002Frun-automations\",\"linkText\":\"Read the Orchestrate API docs\"}]","Quickstarts, worked examples, and full endpoint references for each layer. Start with the quickstart, generate a key, and build from there.","Docs","\u002Fdocs\u002Fdeveloper-hub\u002Fapi\u002Fquickstart","Start with the quickstart","Every layer, documented.","solid",[24,65],{":items":66,"description":67,"eyebrow":68,"link":69,"linkText":70,"title":71},"[{\"title\":\"Agents build the bot\",\"description\":\"Give an agent a prompt. It authors the automation itself, with the same compiler the Builder uses.\"},{\"title\":\"Runs on the same layers\",\"description\":\"It tests its work on the same cloud browsers and reads the same run reports you do.\"},{\"title\":\"Fixes until it works\",\"description\":\"Failed run, read the errors, revise, re-run. It pulls you in when a decision needs a human, not for every retry.\"},{\"title\":\"Standard MCP tools, same key\",\"description\":\"Build, run, observe, and fix will ship as MCP tools. Any agent with an axiom.ai API key can run the loop.\"}]","Interested in what we're building? Contact support for early access.","Agents","\u002Fcustomer-support","Contact support","Coming soon: agents drive the API layers",[73,74,77],"grid-fade-wrap",{"bg":75,"color":76},"gray-to-white","default",[78,79],"call-to-action",{":shapes":80,"headline":81,"linkText":12,"linkTo":13,"text":82},"[\"cube\",\"staircase\",\"integration\"]","Get an API key and try every layer for free.\n","2 free hours of runtime. No card required.",[84,85],"cross-links",{":links":86,"className":87},"[{\"eyebrow\":\"Go deeper\",\"title\":\"Chrome API\",\"to\":\"\u002Fbuild-with-code\u002Fapi\u002Fchrome\"},{\"eyebrow\":\"Go deeper\",\"title\":\"Step API\",\"to\":\"\u002Fbuild-with-code\u002Fapi\u002Fstep\"}]",[88,89],"gray","iso-grid-gray-100",{"title":91,"searchDepth":92,"depth":92,"links":93},"",3,[],null,"One browser automation API, three layers. Drive cloud Chrome over CDP, call named step functions in Node, or trigger whole automations over REST, from your code or your AI agent via MCP.","md",{},true,"\u002Fbuild-with-code\u002Fapi",{"title":5,"description":95},"build-with-code\u002Fapi\u002Findex","NxKLT3yKkAv5HhfgZOrEPfm61rg64JeH6uroHP5Ub6M",1785947371078]