Send Website Screenshots to Your Webhook Endpoint

Send AddScreenshots renders straight to your webhook endpoint as base64 payloads. Trigger automation, run AI comparisons, or post alerts to your internal tooling the moment a capture finishes.

  • REST-friendly payloads: Receive PNG and optional HTML as base64 strings alongside page metadata.
  • Flexible integrations: Connect to custom APIs, Azure Functions, Power Automate, Slack, Teams, Zapier, and more.
  • Automation ready: Combine with scheduling, bulk jobs, and region targeting for global monitoring pipelines.

Webhook overview

  • A webhook request will be sent to your endpoint (such as the URL to a REST API)
  • Custom HTTP headers can be included the request (e.g. to help with authentication)
  • HTTP and HTTPS endpoints are supported
  • A webhook request will use the POST method
  • A webhook request will contain a JSON body (payload) with a base64 encoded image
  • Each webhook request will contain a single screenshot image
  • Your webhook must return a success HTTP status response (2XX) such as 200 (OK) or 201 (Created)
  • Your webhook must complete with 60 seconds
  • A response from your endpoint is not required and will be ignored

Webhook request example

  • Request Method: POST
  • Request Headers
    • Content-Type: application/json
    • User-Agent: addscreenshots/webhook
  • Request Body
{
  "file": "website.png",
  "image": "data:image/png;base64,iVBORw0KGgoAAA...",
  "html": "data:text/html;base64,iVBORw0KGgoAAA...",
  "mimetype": "image/png",
  "metadata": {
    "request_url": "youtube.com",
    "page_url": "https://www.youtube.com/",
    "size": 1622727
  }
}

How to configure a screenshot webhook

The following parameters are available when sending a screenshot to your webhook.
ParameterRequiredDescription
webhookRequiredThe URL to the webbhook end point.
For example: https://demo.example.com/screenshot
webhookheadersOptionalInclude optional headers to the webhook such as an authentication token.
metadataOptionalAdd descriptive metadata properties to webhook body
fileOptionalThe name or pattern for the file without the extension
The default is a unique identifier (see pattern examples)
htmlOptionalWhen set to true, a "html" property will be included in the webhook request with the base64 encoded HTML markup

Call a webhook with a single screenshot request (real-time GET request)

The example below shows how to take a real-time website screenshot and send the image (base64 encoded) to a webhook with the file name "website.png".

// Line breaks added for readability https://api.addscreenshots.com/screenshots
?apikey=
YOUR_API_KEY
&file=website
&html=false
&url=youtube.com

&webhook=https://example.com/api/webhook

Your API key can be found on the API Keys page. Need an API Key? Sign up to get started.
For internal applications, replace YOUR_API_KEY with your own unique API Key.
For public facing websites or hotlinks, generate a signed URL.

The API response will include the path of the image on your FTP server as shown below:

{
  "success": true,
  "message": "Screenshots completed.",
  "storage_provider": "webhook",
  "images": [
    {
      "file": "website.png",
      "request_url": "youtube.com",
      "page_url": "https://www.youtube.com/",
      "size": 1622727
    }
  ]
}

Call webhooks for multiple screenshots (POST request)

The example below shows how to take multiple screenshots using a POST request and call a webhook with custom headers for each image using the filename {filepath} pattern.

POST https://api.addscreenshots.com/screenshots/bulk/multi?apikey=YOUR_API_KEY

{
  "urls": [
    "https://www.apple.com/ipad/",
    "https://www.apple.com/iphone/",
    "https://www.apple.com/watch/",
    "https://www.bbc.com/news/world",
    "https://www.bbc.com/news/technology",
    "https://www.tomshardware.com/news/raspberry-pi",
    "https://www.tomshardware.com/best-picks"
  ],
  "webhook": "https://example.com/api/webhook",
  "webhookheaders": { 
      "my-header": "my value",
      "my-second-header": "my second value"
  },
  "metadata": true,
  "html": false,
  "file": "{filepath}",
  "quality": "80"
}

The API response will include the number of screenshots as shown below:

{
  "message": "The screenshots are being processed.",
  "jobId": "536b69dbefa240d493330ae5de1c0d47",
  "screenshots": 7
}

Look for the Job ID on the Usage Logs page to track the request.

Wire webhooks into your next monitoring workflow today. See plans or create an API key to start streaming screenshots to your endpoint.


Screenshot metadata

Additional metadata will be included in the screenshot event when the "metadata" parameter is set to true.

The metadata may contain information such as:

  • website_status - the status response from the website such as 200
  • url - request URL entered such as apple.com/ipad
  • page_url - page URL after browser redirection as https://www.apple.com/ipad
  • page_loadtime_ms - page load time in milliseconds
  • Compression Enabled (e.g. &quality=80)
    • image_size_kb_before_compression - the original size of the screenshot before compression such as 172 KB
    • image_size_kb_after_compression - the size of the screenshot after compression such as 39 KB
    • image_size_compressed_percentage - the compression optimization / saving such as 77%