Send Website Screenshots to Your Webhook Endpoint

Webhooks are an excellent way to automate workflow and send website screenshots to your web apps automatically. With the Screenshot API, you can easily send a base64 encoded screenshot to your own custom REST API webhook, Microsoft Flow, Power Automate & Azure Functions, Zapier and many more.

Automating the process of taking large volumes of screenshots from multiple URLs, sitemaps, text files or an entire domain, and notifying your webhook can be achieved with a single Screenshot API call. This saves you time and streamlines the process, making it easier to stay organized and keep all your screenshots in one place.

Integrate your web apps with the Screenshot API today and start sending website screenshots to your webhook endpoint automatically!

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.
Parameter Required Description
webhook Required The URL to the webbhook end point.
For example: https://demo.example.com/screenshot
webhookheaders Optional Include optional headers to the webhook such as an authentication token.
metadata Optional Add descriptive metadata properties to webhook body
file Optional The name or pattern for the file without the extension
The default is a unique identifier (see pattern examples)
html Optional When 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.

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%