{"info":{"_postman_id":"41c5016d-d771-4de5-99a9-2c4008ffcf75","name":"BrowserGrab API","description":"<html><head></head><body><p>Screenshot any URL with a single POST request.</p>\n<p><strong>Setup:</strong></p>\n<ol>\n<li><p>Open this collection's Variables tab</p>\n</li>\n<li><p>Set <code>api_key</code> to your key from <a href=\"https://browsergrab.app/dashboard/keys\">https://browsergrab.app/dashboard/keys</a></p>\n</li>\n</ol>\n<p>All requests use <code>YOUR_API_KEY_HERE</code> and hit <code>https://browsergrab.app</code> by default.</p>\n<p>V1.0</p>\n</body></html>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[],"owner":"25858855","collectionId":"41c5016d-d771-4de5-99a9-2c4008ffcf75","publishedId":"2sBXitD7Ye","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"publishDate":"2026-04-11T23:52:52.000Z"},"item":[{"name":"Screenshot API","item":[{"name":"Basic screenshot","id":"9831222f-f25f-4f45-b5e7-3ba49e779508","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Authorization","value":"Bearer YOUR_API_KEY_HERE"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"url\": \"https://example.com\"\n}","options":{"raw":{"language":"json"}}},"url":"https://browsergrab.app/api/screenshot","description":"<p>The minimum request. Just a URL.</p>\n<p>Defaults:</p>\n<ul>\n<li>format: png</li>\n<li>width: 1280</li>\n<li>height: 800</li>\n<li>storage: cloud</li>\n<li>fullPage: false</li>\n<li>waitFor: 0</li>\n</ul>\n<p>Returns a permanent public CDN URL to the screenshot.</p>\n","urlObject":{"path":["api","screenshot"],"host":["https://browsergrab.app"],"query":[],"variable":[]}},"response":[],"_postman_id":"9831222f-f25f-4f45-b5e7-3ba49e779508"},{"name":"All options","id":"3bc1e035-628b-4435-86f2-1cad608eeca8","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Authorization","value":"Bearer YOUR_API_KEY_HERE"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"url\": \"https://example.com\",\n\n  \"format\": \"png\",\n  \"width\": 1280,\n  \"height\": 800,\n  \"fullPage\": false,\n  \"waitFor\": 0,\n  \"storage\": \"cloud\",\n\n  \"retina\": false,\n  \"darkMode\": false,\n  \"blockAds\": false\n}","options":{"raw":{"language":"json"}}},"url":"https://browsergrab.app/api/screenshot","description":"<p>Every available parameter shown with its default value. Edit what you need and delete the rest.</p>\n<hr />\n<p><strong>url</strong> (required)\nThe page to capture. Must be a valid http/https URL.</p>\n<p><strong>format</strong> — png | jpeg | webp\nOutput image format. Default: png</p>\n<p><strong>width</strong> — integer, 320–3840\nBrowser viewport width in pixels. Default: 1280. Max 1920 on Free, 3840 on Super.</p>\n<p><strong>height</strong> — integer, 240–2160\nBrowser viewport height in pixels. Default: 800.</p>\n<p><strong>fullPage</strong> — boolean\nCaptures the entire scrollable page, not just the visible viewport. Default: false.</p>\n<p><strong>waitFor</strong> — integer, 0–5000\nExtra milliseconds to wait after page load before capturing. Useful for pages with animations or lazy-loaded content. Default: 0.</p>\n<p><strong>storage</strong> — cloud | gdrive | none</p>\n<ul>\n<li>cloud: stores on BrowserGrab CDN, returns a permanent URL (Super plan)</li>\n<li>gdrive: saves to your connected Google Drive (Super plan)</li>\n<li>none: returns a base64 data URL in the response, nothing stored remotely (all plans)\nDefault: cloud</li>\n</ul>\n<p><strong>retina</strong> — boolean\n2× device pixel ratio capture (doubles resolution). Super plan only. Default: false.</p>\n<p><strong>darkMode</strong> — boolean\nForces the page into dark mode via the prefers-color-scheme media query. Super plan only. Default: false.</p>\n<p><strong>blockAds</strong> — boolean\nBlocks ads and trackers before capturing. Super plan only. Default: false.</p>\n","urlObject":{"path":["api","screenshot"],"host":["https://browsergrab.app"],"query":[],"variable":[]}},"response":[],"_postman_id":"3bc1e035-628b-4435-86f2-1cad608eeca8"},{"name":"Full page capture","id":"9c599d66-fd66-42f6-a5f5-81616c967aa8","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Authorization","value":"Bearer YOUR_API_KEY_HERE"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"url\": \"https://stripe.com\",\n  \"fullPage\": true,\n  \"format\": \"png\",\n  \"width\": 1280\n}","options":{"raw":{"language":"json"}}},"url":"https://browsergrab.app/api/screenshot","description":"<p>Captures the entire scrollable height of the page, not just the viewport. The height parameter is ignored when fullPage is true — the browser determines the full document height automatically.</p>\n","urlObject":{"path":["api","screenshot"],"host":["https://browsergrab.app"],"query":[],"variable":[]}},"response":[],"_postman_id":"9c599d66-fd66-42f6-a5f5-81616c967aa8"},{"name":"Mobile viewport (375×812)","id":"dd899463-f1dd-4efc-984b-036021a9b6df","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Authorization","value":"Bearer YOUR_API_KEY_HERE"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"url\": \"https://example.com\",\n  \"width\": 375,\n  \"height\": 812,\n  \"format\": \"png\"\n}","options":{"raw":{"language":"json"}}},"url":"https://browsergrab.app/api/screenshot","description":"<p>iPhone 14 viewport. Responsive sites will render their mobile layout at this width.</p>\n<p>Common mobile sizes:</p>\n<ul>\n<li>375×812 — iPhone 14</li>\n<li>390×844 — iPhone 14 Pro</li>\n<li>360×800 — Android standard</li>\n<li>768×1024 — iPad portrait</li>\n</ul>\n","urlObject":{"path":["api","screenshot"],"host":["https://browsergrab.app"],"query":[],"variable":[]}},"response":[],"_postman_id":"dd899463-f1dd-4efc-984b-036021a9b6df"},{"name":"Wait for animations","id":"42c30873-ebb8-4b74-934f-18518818d4df","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Authorization","value":"Bearer YOUR_API_KEY_HERE"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"url\": \"https://example.com\",\n  \"waitFor\": 2000,\n  \"format\": \"png\"\n}","options":{"raw":{"language":"json"}}},"url":"https://browsergrab.app/api/screenshot","description":"<p>Waits an extra 2000ms after page load before capturing. Use this for pages with entrance animations, charts that render after load, or lazy-loaded images.</p>\n<p>Max: 5000ms. Each millisecond counts against your quota's response time but does not cost extra captures.</p>\n","urlObject":{"path":["api","screenshot"],"host":["https://browsergrab.app"],"query":[],"variable":[]}},"response":[],"_postman_id":"42c30873-ebb8-4b74-934f-18518818d4df"},{"name":"Super — Retina + dark mode + block ads","id":"c5e865ca-5dde-4a7f-9691-e575f51b36d5","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Authorization","value":"Bearer YOUR_API_KEY_HERE"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"url\": \"https://github.com\",\n  \"format\": \"png\",\n  \"width\": 1280,\n  \"height\": 800,\n  \"retina\": true,\n  \"darkMode\": true,\n  \"blockAds\": true\n}","options":{"raw":{"language":"json"}}},"url":"https://browsergrab.app/api/screenshot","description":"<p>Super plan features — all three can be combined freely.</p>\n<ul>\n<li>retina: true — captures at 2560×1600 effective pixels (2× DPR), output image is full 2560px wide</li>\n<li>darkMode: true — forces prefers-color-scheme: dark on the page</li>\n<li>blockAds: true — blocks ads and trackers before capture for a cleaner result</li>\n</ul>\n<p>Requires Super plan. Returns 403 if used on a Free account.</p>\n","urlObject":{"path":["api","screenshot"],"host":["https://browsergrab.app"],"query":[],"variable":[]}},"response":[],"_postman_id":"c5e865ca-5dde-4a7f-9691-e575f51b36d5"},{"name":"Return as base64 (no storage)","id":"03f8e258-976a-4c80-afda-9bddb0e535cb","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Authorization","value":"Bearer YOUR_API_KEY_HERE"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"url\": \"https://example.com\",\n  \"format\": \"png\",\n  \"storage\": \"none\"\n}","options":{"raw":{"language":"json"}}},"url":"https://browsergrab.app/api/screenshot","description":"<p>Nothing is stored remotely. The response <code>data.url</code> is a data:image/png;base64,... string you can decode or drop straight into an <img /> tag.</p>\n<p>Available on all plans. Use this when you want to handle storage yourself or process the image immediately server-side.</p>\n","urlObject":{"path":["api","screenshot"],"host":["https://browsergrab.app"],"query":[],"variable":[]}},"response":[],"_postman_id":"03f8e258-976a-4c80-afda-9bddb0e535cb"},{"name":"Bulk screenshots (multiple URLs)","id":"98e00bd5-65cd-4306-9219-8a206c0e4dd9","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Authorization","value":"Bearer YOUR_API_KEY_HERE"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"urls\": [\n    \"https://example.com\",\n    \"https://github.com\",\n    \"https://stripe.com\"\n  ],\n  \"format\": \"png\",\n  \"width\": 1280,\n  \"height\": 800,\n  \"storage\": \"cloud\"\n}","options":{"raw":{"language":"json"}}},"url":"https://browsergrab.app/api/screenshot","description":"<p>Capture multiple URLs in a single request. Each URL counts as one credit against your monthly quota.</p>\n<p><strong>Two ways to send multiple URLs:</strong></p>\n<ol>\n<li><code>urls</code> array (recommended):</li>\n</ol>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{ \"urls\": [\"https://a.com\", \"https://b.com\"] }\n</code></pre>\n<ol>\n<li><code>url</code> as comma-separated string:</li>\n</ol>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{ \"url\": \"https://a.com,https://b.com,https://c.com\" }\n</code></pre>\n<p>Limits:</p>\n<ul>\n<li>Maximum 20 URLs per request</li>\n<li>All URLs must pass the same format, width, height, and storage settings</li>\n<li>The full batch is rejected if you don't have enough quota for all URLs</li>\n</ul>\n<p><strong>Bulk response shape:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"success\": true,\n  \"count\": 3,\n  \"captured\": 2,\n  \"failed\": 1,\n  \"results\": [\n    { \"url\": \"https://example.com\", \"success\": true, \"data\": { \"url\": \"...\", \"width\": 1280, \"height\": 800, \"format\": \"png\", \"storage\": \"cloud\" }, \"charged\": true },\n    { \"url\": \"https://github.com\",  \"success\": true, \"data\": { ... }, \"charged\": true },\n    { \"url\": \"https://bad-url.xyz\", \"success\": false, \"error\": \"dns_error\", \"message\": \"DNS lookup failed\", \"charged\": false }\n  ]\n}\n</code></pre>\n<p>Failed captures (DNS errors, blank pages) are <strong>not charged</strong> but do not halt the batch — the other URLs still capture normally.</p>\n","urlObject":{"path":["api","screenshot"],"host":["https://browsergrab.app"],"query":[],"variable":[]}},"response":[],"_postman_id":"98e00bd5-65cd-4306-9219-8a206c0e4dd9"},{"name":"Save to Google Drive","id":"0d3b3651-341b-48d0-84cd-2c77497fac56","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Authorization","value":"Bearer YOUR_API_KEY_HERE"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"url\": \"https://example.com\",\n  \"format\": \"png\",\n  \"storage\": \"gdrive\"\n}","options":{"raw":{"language":"json"}}},"url":"https://browsergrab.app/api/screenshot","description":"<p>Saves the screenshot directly to your connected Google Drive and returns a shareable Drive link.</p>\n<p>Requirements:</p>\n<ol>\n<li>Super plan</li>\n<li>Google Drive connected in your Account settings at <a href=\"https://browsergrab.app/dashboard/account\">https://browsergrab.app/dashboard/account</a></li>\n</ol>\n<p>Returns a standard Google Drive file URL that can be shared or embedded.</p>\n","urlObject":{"path":["api","screenshot"],"host":["https://browsergrab.app"],"query":[],"variable":[]}},"response":[],"_postman_id":"0d3b3651-341b-48d0-84cd-2c77497fac56"}],"id":"09582953-8fbf-48fe-98b4-492fce6af0ed","description":"<p>All requests hit the same endpoint: POST /api/screenshot</p>\n<p>Authentication: Bearer token via the Authorization header.</p>\n<p>All parameters except <code>url</code> are optional.</p>\n","_postman_id":"09582953-8fbf-48fe-98b4-492fce6af0ed"},{"name":"Response reference","item":[{"name":"Success response shape","id":"9b81a523-799d-4e17-b57d-b53984ea3404","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Authorization","value":"Bearer YOUR_API_KEY_HERE"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"url\": \"https://example.com\"\n}","options":{"raw":{"language":"json"}}},"url":"https://browsergrab.app/api/screenshot","description":"<p>A successful 200 response always looks like this:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"success\": true,\n  \"data\": {\n    \"url\": \"https://pub-....r2.dev/screenshots/2025-01/abc123.png\",\n    \"width\": 1280,\n    \"height\": 800,\n    \"format\": \"png\",\n    \"storage\": \"cloud\"\n  }\n}\n</code></pre>\n<p><code>data.url</code> is what you store or display. For <code>storage: none</code> it is a base64 data URL instead.</p>\n<hr />\n<p>Error responses:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{ \"error\": \"quota_exceeded\", \"current\": 15, \"limit\": 15 }\n{ \"error\": \"unauthorized\" }\n{ \"error\": \"dimension_exceeds_plan\", \"message\": \"...\" }\n{ \"error\": \"page_load_failed\", \"charged\": false }\n</code></pre>\n<p>Status codes:</p>\n<ul>\n<li>200 — success</li>\n<li>400 — bad request (invalid body or unsafe URL)</li>\n<li>401 — missing or invalid API key</li>\n<li>403 — feature not available on your plan</li>\n<li>422 — page failed to load (DNS error, blank page) — not charged</li>\n<li>429 — monthly quota exceeded</li>\n<li>500 — internal server error</li>\n</ul>\n","urlObject":{"path":["api","screenshot"],"host":["https://browsergrab.app"],"query":[],"variable":[]}},"response":[],"_postman_id":"9b81a523-799d-4e17-b57d-b53984ea3404"}],"id":"b4cd0db5-7f90-4495-afb4-b51388e56c58","description":"<p>Expected responses from the API.</p>\n","_postman_id":"b4cd0db5-7f90-4495-afb4-b51388e56c58"}],"variable":[{"key":"api_key","value":"YOUR_API_KEY_HERE"},{"key":"base_url","value":"https://browsergrab.app"}]}