Make.com Website Screenshots to Google Drive

Capture website screenshots in a Make scenario with the HTTP module and save the binary file to Google Drive. Blueprint JSON, field mapping, retries and limits.

By Simon Chiu · Updated

Make (formerly Integromat) has no screenshot module, but its HTTP → Make a request module can call the RenderScreenshot API and receive the image as a file. A second module puts that file into Google Drive, with no public link and no expiry to manage. This page gives you a scenario blueprint to import, the exact mapping from the HTTP module's binary output to Drive, and an error route for pages that fail. For the version that returns an image link instead of a file, see the automation overview; every integration is on the integrations hub.

Status: written 2026-10-18 from the API's documented request and response shapes. The blueprint below has not been imported into a Make account yet, so there are no Make UI screenshots, and the module versions in it may differ from what your Make account shows. The API side, the query parameters, header and responses, matches the GET endpoint reference. If an import fails, build the two modules by hand from the mapping table; the settings are the same.

What you can build

  • A weekly folder of competitor pages. A scheduled scenario captures five pricing pages each Monday and files them under a dated folder name.
  • Proof for a content calendar. When a row in Google Sheets is marked as published, the scenario captures the live URL and stores the image next to the brief.
  • Client reports. An agency scenario captures each client's home page at month end and saves it to the client's shared Drive folder.

Prerequisites

  • A Make account and a Google Drive connection in Make.
  • A RenderScreenshot API key that starts with rs_live_. Create a free account to get one.

Import the blueprint

In a new scenario, open the ⋯ menu at the bottom of the editor, choose Import Blueprint, and select a file with this JSON. Then open the HTTP module, replace rs_live_REPLACE_ME with your key, and open the Drive module to pick your connection and folder.

{
  "name": "RenderScreenshot to Google Drive",
  "flow": [
    {
      "id": 1,
      "module": "http:ActionSendData",
      "version": 3,
      "parameters": { "handleErrors": true, "useNewZLibDeCompress": true },
      "mapper": {
        "url": "https://api.renderscreenshot.com/v1/screenshot",
        "serializeUrl": false,
        "method": "get",
        "headers": [{ "name": "Authorization", "value": "Bearer rs_live_REPLACE_ME" }],
        "qs": [
          { "name": "url", "value": "https://example.com" },
          { "name": "preset", "value": "desktop_hd" },
          { "name": "format", "value": "jpeg" },
          { "name": "quality", "value": "80" },
          { "name": "block_ads", "value": "true" },
          { "name": "block_cookies", "value": "true" },
          { "name": "cache_available", "value": "true" }
        ],
        "bodyType": "",
        "parseResponse": false,
        "timeout": "90",
        "shareCookies": false,
        "rejectUnauthorized": true,
        "followRedirect": true,
        "useQuerystring": false,
        "gzip": true,
        "useMtls": false
      },
      "metadata": { "designer": { "x": 0, "y": 0 } }
    },
    {
      "id": 2,
      "module": "google-drive:uploadAFile",
      "version": 4,
      "parameters": {},
      "mapper": {
        "folderId": "/",
        "destination": "drive",
        "filename": "{{formatDate(now; \"YYYY-MM-DD\")}} {{1.headers.`x-request-id`}}.jpg",
        "data": "{{1.data}}",
        "convert": false
      },
      "metadata": { "designer": { "x": 300, "y": 0 } }
    }
  ],
  "metadata": {
    "version": 1,
    "scenario": { "roundtrips": 1, "maxErrors": 3, "autoCommit": true, "sequential": false, "dlq": true },
    "designer": { "orphans": [] }
  }
}

The dlq setting is Allow storing of incomplete executions in the scenario settings. It must be on for the retry route below to work.

How the two modules connect

The HTTP module returns three things: Status code, Headers and Data. With Parse response off, Data is the image itself, as a binary buffer. The Google Drive Upload a File module needs two values for its file: a File name and Data. Map them like this:

Drive field Mapped value Note
File name {{formatDate(now; "YYYY-MM-DD")}} {{1.headers.`x-request-id`}}.jpg The extension must match format
Data {{1.data}} The binary output of module 1
Folder your folder Pick it from the list after import
Convert No Drive would try to turn an image into a Doc

The response headers give you more to name files with. x-screenshot-title holds the page's title, percent-encoded when it has non-ASCII characters, so wrap it in Make's decodeURL() function. x-credits-remaining is useful in a Slack alert when your balance runs low.

Query string mapping

Each Query String item is a flat name from the GET endpoint:

Name Value Effect
url map from your trigger Must start with http:// or https://
preset desktop_hd 1920×1080 viewport, see presets
format, quality jpeg, 80 Smaller files than PNG for Drive
block_ads, block_cookies true Removes ads and cookie banners. Only the word true turns them on.
cache_available true A rerun gets an identical render back for 0 credits
full_page true (optional) The whole scrollable page instead of one screen

Put the key in the Headers list, not in the query string. Make keeps the full request in the execution history, and a key in the URL is visible to everyone who can open the scenario's history.

Errors and retries in Make

Evaluate all states as errors (handleErrors) is on in the blueprint. Without it, a 401 or 422 response counts as success, and Drive receives the error JSON as a file named .jpg.

To retry, right-click the HTTP module, choose Add error handler, and pick Break. Turn on automatic completion, then set the number of attempts and the interval. Break retries every error, including a 400 for a bad URL that will never pass, so stop bad input before it reaches the API: put a filter between your trigger and the HTTP module with the condition url starts with https://.

Response Cause What to do in Make
400 invalid_url The source sent acme.com Prefix https:// in a Set variable step
401 missing_credentials Header value without Bearer Fix the header; do not retry
403 insufficient_credits Monthly credits used Pause the scenario until the reset
422 timeout The page did not finish loading Let Break retry once; add delay if it repeats
429 too_many_requests The account's one-minute window is full A Break interval of one minute clears it

The full list is on the error codes page.

Limits and costs

  • Credits. One credit per fresh render. Failed renders and cache hits cost 0. The pricing page lists the credits on each plan.
  • Make usage. Each module run counts toward your Make plan, so one screenshot saved to Drive is two module runs.
  • Rate limit. Requests per minute are counted per account across all keys. An iterator over a long list can reach the limit on the free plan; add a Sleep module inside the loop. See rate limits.
  • File size. Make limits the size of files a scenario can handle, by plan. JPEG or WebP keeps long full-page captures smaller.

Troubleshooting

  • The Drive file will not open. Parse response is on, or an Accept: application/json header was added. The file then holds text.
  • Every run uses a credit for the same page. Add cache_available=true.
  • The capture shows a consent wall. Keep block_cookies=true and read blocking cookie banners for pages that need a click.
  • Breaks pile up in incomplete executions. The same URL fails every time. Open one, read the JSON in the output bundle, and fix the input.

The same request runs in n8n with an S3 upload; see the n8n workflow. Zapier users can start from the Zapier setup. In Microsoft 365, the Power Automate flow saves the file to OneDrive.

Frequently asked questions

Is there a Make app for website screenshots?
You do not need one. Make's built-in HTTP module calls the screenshot API, and its Data output is the image file, which the Google Drive, Dropbox or OneDrive modules accept directly.
Why does the Google Drive module upload a file that will not open?
Parse response is on, or an Accept: application/json header was added, so the HTTP module returned text instead of image bytes. Turn Parse response off and remove the Accept header.
Do Make's automatic retries spend credits?
Not for failed renders, which use no credit. A retried run whose screenshot already succeeded would render again, unless the request includes cache_available=true, which returns the earlier identical render for 0 credits.

Related in this topic

Try RenderScreenshot free

150 free credits every month, no credit card required.