SnapAPI + Make.com
Complete Integration Guide

Integrate SnapAPI into any Make scenario using the built-in HTTP → Make a request module. Capture screenshots, generate PDFs, and extract content without writing code. Setup takes under 5 minutes.

No native Make app required.

SnapAPI does not currently have a listed Make app. Instead, use Make's free built-in HTTP module to POST directly to the SnapAPI REST API. This guide explains every configuration step.

How It Works

Every Make scenario that calls SnapAPI uses the same 3-module pattern:

  1. Trigger module — any app that provides a URL (Airtable, Google Sheets, RSS, Webhook, Schedule)
  2. HTTP module — posts the URL to api.snapapi.pics/v1/screenshot and parses the JSON response
  3. Output module — uses the screenshot URL from the HTTP response (Google Drive upload, Slack message, Notion record, etc.)

Prerequisites

Free tier includes 200 requests/month.

For active scenarios that run frequently, consider upgrading to Starter ($19/month, 5,000 requests) or Pro ($79/month, 50,000 requests). Check pricing for current plans.

Step 1: Create a New Scenario

1

Open Make.com and create a scenario

Log in to make.com. Click Create a new scenario. Give it a name. You will see an empty canvas with a large + button in the center.

Step 2: Add Your Trigger Module

2

Click + and choose your trigger app

Search for your trigger app, connect your account, and configure it. Run a test to ensure sample data flows through. You need a URL field to map to SnapAPI.

TriggerUse caseURL variable
Airtable — Watch RecordsScreenshot URLs in a base{{1.Website}}
Google Sheets — Watch RowsScreenshot rows as added{{1.B}}
RSS — Watch ItemsScreenshot article pages{{1.url}}
Webhooks — Custom WebhookOn-demand via HTTP call{{1.url}}
Notion — Watch Database ItemsScreenshot page URLs{{1.properties.URL.url}}
Schedule (interval)Monitor site on a timerHardcode URL in HTTP module

Step 3: Add the HTTP Module

3

Add HTTP → Make a request after your trigger

Click the + button after your trigger. Search for HTTP. Select the HTTP built-in app. Choose the action Make a request. No connection is required — it works immediately.

Choose "Make a request", not "Make a Basic Auth Request".

SnapAPI uses API key authentication via a custom header (X-Api-Key). The "Make a request" variant lets you set any custom header. The "Basic Auth" variant is for username/password authentication and will not work.

Step 4: Configure the HTTP Module

4

Fill in every field exactly as shown

Click the HTTP module to open its configuration. Use the values below. Use Make's variable picker to insert {{1.url}} (or your trigger's URL field) inside the request body.

HTTP — Make a request: All fields

URLhttps://api.snapapi.pics/v1/screenshot
MethodPOST
Header 1 NameX-Api-Key
Header 1 ValueYOUR_API_KEY
Header 2 NameContent-Type
Header 2 Valueapplication/json
Body typeRaw
Content typeJSON (application/json)
Request content{"url": "{{1.url}}", "format": "png", "width": 1280, "responseType": "url"}
Parse responseYes

Full JSON request body to paste into the Request content field:

HTTP module — Request content (screenshot)
{
  "url":               "{{1.url}}",
  "format":            "png",
  "width":             1280,
  "height":            800,
  "fullPage":          false,
  "blockAds":          true,
  "blockCookieBanners": true,
  "delay":             0,
  "responseType":      "url"
}
Always set responseType: "url" in Make scenarios.

Without it, SnapAPI returns raw binary image bytes. Make cannot pass binary data to most downstream modules. With "responseType": "url", you receive a JSON object with a hosted URL that is accessible as {{2.data.url}} in subsequent modules.

Step 5: Map the Response URL

5

Run once to test, then wire the URL to downstream modules

Click Run once. If successful, the HTTP module shows a green badge. Click it to inspect the response. Add downstream modules and use {{2.data.url}} wherever a URL or file is needed.

Available response variables (module number 2 assumed):

Make variables from HTTP module response
{{2.data.url}}      — hosted screenshot URL (valid 24 hours)
{{2.data.width}}    — actual rendered width in pixels
{{2.data.height}}   — actual rendered height in pixels
{{2.data.format}}   — output format: png, jpeg, webp, or pdf
{{2.data.cached}}   — true if result came from 10-minute cache
{{2.status}}        — HTTP status code (200 = success)

Generating PDFs

HTTP module — Request content (PDF)
{
  "url":      "{{1.url}}",
  "format":   "pdf",
  "fullPage": true,
  "pdfOptions": {
    "pageSize":       "a4",
    "printBackground": true,
    "marginTop":      "1.5cm",
    "marginBottom":   "1.5cm",
    "marginLeft":     "2cm",
    "marginRight":    "2cm"
  },
  "responseType": "url"
}

Extracting Content for AI

Change the URL to the Extract endpoint and use {{2.data.markdown}} as input to OpenAI or Claude modules:

Content extraction — HTTP module URL and body
// HTTP module URL:
https://api.snapapi.pics/v1/extract

// Request content:
{
  "url":    "{{1.url}}",
  "format": "markdown"
}

// Response variables:
{{2.data.markdown}}   — full page as Markdown
{{2.data.title}}      — page title tag
{{2.data.wordCount}}  — approximate word count

Scraping Structured Data

Web scraping — HTTP module
// HTTP module URL:
https://api.snapapi.pics/v1/scrape

// Request content:
{
  "url":            "{{1.url}}",
  "type":           "text",
  "waitMs":         1000,
  "blockResources": true
}
// type options: "text", "html", "links", "json"

Working with Make Variables

Trigger appURL variable syntax
Google Sheets (column B){{1.B}}
Airtable (field "Website"){{1.Website}}
RSS (item URL){{1.url}}
Webhook (body.url){{1.url}}
Notion (URL property){{1.properties.URL.url}}
Use Make's variable picker instead of typing manually.

Click inside any field and click the variable icon (or type {) to browse all available fields from previous modules. This ensures the exact variable path and prevents typos.

Scenario Recipes

Make + Airtable + Drive

Screenshot all URLs in Airtable

Trigger: Airtable Watch Records (Status = Pending). HTTP: SnapAPI screenshot. Google Drive: Upload. Airtable: Update record with Drive URL + set Status = Done.

Make + RSS + OpenAI + Notion

AI-summarized content feed

Trigger: RSS Watch. HTTP: SnapAPI Extract (markdown). OpenAI: Summarize in 3 sentences. Notion: Append with title, summary, source URL, and timestamp.

Make + WooCommerce + Gmail

PDF order receipts

Trigger: WooCommerce New Order. Build order URL. HTTP: SnapAPI PDF (A4, printBackground). Gmail: Send PDF URL as download link to customer.

Make + Schedule + Slack

Daily competitor monitoring

Trigger: Schedule (daily 8am). Iterator: 5 competitor URLs. HTTP: SnapAPI full-page screenshot. Slack: Post all URLs to #intel with timestamps.

Make + Shopify + S3

Auto-generate OG images

Trigger: Shopify New Product. Build product page URL. HTTP: SnapAPI 1200x630 screenshot. AWS S3: Upload. Shopify: Update product metafield with S3 URL.

Make + Typeform + Dropbox

Archive submitted URLs

Trigger: Typeform New Response. HTTP: SnapAPI screenshot. HTTP 2: SnapAPI Extract. Dropbox: Create folder with submission ID. Upload both files.

Troubleshooting

Error 401 Unauthorized

The header name must be exactly X-Api-Key (capital X, capital A, capital K). Check for trailing spaces in the header value. Confirm your API key is active on the dashboard.

Error 400 — Validation error

{{2.data.url}} is empty or unavailable

Make sure Parse response is set to Yes. Without this, the HTTP module returns raw bytes and the .data variables are not populated.

429 Too Many Requests:

Add a Flow Control → Sleep module (1000ms) before the HTTP module to stay within the 60 requests/minute rate limit. For high-volume scenarios, upgrade your plan.

Screenshot looks incomplete

Add "delay": 2000 and "waitUntil": "networkidle" to the JSON body. This waits for JavaScript to finish executing before capturing.