# 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.

Canonical: https://browse.do/

## In code

```ts
import { Browse } from 'browse.do'

// Scrape dynamic websites at the edge
on.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 })
})
```

## Frequently asked questions

### How does browse.do compare to Puppeteer or Playwright?

Browse.do wraps Chromium with Puppeteer-compatible API but runs at the edge with zero infrastructure. No Docker containers, no server management, no cold start delays (sub-2s). Automatic proxy rotation, anti-bot protection, and retry logic built-in. Run at 300+ locations globally vs single-region servers. Cost: $0.01 per minute of browser time vs $0.10+ for cloud VMs. 100% API compatible—migrate existing Puppeteer scripts in minutes.

### Can I bypass anti-bot protection like Cloudflare, DataDome?

Yes. Built-in stealth mode disables automation signals (navigator.webdriver, Chrome DevTools Protocol traces). Use residential proxy rotation (10M+ IPs), randomized user agents, realistic mouse movements, and human-like timing delays. Solve CAPTCHAs automatically via 2Captcha, Anti-Captcha integration. Success rate: 90%+ for standard anti-bot systems. Cloudflare challenges: 85%, DataDome: 75%, reCAPTCHA v2: 95%. Respects robots.txt and rate limits—ethical scraping by default.

### What about performance and resource limits?

Each browser instance gets 2GB RAM, 2 vCPU cores, and 60-second max execution time (extendable to 15 minutes). Parallel execution: up to 100 concurrent browsers per account. Page load timeout: 30s default, configurable. Network bandwidth: unlimited. Storage: 500MB per instance for downloads/screenshots. Memory-efficient: Only load required browser features. Chrome DevTools Protocol for debugging. Metrics: CPU usage, memory consumption, network requests tracked automatically.

### How do I scrape sites requiring authentication?

Multiple authentication methods: (1) Cookie injection from manual login, (2) Credential autofill via page.type(), (3) Session token reuse, (4) OAuth flow automation. Maintain sessions across requests with persistent browser contexts. Handle 2FA with TOTP generator integration. Store credentials securely with automatic encryption. Example: Login once, save cookies, reuse for 1000+ requests. Session management handles token refresh automatically.

### Can I use browser automation for testing?

Yes. Full integration with Vitest, Jest, Playwright Test. Run visual regression tests with screenshot diffing (pixel-perfect comparison). Test across multiple browsers (Chrome, Firefox, Safari) and viewports (mobile, tablet, desktop). Parallel test execution: 10x faster CI/CD. Generate test reports with screenshots, videos, and traces. Flaky test detection with automatic retries. Assertion library for DOM elements, network requests, console logs. Average test suite: 100 tests in <2 minutes.

## Part of Platform.do

browse.do is one of the primitives of Platform.do, in the Agents layer (reason, research and act). Every .do shares one grammar, Business-as-Code, and one SDK.

- What is Business-as-Code? https://platform.do/business-as-code
- Platform.do: https://platform.do/
- Docs: https://docs.platform.do
