Documentation

vaaya / docs / reference

Browser automation

Remote Chrome via Browserbase, driven with Playwright or Stagehand — pay per minute (0.2¢/min, $0.12/hour), no Browserbase account needed. Use it when you need to act on a page: logging into authenticated sites to extract data, filling multi-step forms (signups, checkouts, applications), testing user flows end-to-end, scraping JS-heavy SPAs a plain fetch can’t render, extracting data from sites with no API, or monitoring pages that require interaction (datepickers, dropdowns, pagination).

When to use a browser vs. alternatives

NeedCallPricePick when
Act on a page — click, type, navigate, log in, fill formsbrowserbase/create_session0.2¢/minFull browser control; nothing else can do the job.
Search results or page content by queryexa/searchNo rendering needed — see Web search.
JS-rendered scrape / crawl / extract without interactionfirecrawl/scrapeReading, not acting — see Web scraping.

browserbase/create_session

Price
0.2¢ per estimatedMinutes ($0.12/hour)
Latency
slow (session startup)
Returns
sessionId, connectUrl, paidMinutes

Creates a remote Chrome session you drive over CDP. The returned connectUrl is a WebSocket URL you connect Playwright or Stagehand to — Vaaya does not proxy the CDP traffic; you drive the browser directly.

curl -X POST https://vaaya.ai/api/run/browserbase/create_session \
  -H "Authorization: Bearer $VAAYA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"estimatedMinutes": 10, "proxies": {"country": "US"}}'

# → { "sessionId": "...", "connectUrl": "wss://...", "paidMinutes": 10 }
  • estimatedMinutes — the prepaid duration (integer ≥ 1, defaults to 1). 10 min = 2¢, 30 min = 6¢, 60 min = 12¢.
  • keepAlive — keeps the session alive longer between operations.
  • proxies — geo-proxy routing, e.g. {"country": "US"}.

browserbase/extend_session

Price
0.2¢ per estimatedMinutes — same rate as create
Params
session_id, estimatedMinutes

Top up an existing session with more prepaid minutes before it expires.

browserbase/session_status

Price
free
Params
session_id

Check whether a session is still alive and how many paidMinutes remain — useful before deciding whether to extend_session or release_session.

browserbase/release_session

Price
free
Params
session_id

Terminate a session early. No charge regardless of remaining minutes — always call this when finished so the browser slot returns to the pool.

Lifecycle

# 1) Create — pre-pay for the time you expect to need
curl -X POST https://vaaya.ai/api/run/browserbase/create_session \
  -H "Authorization: Bearer $VAAYA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"estimatedMinutes": 10}'

# 2) Drive — connect Playwright/Stagehand to the returned connectUrl
#    (out of band — Vaaya doesn't proxy the CDP traffic)

# 3) (Optional) Extend before paidMinutes runs out
curl -X POST https://vaaya.ai/api/run/browserbase/extend_session \
  -H "Authorization: Bearer $VAAYA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"session_id": "sess_...", "estimatedMinutes": 5}'

# 4) Release when done — free, returns the slot to the pool
curl -X POST https://vaaya.ai/api/run/browserbase/release_session \
  -H "Authorization: Bearer $VAAYA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"session_id": "sess_..."}'

Gotchas

  • Credit spent on unused minutes is not refunded on release — only the browser slot is returned. Estimate conservatively; extend if needed.
  • Poll session_status for free to see remaining paidMinutes before choosing between extend and release.
  • If you only need the rendered content of a page — not clicks or logins — a 1¢ firecrawl/scrape is faster and cheaper. See Web scraping.