POST /websitescreenshot
Example Request
curl -X POST "https://vebapi.com/api/websitescreenshot" \
-H "X-API-KEY: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"jobId": "test-job-00012123",
"url": "https://vebapi.com",
"viewport": {
"width": 1920,
"height": 1080
},
"fullPage": true,
"format": "png",
"waitUntil": "domcontentloaded",
"blockCookieBanners": true,
"hideOverlays": true,
"loadLazy": true,
"scrollStep": 800,
"scrollDelayMs": 200,
"maxScrolls": 30,
"hideSelectors": "#intercom-container,.drift-frame",
"hideMode": "both",
"delayMs": 4000
}'
Response
{
"jobId": "test-job-00012123",
"contentType": "image/png",
"bytes": 1763986,
"url": "https://screenshotapi.vebapi.com/cdn/79b8xxxxxxxxxxxxxxxxxxxxxxx2a3f3.png",
"expiresAt": "2025-12-31T19:37:39.512Z",
"expiresInSeconds": 86400
}
๐ธ VebAPI — Website Screenshot API
Capture high-quality screenshots of any public website with one POST request. Perfect for ๐ SEO tools, ๐งช QA, ๐ก๏ธ monitoring, and ๐จ previews.
๐ Endpoint
| Method | POST |
| URL | https://vebapi.com/api/websitescreenshot |
๐ Authentication
All requests must include your API key:
| Header | X-API-KEY |
| Value | YOUR_API_KEY |
๐งพ Required Headers
| Header | Required? | Description |
|---|---|---|
X-API-KEY |
โ Yes | Your VebAPI API key |
Content-Type |
โ Yes | application/json |
๐งช Example cURL Request
curl -X POST "https://vebapi.com/api/websitescreenshot" \
-H "X-API-KEY: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"jobId": "test-job-00012123",
"url": "https://vebapi.com",
"viewport": { "width": 1920, "height": 1080 },
"fullPage": true,
"format": "png",
"waitUntil": "domcontentloaded",
"blockCookieBanners": true,
"hideOverlays": true,
"loadLazy": true,
"scrollStep": 800,
"scrollDelayMs": 200,
"maxScrolls": 30,
"hideSelectors": "#intercom-container,.drift-frame",
"hideMode": "both",
"delayMs": 4000
}'
๐ฅ Request Body
โ Required Parameters
| Field | Type | Description |
|---|---|---|
jobId |
string | Unique identifier for tracking this request |
url |
string (URL) | The webpage URL to capture |
โ๏ธ Optional Parameters
๐ฅ๏ธ Viewport
| Field | Type | Default | Description |
|---|---|---|---|
viewport.width |
integer | 1280 | Browser width |
viewport.height |
integer | 800 | Browser height |
๐ผ๏ธ Screenshot Options
| Field | Type | Default | Description |
|---|---|---|---|
fullPage |
boolean | false | Capture full page by scrolling |
format |
string | png | png, jpg, jpeg, webp |
waitUntil |
string | domcontentloaded | Page load strategy (example: load, networkidle) |
delayMs |
integer | 0 | Extra wait before screenshot (ms) |
๐งน Cleanup & Hiding Elements
| Field | Type | Default | Description |
|---|---|---|---|
blockCookieBanners |
boolean | false | Best-effort cookie banner dismissal |
hideOverlays |
boolean | false | Hides common overlays (chat widgets, modals) |
hideSelectors |
string | "" | CSS selectors to hide (comma-separated) |
hideMode |
string | both | css, dom, or both |
๐งฒ Lazy Loading & Scrolling
| Field | Type | Default | Description |
|---|---|---|---|
loadLazy |
boolean | false | Scrolls to load lazy content before capture |
scrollStep |
integer | 800 | Scroll distance per step |
scrollDelayMs |
integer | 200 | Delay between scroll steps (ms) |
maxScrolls |
integer | 30 | Max scroll iterations (used with loadLazy / fullPage) |
๐ค Example Response
{
"jobId": "test-job-00012123",
"contentType": "image/png",
"bytes": 35585,
"url": "https://screenshotapi.vebapi.com/cdn/f813df3d8d6c4103c7944cde0430e168.png",
"expiresAt": "2025-12-31T14:30:23.341Z",
"expiresInSeconds": 86400
}
๐งพ Response Fields
| Field | Description |
|---|---|
jobId |
Echoes your request jobId |
contentType |
MIME type of the generated image |
bytes |
Image size in bytes |
url |
Temporary download URL for the screenshot |
expiresAt |
When the URL expires |
expiresInSeconds |
Seconds until expiration (usually 86400) |
โก Performance
- โฑ๏ธ Typical processing time: 5–15 seconds
- ๐ Full-page screenshots may take longer
- ๐ง Heavy JavaScript websites can increase capture time
๐ซ Limitations & Notes
- โ ๏ธ CAPTCHA-protected pages (Google, Bing) may fail depending on protection and volume
- ๐ Screenshot URLs are temporary (usually 24 hours)
- ๐ฆ Excessive requests may be rate-limited (
429) - ๐ Only publicly accessible pages can be captured
โ Error Codes
| Status | Meaning | What to do |
|---|---|---|
400 |
Invalid input | Fix request body (URL, types, values) |
401 |
Unauthorized | Check your X-API-KEY |
429 |
Rate limited | Reduce concurrency and retry later |
500 |
Internal error | Retry; if persistent, contact support |
Example Error JSON
{
"error": "API request failed",
"status": 429
}