Use Case

Price alerts that
don’t get blocked

Build hobby projects that survive real anti-bot systems. Start with the Request API (URL → markdown), then add proxies, CAPTCHA solving, and batching when your watch list grows.

One Request = One Signal

Use the Request API to turn a product URL into clean HTML or markdown. No browser runtime, no Playwright harness.

Stealth By Default

Realistic TLS + browser fingerprints help you avoid the “403 after 3 requests” problem common in hobbyist scripts.

Residential + Mobile Egress

Retailers and marketplaces behave differently per geo and network. Choose proxy type and location when you need it.

CAPTCHA Solving

Handle reCAPTCHA, hCaptcha, and Turnstile without wiring a third-party service into your scripts.

Batch When You Scale

When your “watch list” becomes a catalog, use batch endpoints for higher throughput and fewer round-trips.

Indie-Friendly Economics

Per-minute pricing and a free tier make it practical for side projects and hobby monitoring without surprises.

Extract a price signal

Fetch a product page as markdown and parse a price. For multiple URLs, switch to batch endpoints and run this in a scheduler.

price-alert.ts
const apiKey = process.env.BROWSERCITY_API_KEY!;const opts = { method: "POST", headers: { Authorization: `Bearer ${apiKey}` } };const res = await fetch("https://api.browser.city/v1/requests", {  ...opts,  body: JSON.stringify({ url: "https://example.com/product", markdown: true }),}).then((r) => r.json());const md = String(res.content ?? "");const match = md.match(/\$([0-9,.]+)/);if (!match) throw new Error("price not found");console.log({ price: match[1] });

Common hobby workflows

Restock alerts
Price drops
Limited releases
Job listings
Rental listings
Flight fares
Marketplace monitoring
Personal dashboards
[ 06 / 06 ] — Get Started

Start building in under a minute

Free tier. No credit card. Full stealth from day one.