Skip to content

Screenshot API for developers

Turn any URL into an image, hosted and ready to share

One API call captures any web page in a real browser, clears away cookie banners and chat widgets, and hosts the PNG on a global CDN. Pay per capture, from $0.05.

Read the docs
  • 2 free credits on sign up
  • No subscription
  • Sign in with Google
example.com/pricing
request.json
POST /api/screenshots/create

{
  "url": "example.com/pricing",
  "token": "YOUR_API_TOKEN",
  "options": {
    "fullPage": true,
    "themeMode": "dark"
  }
}
per hosted screenshot
$0.05
largest width and height
10,000 px
capture options
19
captures in parallel
3
free credits to start
2

Features

Everything a screenshot API should handle

Built for the messy real web: cookie walls, lazy loading, dark modes and pages that never quite stop loading.

  • Full page or exact viewport

    Capture just the visible viewport or the whole scrollable page, at any size up to 10,000 pixels.

    widthheightfullPage
  • Hosted on a global CDN

    Stored captures get a permanent, ready to share link with unlimited bandwidth. No bucket to set up.

    storage
  • Cookie banners cleared

    Consent popups, cookie walls and chat widgets are removed before the shot, from OneTrust and Didomi to Intercom and HubSpot.

    automatic
  • Light, dark or auto

    Render the page in the color scheme you need, for every site that supports a dark mode.

    themeMode
  • Wait for the right moment

    Capture on load, DOM ready, network idle or first commit, then add up to 60 seconds of extra wait.

    takeScreenshotWhenwaitBeforeScreenshot
  • Lazy images and videos loaded

    The page is scrolled end to end so lazy content loads, videos show a real frame, and broken ones fall back to their poster.

    automatic
  • Inject your own JS and CSS

    Hide elements, open a menu or restyle the page right before the capture, even on sites with a strict security policy.

    scriptstylesbypassCSP
  • Any device and locale

    Set the user agent, touch support and locale to see the page as a phone or as a visitor from another country.

    userAgenthasTouchlocale
  • Custom headers and referer

    Send cookies, authorization headers or a referer to capture pages that sit behind your own login.

    extraHTTPHeadersreferer
  • Full control of the browser

    Switch off JavaScript, service workers, animations or the network for a clean and predictable render.

    allowJsallowServiceWorkersallowAnimationsoffline
  • Base64 when you skip hosting

    Turn storage off and get the image straight in the response for a quarter of a credit.

    storage: false
  • A dashboard for every capture

    See the status and preview of every screenshot, download it or copy its link, and manage credits and your token.

    dashboard

Banners and widgets removed automatically before every capture

  • OneTrust
  • Didomi
  • CookieYes
  • iubenda
  • Osano
  • Termly
  • TrustArc
  • Quantcast
  • Intercom
  • Drift
  • HubSpot
  • Crisp
  • Tawk.to
  • Zoho SalesIQ
  • LiveChat
  • Help Scout

How it works

From sign in to first screenshot in three steps

  1. 1

    Sign in with Google

    Create your account in one click. It starts with 2 free credits.

  2. 2

    Copy your API token

    Find it on your Account page, and regenerate it whenever you need a new one.

  3. 3

    Send a URL

    POST the page address and your token. The answer carries the hosted link and the image itself.

Under the hood

What happens in one capture

Every request runs the same six steps in a real browser, and the whole job is capped at two minutes. If anything fails, the credits go back to your account.

  1. 1

    Open a real browser

    A fresh Chromium tab starts with your viewport, color scheme, user agent, locale, touch support and headers.

    widthheightthemeModeuserAgent
  2. 2

    Load the page

    The page loads until the moment you pick, from the first commit to network idle, with a one minute limit.

    takeScreenshotWhenreferer
  3. 3

    Wake lazy content

    It scrolls from top to bottom so lazy images load, plays each video for a frame and swaps broken ones for their poster.

    automatic
  4. 4

    Clean up the page

    Cookie banners, consent popups and chat widgets are hidden, full screen overlays removed and scrolling unlocked.

    automatic
  5. 5

    Apply your touches

    Your script and styles run, the extra wait you asked for passes, and late banners are cleared once more before the shot.

    scriptstyleswaitBeforeScreenshot
  6. 6

    Capture and host

    A PNG of the viewport or the full page is uploaded to the CDN and sent back as a link and as base64.

    fullPagestorage

The API

One endpoint. One JSON body.

Send the URL, your token and any options. The response gives you a hosted PNG link and the image as base64.

  • Works from any language that can send JSON
  • Open to calls from any origin
  • The same success, code, message and data envelope on every answer
  • Clear errors for missing fields, low credits and busy accounts
  • Credits come back automatically when a capture fails
Read the full API reference
Terminal
curl -X POST https://url2image.modulify.website/api/screenshots/create \
  -H "Content-Type: application/json" \
  -d '{
    "url": "example.com",
    "token": "YOUR_API_TOKEN",
    "options": { "width": 1440, "height": 900, "fullPage": true }
  }'
200 OK
{
  "success": true,
  "code": 200,
  "message": "Screenshot was generated.",
  "data": {
    "scrUrl": "https://.../screenshots/.../8f3c2a91d4e5b6c7.png",
    "scrBase64": "iVBORw0KGgoAAAANSUhEUgAA..."
  }
}

For the details people

19 options, every one of them optional

Sensible defaults out of the box, and a switch for everything when a page needs special care.

Pricing

Pay for what you capture

20 credits cost $1. Buy between 20 and 5,000 at a time and spend them whenever you like.

Price calculator

500

205,000
You pay
$25.00
Hosted screenshots
500
Or without storage
2,000

Hosted screenshot

$0.05

PNG on the CDN with a shareable link and unlimited bandwidth.

1 credit

Without storage

$0.0125

The image comes back as base64 only, nothing is hosted.

0.25 credits

To get started

Free

Added to every new account when you first sign in.

2 credits
  • Every capture option included
  • Credits returned when a capture fails
  • Secure card payments with Stripe
  • No subscription and no monthly minimum

Questions

Frequently asked questions

Do I need my own image hosting?

No. Every stored capture is uploaded to a global CDN and the response gives you its link in scrUrl, ready to embed or share.

What happens when a capture fails?

The credits go straight back to your account, and the dashboard shows the capture as failed with the reason.

Can I get the image without hosting it?

Yes. Send storage: false and the image comes back only as base64 in the response, for 0.25 credits instead of 1.

How many captures can run at once?

Up to 3 per account at the same time. If you need more, email support and we can raise the limit.

Which browser takes the screenshots?

A real Chromium browser, so pages render exactly the way your visitors see them, JavaScript and web fonts included.

Can I capture pages behind a login?

Yes, as long as you can access them. Pass your session cookie or authorization header in extraHTTPHeaders.

How do I pay?

Buy credits by card through Stripe from your Account page, between 20 and 5,000 at a time. There is no subscription.

Is there a free trial?

Every new account starts with 2 free credits, enough for two hosted screenshots.

Something else? Email support@azwedo.com

Your first 2 screenshots are on us

Sign in with Google, copy your token and send your first URL. No card needed to start.

Read the docs