Guides / Migrating to ScreenNabster

Migrating to ScreenNabster

ScreenNabster accepts many compatible aliases on top of native field names—your existing query strings often work with minimal edits.

Overview

Many screenshot API providers use a centralized third-party host with access-key signing. ScreenNabster runs directly on your product origin (production example: https://screennabster.com) with POST https://screennabster.com/api/v1/capture and GET https://screennabster.com/api/v1/capture.

If you migrate from URLs with query keys access_key, expires (Unix seconds), and signature, ScreenNabster uses the same HMAC-SHA256 embed pattern with your dashboard ak_live_* access key plus the signing secret (see API reference). Private server calls use X-API-Key: pk_….

ScreenNabster is also available on the RapidAPI marketplace; quotas for paid tiers remain authoritatively tied to your Billing subscription.

Host and auth cheat sheet

TopicOther screenshot APIs (typical)ScreenNabster
Base URLThird-party centralized hosthttps://screennabster.com/api/v1/capture (POST body or GET query)
Server SDK / API keyOften access key + secret signingHeader X-API-Key with pk_…
Public embed URLsSigned query URLsaccess_key, expires, and signature on GET (HMAC excludes signature fragment)
Official SDKMulti-language SDKs@screennabster/sdk (Getting started) + OpenAPI-generated clients

Alias mapping table

Native ScreenNabster wins when both alias and native are sent. Rows below mirror normalizeCaptureInput semantics.

Compatible aliasScreenNabster native
formatoutput (jpeg normalized to jpg)
response_typeresponse_mode
viewport_width / viewport_heightscreen_width / screen_height
full_pagepage_full
full_page_scroll*page_full_scroll*
delaywait
viewport_devicedevice
dark_modetheme_dark
styles / scriptsinject_css / inject_js
click / hoverclick_selector / hover_selector
cache, cache_ttl, cache_keycached, cache_ttl, cache_key
pdf_paper_formatpdf_format
block_adsstrip_ads
geolocation_latitude / geolocation_longitudegeo_lat / geo_lng
block_cookie_banners / block_chats / block_trackers / block_banners_by_heuristicsfilters / strip_ads merge

Examples

Minimal GET PNG

curl
curl -G "https://screennabster.com/api/v1/capture" \
  --data-urlencode "url=https://example.com" \
  -H "X-API-Key: pk_live_your_key" \
  --output shot.png

JSON + metadata response

response_type=json is accepted as an alias for response_mode=json.

curl-json
curl -X POST "https://screennabster.com/api/v1/capture" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: pk_live_your_key" \
  -d "{\"url\":\"https://example.com\",\"response_type\":\"json\"}"

Bulk synchronous batch

Use POST https://screennabster.com/api/v1/capture/bulk with requests merged with optional options.

bulk.json
curl -X POST "https://screennabster.com/api/v1/capture/bulk" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: pk_live_your_key" \
  -d '{
    "execute": true,
    "options": { "format": "png", "viewport_width": 1440 },
    "requests": [
      { "url": "https://example.com" },
      { "url": "https://another.example", "full_page": true }
    ]
  }'

Known caveats

  • JP2 / HEIF output formats are not supported (runtime portability constraints).
  • full_page_algorithm=by_sections is accepted for compatibility; the worker primarily uses continuous Playwright full-page capture unless you negotiate a custom stitch pipeline.
  • Async jobs use ScreenNabster queue + webhook payloads (see Async jobs and webhooks); payloads and retry semantics may differ from your previous provider—migrate integration tests accordingly.

More docs