browse.do

Browser Automation Without Infrastructure

Run headless Chrome at the edge—scrape websites, test user flows, generate PDFs, and capture screenshots. Puppeteer-compatible API with automatic retries.

Read the docs
index.tsbrowse.do
import { Browse } from 'browse.do' // Scrape dynamic websites at the edgeon.Schedule.every.hour(async $ => {  const page = await Browse.newPage()  await page.goto('https://example.com/prices')   // Extract data with automatic retry  const prices = await page.evaluate(() =>    Array.from(document.querySelectorAll('.price')).map(el => ({      product: el.querySelector('.title').textContent,      price: parseFloat(el.textContent)    }))  )   $.Database.insert.Prices({ source: 'example.com', data: prices })})

One of 48 primitives

browse.do sits in Agents: reason, research and act. Every .do shares one grammar, Business-as-Code, and one SDK.

Business

Goals, plans and the work itself

Agents

Reason, research and act

Workflows

Triggers, steps and functions

Data

Records, vocabulary and search

Insight

Measure, test and trace

Build

Ship from code, CLI or MCP

Frequently asked questions

Build your 1-person unicorn

Write the business. Agents run it around the clock.

Read the docs