How to Use n8n to Save Website Screenshots with Filenames from Airtable Fields
Build an n8n workflow that reads URLs and filenames from Airtable, captures each page through a screenshot API, and saves the resulting image.
Use an Airtable trigger or list-records step to read each record’s URL and desired filename, map those values into an HTTP Request node that calls a screenshot API, then send the returned binary image to a storage node that accepts a filename. The filename expression belongs in the storage step, and the exact expression depends on the Airtable output shape and the destination node.
This guide shows the workflow structure and the settings to verify in your n8n version. The research sources do not establish a tested, universal end-to-end configuration for a specific screenshot provider and destination, so treat node labels and binary property names as values to confirm in your own workflow.
1. Prepare Airtable and n8n
- Choose a stable filename field. For example, create an Airtable field named
Screenshot namewith values such asAcme homepage. Keep the page URL in a separate field such asWebsite URL. - Create Airtable credentials in n8n. Use a Personal Access Token (PAT) or OAuth2 credential. n8n’s Airtable credential guidance says API key authentication was fully deprecated in February 2024; use the current credential setup described in the n8n Airtable credentials documentation.
- Grant only the access needed. Ensure the credential can read the relevant base and table. If your workflow also updates Airtable records with a file URL or status, grant the required write access as well.
- Choose a destination before configuring capture. Examples include object storage or a file-upload service. Confirm that the destination node supports a caller-supplied object name or filename, and decide whether the file should be private or publicly accessible.
n8n expressions map values from previous nodes into later node parameters and can reference a node by name. See n8n data mapping and expressions. Airtable’s Web API returns record listings in pages of up to 100 records; for large tables, enable or verify pagination in the selected n8n Airtable operation. See Airtable’s list records guide.
2. Build the workflow
- Start with a trigger or record retrieval node. Use an Airtable trigger for new or changed records, or a list/search operation for a batch. Verify the table and view/filter so records without a URL are excluded or handled deliberately.
- Inspect one actual Airtable item. Run the retrieval step and inspect its output. Find the exact paths for the URL and filename fields. Airtable nodes may return the fields nested under a
fieldsobject or expose them differently, depending on operation and node version. - Sanitize and normalize the filename. Remove path separators and characters unsupported by your destination. Trim whitespace, replace runs of spaces with hyphens if useful, add a deterministic fallback for blank names, and append the extension matching the image format. Add a record ID or another stable suffix if names can repeat.
- Call the screenshot service with an HTTP Request node. Use the provider’s current documentation for its endpoint, authentication, required URL encoding, viewport or full-page settings, image format, and response mode. Set the response to the mode that produces binary data if the provider returns image bytes.
- Inspect the HTTP Request output. Confirm the binary property name and that the item contains image bytes. Do not assume it is called
data; check the node output and configure downstream nodes to use the actual property. - Save the binary in the destination node. Map the sanitized filename into the destination’s object key or filename field, and map the screenshot binary property into its file or binary input field.
- Optionally update Airtable. Write back the capture status, saved object key, public link (if applicable), timestamp, and any error summary. This makes retries and operational review easier.
3. Configure the screenshot API request
n8n’s integration directory lists screenshot-related integrations including GetScreenshot, ScreenshotOne, and Browserless, and describes HTTP Request as the way to call custom REST APIs. Those listings establish possible approaches; they do not mean the services share endpoints, authentication, parameters, or response behavior. Choose a provider and follow its current API documentation.
In the HTTP Request node, configure these items from that provider’s documentation:
- Method and endpoint: typically an HTTP request to the provider’s capture endpoint, but the exact method and URL vary.
- Authentication: use n8n credentials where possible instead of placing secrets in expressions or Airtable fields.
- Page URL: map the URL field from the current Airtable item. Ensure the node sends it as a query parameter or request body field exactly as the API requires; let the node encode query parameters.
- Capture options: set image format, viewport, full-page behavior, wait condition, and any other options the provider documents.
- Response format: request or select binary/file output when the API returns image bytes. If the API returns JSON containing a temporary image URL instead, add a second HTTP Request node to download that URL as binary, while respecting its expiration and access requirements.
- Timeout and retries: set a timeout appropriate for page loading and capture. Retry only transient failures, with a limit and backoff to avoid repeating permanent errors or creating excessive load.
Use n8n’s expression editor to select values from the current item. A conceptual mapping is current Airtable item → Website URL → capture request URL parameter and current Airtable item → Screenshot name → destination filename. If you reference a prior node by name, use the expression syntax documented by n8n and check the node’s actual output. Expressions that work for one Airtable operation or node version may not match another.
4. Map the filename and binary data
Configure the destination with two separate mappings:
| Destination input | Value to map | Check |
|---|---|---|
| Filename or object key | Sanitized Airtable filename plus the correct extension | Names are unique where required; no path traversal or unsupported characters |
| File content | Binary property from the screenshot response or download step | Property exists and contains image bytes for this item |
Do not confuse the screenshot file’s destination name with n8n’s internal execution binary storage. They serve different purposes. n8n documents S3 as an option for external binary-data storage on eligible self-hosted Enterprise deployments; that configuration concerns n8n execution data and requires Enterprise licensing. The documentation also recommends configuring S3 lifecycle cleanup. See n8n binary data storage documentation.
5. A practical workflow layout
- Airtable trigger or list records → produce one item per record.
- Filter or validate → skip or mark records with an empty or malformed URL.
- Set or Code node → preserve the record ID, derive a safe filename, and retain the original URL and filename for reporting.
- HTTP Request: capture → call the selected screenshot API and produce bytes or a response containing a downloadable URL.
- HTTP Request: download, if needed → convert a returned image URL into binary data.
- Storage node → upload or write the image with the mapped filename.
- Airtable update or error branch → record success, destination key, or a useful failure reason.
For many records, process one item at a time or in controlled batches if the provider or destination has rate limits. Preserve a record identifier through the workflow so a failed item can be retried without confusing it with another record.
6. Edge cases to handle
- Blank URL: validate before calling the screenshot API; record a skipped or invalid status.
- Blank filename: use a deterministic fallback such as a record ID, then append the extension.
- Duplicate names: include an Airtable record ID, date, or other stable key in the stored object name to avoid overwriting.
- Unsafe filename characters: strip directory separators, control characters, and characters rejected by the destination. Keep the original field separately if it is needed for display.
- Provider returns JSON instead of image bytes: parse the documented response and download the image in a separate request, if the provider supplies a download URL.
- Temporary URL expires: download the image promptly, before sending it through slower steps.
- More than 100 Airtable records: confirm pagination is enabled or use an operation that fetches all result pages. Airtable’s Web API list endpoint is paginated.
- One record fails in a batch: use the workflow’s error handling or a per-item status update so one bad URL does not make the overall run hard to recover.
- Private pages: if the target page requires authentication, confirm the screenshot provider supports the required headers or cookies and handle credentials as secrets. Do not put sensitive tokens in Airtable filename or URL fields.
- Filesystem destination: a local path is tied to the n8n host’s filesystem and permissions. A Cloud workflow should not be assumed to have access to an arbitrary local path. n8n’s security audit also identifies filesystem-interacting nodes as a security consideration; use a destination appropriate to your deployment and access model.
7. Performance, reliability, and cost
Throughput
Runtime is shaped by the number of Airtable records, target page load times, screenshot rendering, download time when a second request is needed, and storage upload latency. Avoid launching an uncontrolled number of simultaneous captures. Use batches or concurrency limits that fit the selected provider’s documented limits and your destination’s capacity.
Retries and idempotency
Retry timeouts and transient network or service errors with a bounded retry policy. Do not blindly retry invalid URLs, authorization failures, or unsupported parameters. Make the output key deterministic so a retry either safely replaces the same intended object or is prevented from overwriting through a unique key. Track status per Airtable record so reruns can select only unfinished work.
Cost and retention
Check the screenshot provider’s current pricing and whether failed captures, downloads, and retries are billable. Also account for storage, transfer, and n8n execution costs. Set a retention policy for screenshots and execution data, especially if target pages may contain personal or confidential information. For n8n’s external S3 execution-binary storage, follow its lifecycle guidance and confirm the Enterprise eligibility requirements in the documentation.
8. Troubleshooting
| Symptom | Likely cause | Fix |
|---|---|---|
| URL parameter is empty | The expression points to the wrong field path or the item was reshaped | Inspect the Airtable node output and select the field from the expression picker; check each intervening node preserves it. |
| Filename is blank or literal expression text | The destination field is in fixed-text mode, or the expression path does not match the current item | Switch the field to expression mode and inspect the evaluated value before running the full workflow. |
| Saved file contains JSON or HTML | The capture endpoint returned an error payload or JSON metadata rather than image bytes | Inspect status, headers, and response body; configure binary response mode or add a download request for a returned image URL. |
| Destination says binary property is missing | The HTTP Request node stores the response under a different binary property | Inspect the node’s binary output and set the destination’s input property to that exact name. |
| Every file overwrites the previous one | Filename expression resolves to a repeated value | Add a stable unique suffix such as the Airtable record ID and verify the final object key for two records. |
| Only the first 100 records appear | Pagination is disabled or the selected operation returns only one page | Enable the Airtable node’s fetch-all/pagination option if available, or implement page retrieval according to the operation and API. |
| Capture times out intermittently | Target pages are slow, the timeout is too low, or the provider cannot reach the page | Check the provider’s response and timeout guidance, increase the timeout within supported limits, and retry transient failures with a cap. |
| Local file write fails | The n8n process lacks permission or the path is unavailable in its runtime/container | Use a writable mounted path for self-hosted deployments or choose remote object storage. Do not assume n8n Cloud can write to an arbitrary host path. |
| Airtable authentication fails | Obsolete API key credentials, missing PAT scopes, or access not granted to the base | Recreate credentials using PAT or OAuth2 and verify the credential has access to the base and required operations. |
9. Or skip the browser setup
Keep the Airtable and storage parts of the workflow, and use ScreenshotNeo for the capture request. ScreenshotNeo is a website screenshot API and MCP server by ScreenshotNeo. Its one-call endpoint returns an image or PDF, and the API parameters other screenshot APIs use also work, which can make switching easier. See the ScreenshotNeo API documentation for request options.
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
For n8n, pass access_key and the Airtable URL as query parameters to https://api.screenshotneo.com/v1/shot, following the API documentation. Configure the HTTP Request node to return the response as a file/binary property, then map that property and your sanitized Airtable filename into the storage node.
- Cookie banners are accepted and removed before the capture; newsletter popups and chat widgets are removed too. Each cleanup step can be turned off.
- Bot checks, blank pages, timeouts, failed loads, and cache hits cost nothing; response headers report the page verdict and whether the request was billed.
- An MCP server gives AI agents tools to take screenshots, get page information, and capture PDFs.
- 1,000 screenshots per month are free with no card; paid plans start at $5 for 3,000 screenshots.
Create a free ScreenshotNeo account to get 1,000 screenshots a month with no card.
10. FAQ
Can the Airtable field contain the complete filename, including extension?
Yes, if your selected destination accepts it. Keeping the base name and extension separate can make it easier to change formats without editing every record.
Should I store screenshots in Airtable attachments?
That depends on the workflow and your storage needs. The research here does not establish an Airtable attachment upload configuration; check the current Airtable node operation and API behavior before choosing it as the destination.
Can I use a local folder as the destination?
Only when the n8n runtime has a writable path and the node is supported in that deployment. For portable workflows, a remote storage destination is often easier to operate.
Does n8n automatically fetch every Airtable page?
Do not assume so. Verify pagination behavior for the particular Airtable operation and n8n version, especially when the table has more than 100 matching records.


