Chrome Extension
BrowserGrab for Chrome
Capture any tab with Alt+Shift+S. Annotate in Studio. No API key needed.
Point it at any URL. Get back a flawless screenshot. No browser setup, no infrastructure — just clean, pixel-perfect results in milliseconds.
Request
{
"url": "https://example.com",
"format": "webp",
"width": 1280,
"height": 800,
"fullPage": false
}Response
{
"success": true,
"data": {
"url": "https://cdn.browsergrab.app/…",
"format": "webp"
}
}stripe.com captured
0.7s · 1280×800 · webp
No credit card required · 100 free screenshots / month
<2s
Avg capture time
99.9%
API uptime
4K
Max resolution
20×
Bulk per request
— How it works
REST API, TypeScript SDK, Chrome Extension — pick the integration that fits your workflow.
POST to /api/screenshot with your API key and a URL. We spin up a headless Chromium instance, render the page fully, and return a screenshot — in under 2 seconds.
curl -X POST https://browsergrab.app/api/screenshot \
-H "Authorization: Bearer bg_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"url": "https://github.com",
"width": 1440,
"height": 900,
"format": "webp",
"fullPage": true
}'
// Response
{
"success": true,
"data": {
"url": "https://cdn.browsergrab.app/abc123.webp",
"width": 1440,
"height": 5200,
"format": "webp",
"storage": "cloud"
}
}— Capabilities
Capture up to 3840×2160 with 2× Retina HiDPI rendering on Super. Standard HD up to 1920×1080 on free.
Force prefers-color-scheme: dark before capturing. Perfect for showcasing your UI in both themes.
Block common ad networks and trackers for clean, distraction-free screenshots of any page.
DNS errors, blank pages, and timeouts are never charged. Credits only consumed on a real screenshot.
Cloud CDN URL, Google Drive file, or inline base64 — choose the storage destination per request.
All three formats supported. Set quality 1–100 for JPEG and WebP to balance size and fidelity.
— Why developers choose BrowserGrab
From OG image generation to compliance archiving — BrowserGrab fits into the tools you already ship.
Marketing & SaaS
Auto-generate og:image previews for every blog post, product page, or dashboard link. Capture a rendered HTML template and serve the CDN URL as your meta tag — no design tools needed.
See how →QA & Engineering
Capture a baseline screenshot of every page in your app. On each deployment, diff against the baseline and catch layout regressions before your users do — without spinning up a browser farm.
Read the docs →Monitoring & Ops
Schedule screenshots of competitor pages, status pages, or your own production UI. Store them to cloud and alert when the visual diff crosses a threshold — a dead-simple uptime eye.
View pricing →Business Intelligence
Programmatically snapshot competitor landing pages, pricing tables, and ad creative at scale. Feed screenshots into your AI pipeline to extract insights without manual browsing.
Try bulk API →E-commerce
Capture product pages from supplier or affiliate URLs at scale and embed the screenshot directly into your catalog. Build rich visual search indexes without manual photography.
View SDK →Legal & Compliance
Capture timestamped, pixel-perfect screenshots of web content for compliance audits, DMCA notices, or legal evidence. Store to cloud CDN with immutable URLs and creation timestamps.
Start free →— Annotation Studio
BrowserGrab Studio lets you draw, highlight, blur, and label directly on any screenshot — no Figma, no Photoshop. Open any cloud screenshot in Studio with one click.
Freehand pen
Draw at any size & color
Shapes & arrows
Rect, ellipse, arrow tool
Text labels
Click to annotate anywhere
Blur & highlight
Redact or call out regions
— New Feature
Just shippedSend up to 20 URLs in a single request. Each URL captures concurrently and counts as one credit — no batching logic on your end.
// ❌ 3 requests, 3 round-trips
await fetch("/api/screenshot", {
body: JSON.stringify({
url: "https://stripe.com"
})
});
await fetch("/api/screenshot", {
body: JSON.stringify({
url: "https://github.com"
})
});
await fetch("/api/screenshot", {
body: JSON.stringify({
url: "https://vercel.com"
})
});// ✅ 1 request, captured concurrently
await fetch("/api/screenshot", {
body: JSON.stringify({
urls: [
"https://stripe.com",
"https://github.com",
"https://vercel.com",
// ...up to 20
],
format: "png",
storage: "cloud"
})
});{
"success": true,
"count": 3, "captured": 3,
"results": [
{
"url": "https://stripe.com",
"success": true,
"data": { "url": "https://cdn..." }
},
// ... 2 more results
]
}Failed URLs don't block the batch
If one URL fails (DNS error, blank page), the rest still capture. Failed captures are not charged.
Comma-separated shorthand
Send "url": "a.com,b.com,c.com" as a shortcut — no array needed.
Works in the dashboard tester
Paste multiple URLs separated by commas or newlines in the Screenshot Tester to try it right now.
— Pricing
Start free. Upgrade when you need more power.
Test the waters
For personal projects
For indie devs & small teams
High-volume production
Need more than 25,000 screenshots/month? Contact us for enterprise plans.
Postman Collection
Every endpoint pre-wired
Import our ready-to-run Postman collection. All endpoints, example bodies, and real responses — run them immediately without writing a line of code.
Open in PostmanTypeScript SDK
Zero dependencies
Install the official npm package and start capturing in seconds. Full TypeScript types, auto-retry, and typed error codes built in.
Available across the developer ecosystem