Build browser bots
A bot is just a script that does the browser work you would otherwise do by hand. It clicks, types, scrapes, and downloads, on a schedule, while you do something better. The word sounds dramatic, but most useful bots are wonderfully boring. There are three ways to start, with no code, with code, or with a Claude skill.
What I mean by a bot
A bot is a set of browser steps that runs on its own. It opens a page, clicks what you would click, types what you would type, reads what you would read, and saves the result. One bot might fill a form, another might pull a daily report, another might move data from one tool to the next. A testing bot might run through a sign-up flow on a schedule to check it still works. Whatever the task, a bot is just you, automated, doing the same thing without getting bored or making typos.
Most bots are boring, and that is the point
The word bot does a lot of heavy lifting. People hear it and think of spam, scrapers, and click farms. The bots most people actually need are nothing like that. They fill a timesheet, download an invoice, check a price, update a record. Dull, repetitive, and exactly the work a person should not be doing by hand.
There is a line, and it matters. A good bot works at a reasonable pace, on sites and data you are allowed to use, and within a site's terms. A bad bot hammers a server, fakes signups, or scrapes behind a login it has no right to. axiom is built for the boring, useful kind, and the same care that keeps a bot reliable also keeps it a good web citizen.
Who this is for
This is for anyone with a browser task they do too often. Pulling the same report, filling the same form, copying data between the same two tools every week. You do not want to learn a programming language to win an hour back, you just want the boring part handled. No-coders and coders both, since you can build a bot without code and drop into code when you want.
How I'd approach it
Pick one task and one bot. Do not try to automate your whole week on day one. Take the thing you do most often, write down the steps you take by hand, and build those. Run it on real data once and watch it work. When it is solid, set it on a schedule. Then build the next one.
One bot, one task, proven before you trust it. That is the order that actually sticks. I would lay out the first draft with Build with description.
Build a bot from a description
Describe the task in plain words in the Chrome extension and it builds the steps for you. Give it a few short lines, check what it made, and run it. Explore no-code. Note: Build from description is coming very soon. In the meantime you can still use the no-code builder.
To the right is an example. Describe the task and let the AI lay out the steps of your bot.
Chrome extensionInstructions
- Go to the dashboard and log in30 / 500
- Read the open tasks on the page31 / 500
- Update each one from a Google Sheet35 / 500
- Save the change15 / 500
- Move to the next task21 / 500
Build a bot in code
Build with code. If you would rather script it yourself, this is the path. Explore code
Connect Playwright (or Puppeteer) to our cloud Chromium and write the same scripts you'd run locally, without managing the browser.
Code toolimport { chromium } from "playwright";
const browser = await chromium.connectOverCDP(
`wss://cdp-lb.axiom.ai/?token=${process.env.AXIOM_API_KEY}`
);
try {
const context = browser.contexts()[0];
const page = context.pages()[0] ?? await context.newPage();
// Log in once
await page.goto("https://example.com/login");
await page.fill("#email", process.env.SITE_EMAIL);
await page.fill("#password", process.env.SITE_PASSWORD);
await page.click("button[type=submit]");
// A bot is just these steps, repeated for every item in a queue
await page.goto("https://example.com/queue");
const tasks = await page.$$(".task");
for (let i = 0; i < tasks.length; i++) {
await page.goto("https://example.com/queue");
await page.$$(".task").then(items => items[i].click());
await page.waitForSelector(".task-detail");
await page.click(".mark-done");
await page.waitForSelector(".done");
}
} finally {
await browser.close();
}
Build with a Claude skill
Build no-code or code bots with a skill.
Add the Claude skill and describe the task. It builds the bot for you, no-code or code, the boring repetitive kind that just gets the work done.

What can a bot do?
Most browser work. A couple of cases worth knowing first.
Works well
- Filling and submitting forms
- Pulling reports and exports
- Moving data between web apps
- Updating records on a schedule
- Checking prices or status
- Testing a web flow end to end
Harder
- Sites with strong bot detection
- 2FA and captcha-gated logins
- Tasks that need real human judgment
Don't try
- Spam, fake signups, or click farms
- Scraping behind a login you have no right to
- Anything against a site's terms
What I'd watch out for
A bot is only as reliable as the page it runs on. Here is what I would watch for.
Build one bot at a time
The fastest way to give up is to automate everything at once. Build one bot that does one task, run it for a week, then build the next. Small and proven beats big and broken.
Sites change, bots break
A bot depends on the page staying roughly the same. When a site updates its layout, repick the element with the selector tool, or describe the change to Claude and have it patch the bot. Plan for it, it is the nature of the web.
Be a good bot
Run at a human pace, on sites and data you are allowed to use, and within a site's terms. A bot that hammers a server or fakes activity gets blocked, and rightly so.
Login and sessions
If a bot needs to be signed in, store the cookies so the session carries over, or sign in as a step. Decide which before you schedule it.