How to Store Website Screenshots in Amazon S3 with Make
Build a Make scenario that captures a website screenshot and uploads it to Amazon S3, with setup steps, file-mapping options, and troubleshooting.
To store website screenshots in Amazon S3 with Make, create a scenario that captures the target URL, passes the resulting file to AWS S3’s Upload File action, and maps the screenshot data and filename. Make lists a Create a Screenshot of a URL action in its HTML/CSS to Image integration and an Upload File action in its AWS S3 integration. The exact screenshot output fields and settings can vary, so inspect the current module output and map the fields it actually returns.
1. Build the Make scenario
- Add a trigger. Choose a Make trigger that fits your workflow, such as a schedule or an event from another service. Add or map the page URL that should be captured.
- Add the screenshot action. Select HTML/CSS to Image → Create a Screenshot of a URL, then map the target URL. Make describes this action as taking a screenshot of a website. Check the live module for its available capture settings and output fields; the integration listing does not specify them. (Make integration listing)
- Run once and inspect the output. Use a non-sensitive test page. Determine whether the action returns a file object with binary data, a downloadable URL, or another structure. Do not assume a particular output shape.
- Connect the screenshot to S3. Add AWS S3 → Upload File. Create or select the S3 connection, then configure the region, bucket, source file, and optional folder or headers as supported by the module. Make documents these upload fields and says the connection requires an AWS account, credentials, and permissions. (Make AWS S3 app documentation)
- Map the file and name. If the screenshot action returns a file object accepted by the S3 module, map its data and filename. If it returns a secure HTTPS download URL, insert Make HTTP → Download a file, then map the downloaded file into S3. Make documents HTTP requests and file downloads over HTTPS. (Make HTTP app documentation)
- Run the scenario and inspect the object. Confirm the S3 object opens as an image and has the expected name, size, and content. Test failure handling and duplicate names before scheduling the scenario.
2. Choose the file handoff
The right mapping depends on the screenshot action’s actual output bundle. Make’s integration listings establish the available actions, but do not establish their exact handoff schema.
| Screenshot output | Scenario path | Check before relying on it |
|---|---|---|
| File object with binary data | Map the file data and filename directly into S3 Upload File if its current module accepts that object. | Confirm the binary field, filename, and content type are preserved. |
| Downloadable HTTPS URL | Use HTTP → Download a file, then map the returned file into S3 Upload File. | Check whether the URL expires, needs authentication, or has file-size constraints. |
| Other output | Inspect the bundle and current module documentation to identify a compatible file handoff. | Do not map a URL string into a field that expects binary file data. |
Use an object naming convention that reflects your retention needs. A fixed name can overwrite an earlier capture, depending on the destination and upload behavior. If you need an archive, include a date, time, or unique record identifier in the name, and verify that the live S3 module accepts the desired mapped filename or path.
3. Configure the S3 destination
Make’s S3 upload action documents a region, bucket, source file, and optional folder and headers. Configure these for the destination bucket and inspect the resulting object after a test upload. The available research does not establish current S3 retention, lifecycle, public-access, or least-privilege settings, so use current AWS guidance for those decisions.
- Bucket and region: Select the bucket and region where the archive should live.
- Folder or key path: Use a predictable prefix if you want captures organized by site, workflow, or date. Confirm how the module combines folders and filenames.
- Credentials and permissions: Make requires AWS credentials and permissions. Make’s documentation includes a broad-access example; treat it as an example rather than a least-privilege policy. Consult current AWS IAM guidance and scope production credentials to the required bucket and actions.
- Access and retention: Decide who should be able to read the screenshots and how long they should be retained. Verify current AWS settings rather than assuming uploaded files are private or retained for a particular period.
4. Run a controlled test
- Use a test bucket and a page that contains no sensitive data.
- Run the scenario manually with one URL.
- Inspect the screenshot action’s output bundle and select the correct file handoff path.
- Open the S3 object and verify its image content, dimensions, name, and location.
- Run the same input again and check whether it overwrites the first object or creates another one.
- Test what happens when the target page fails or the file download is unavailable. Configure scenario error handling and retries based on the behavior you observe.
5. Troubleshooting
| Symptom | Likely cause | What to check or fix |
|---|---|---|
| S3 upload receives no file or rejects the source | The mapped value is a URL or metadata field, while the upload expects a file object. | Inspect the screenshot output bundle. If it contains a downloadable HTTPS URL, add HTTP → Download a file and map that returned file. |
| Uploaded object is empty or cannot be opened as an image | The scenario mapped the wrong output field or uploaded a response other than the image bytes. | Inspect the downloaded or returned file data and open a test object. Map the binary file field supported by the current module. |
| Screenshot action fails or captures an unexpected page | The page may not have finished loading, or a required setting may not be available in the selected action. | Review the current screenshot module’s inputs and output; test the target URL manually and verify any available wait or capture settings before scheduling. |
| HTTP download fails | The URL may not be HTTPS, may have expired, or may require authentication. | Make’s HTTP app requires secure HTTPS. Check the URL lifetime and authentication requirements with the screenshot provider and use a supported authentication method if needed. |
| S3 reports an authorization or connection error | The AWS connection, region, bucket, credentials, or permissions may be incorrect. | Recheck the Make connection and destination settings. Confirm the credentials have the required access under current AWS guidance. |
| New captures replace older ones | The workflow may be uploading with a repeated object name or key. | Map a unique date, time, or record identifier into the object name, then verify the resulting key in S3. |
| Scenario succeeds but the object is hard to find | The upload may use an unexpected folder prefix or filename. | Inspect the S3 upload fields and resulting object key; standardize the folder and naming convention. |
6. Performance, reliability, and cost
Each scenario run may involve a screenshot action, an optional HTTP download, and an S3 upload. The extra download step is only needed when the screenshot result is a URL rather than a file object accepted by S3. Keep the workflow simple, and test image size and run time with the pages you intend to capture.
For reliability, test duplicate names, unavailable pages, expired download URLs, and failed uploads. Decide how retries should behave: retrying an upload with the same key may replace an existing object, while a unique key can create a separate archived capture. Monitor scenario runs and inspect failed bundles so file-mapping problems are visible.
The provided research does not establish current Make, AWS, or screenshot-provider prices, quotas, file-size limits, or execution time. Check current provider pricing and limits for your expected capture volume before estimating monthly cost.
Or skip the browser setup
ScreenshotNeo is a website screenshot API and MCP server for developers. A single GET request can return a PNG, JPEG, WebP, or PDF; see the ScreenshotNeo API documentation. Its capture flow accepts cookie banners and removes more than 60 known consent platforms, newsletter popups, and chat widgets before the shot, with each step configurable. Bot checks, blank pages, failed loads, timeouts, and cache hits are not billed, and response headers report the page verdict and billing status. Its MCP server gives AI agents tools for screenshots, page information, and PDF capture.
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
import requests
r = requests.get("https://api.screenshotneo.com/v1/shot", params={"access_key": "YOUR_API_KEY", "url": "https://stripe.com"}, timeout=90)
open("shot.webp", "wb").write(r.content)
const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://stripe.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);
The Free plan includes 1,000 screenshots a month with no card; paid plans start at $5 for 3,000 screenshots. Learn about ScreenshotNeo or sign up for 1,000 free screenshots a month, no card required.
FAQ
Which Make module uploads a screenshot to Amazon S3?
Use AWS S3 → Upload File. Map a file object from the screenshot action, or download its HTTPS result first if the action returns a URL.
Does Make document the exact screenshot output fields?
The cited integration listing confirms the screenshot action exists, but the available research does not specify its output schema. Inspect the live module bundle before mapping it.
Can I make the screenshots public?
Choose access settings using current AWS guidance and your requirements. The researched Make documentation does not establish a public-access configuration.
Should I use a fixed S3 filename?
Use one only if replacing the prior capture is intended. For an archive, map a unique value into the object name and confirm the resulting S3 key.


