Documentation
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
| Need | Call | Price | Pick when |
|---|---|---|---|
| Act on a page — click, type, navigate, log in, fill forms | browserbase/create_session | 0.2¢/min | Full browser control; nothing else can do the job. |
| Search results or page content by query | exa/search | 1¢ | No rendering needed — see Web search. |
| JS-rendered scrape / crawl / extract without interaction | firecrawl/scrape | 1¢ | Reading, 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_statusfor free to see remainingpaidMinutesbefore choosing between extend and release. - If you only need the rendered content of a page — not clicks or logins — a 1¢
firecrawl/scrapeis faster and cheaper. See Web scraping.