Clay Website Screenshots with the HTTP API Column

Add website screenshots, page titles and dead-site signals to a Clay table with one HTTP API column. Exact config, rate limit settings, credit-safe re-runs.

By Simon Chiu · Updated

Clay's HTTP API enrichment column can call any JSON API once per row, and that is all you need for website screenshots. This page gives the exact column settings for the RenderScreenshot API. You get a screenshot link, the page title and the meta description per row, without spending credits twice on re-runs or on many contacts at one company. It is part of our integrations hub.

Last tested: 2026-10-18. We sent the same GET request that the column sends, with curl 8 and jq 1.7, against a local stub of our API that returns the documented JSON body and error envelope. We then read the field paths below from each response: two rows with the same site (the second came back as a cache hit for 0 credits), a bare domain (invalid_url) and a page that timed out. The field names in Clay come from Clay's HTTP API documentation, checked in October 2026. We did not run the column in a Clay workspace, so this page has no Clay screenshots.

What you can build

  • Personalized outreach images. A screenshot of the prospect's homepage goes into an email or a LinkedIn message tool through a merge field that holds the image link.
  • Research input for AI columns. The page title and meta description are what the company says about itself. Feed them to a Claygent or AI column as context, with no extra scrape.
  • List hygiene. Rows whose website fails with navigation_failed or ssl_error are often parked or dead domains. Filter them out before you spend credits on email finders.

If the list lives in a base and not in Clay, the Airtable automation script writes the same capture into an attachment field.

Prerequisites

  • A Clay table with a column that holds a full URL, such as https://acme.com. If you only have a domain, add a formula column that puts https:// in front of it.
  • A RenderScreenshot API key that starts with rs_live_. Create a free account to get one.

Step by step

  1. In the table, click Add column, then Add enrichment, and choose HTTP API.
  2. Set the method to GET and the API endpoint URL to https://api.renderscreenshot.com/v1/screenshot.
  3. Under Query string parameters, add the rows from the mapping table below. For url, insert the column that holds the website.
  4. Under Header fields, add Authorization with Bearer rs_live_... and Accept with application/json.
  5. Under Field paths to return, add image.url, metadata.title, metadata.description, cache.hit and usage.credits.
  6. Set Rate limiting as described below.
  7. Under the advanced options, add a Conditional run formula so that the column runs only when the website column is not empty.
  8. Run the column on the first 10 rows and check the results before you run the whole table.

Parameter mapping

Clay field Key Value Why
Query string url (website column) Must start with http:// or https://
Query string preset og_card 1200 × 630, the size most email and social tools show well. See presets.
Query string format jpeg Smaller files than the preset's PNG
Query string quality 80 JPEG quality, 1 to 100
Query string block_ads, block_cookies true Removes ads and consent banners before capture
Query string cache_available true Re-runs and repeated domains cost 0 credits
Query string cache_ttl 2592000 Keeps the image link alive for 30 days
Header Authorization Bearer rs_live_... Your API key
Header Accept application/json Returns JSON with a link, not image bytes

Every name here is a flat parameter of the GET endpoint. Booleans must be the word true; 1 or yes is ignored without an error. To get a full-page capture, add full_page = true.

What one row returns

With the field paths above, a row for https://example.com holds values like these:

Field path Example value
image.url https://cdn.renderscreenshot.com/...jpg
metadata.title Example Domain
metadata.description null when the page has none
cache.hit false for the first render, true for a reuse
usage.credits 1, or 0 for a reuse

The image.url link needs no key, so you can pass it to any later tool in your Clay workflow.

Batch-safe settings

Clay can send requests for many rows at once. RenderScreenshot counts requests per minute for the whole account, with all of its keys together. Two settings keep a large run clean.

Rate limiting. In the column's Rate limiting fields, set Request limit to your plan's requests per minute and Duration (ms) to 60000. On the free plan that is 10 requests per 60000 ms. Answers in Clay's community forum report that the HTTP API column will not accept a pace slower than a fixed minimum. If Clay refuses your plan's pace, run the column on blocks of rows no larger than your per-minute limit, one block per minute, or move to a plan with a higher limit. See rate limits for each plan.

Cache reuse. cache_available=true makes the API return an earlier identical render for 0 credits. A table of 200 contacts at 40 companies then pays for 40 renders, not 200. A forced re-run of the whole column after a failure pays only for rows that never rendered. The caching reference explains the cache key: the same URL with the same options.

Errors and retries

When the API cannot return an image, it answers with an error status, and the response body names the reason in error.code, and error.retryable says if a second try can help.

Code What it usually means for a prospect list Next step
invalid_url The cell holds acme.com without a scheme Fix the formula column
navigation_failed DNS or connection failure: often a dead domain Treat as a data signal; re-run once
ssl_error Invalid TLS certificate Treat as a data signal
blocked The site refuses automated browsers Skip, or see bot protection
timeout The page did not finish loading Re-run the failed rows once
toomanyrequests The account's minute was used Lower the rate limit fields, then re-run the failed rows
insufficient_credits Monthly credits are used Stop the column until the reset

A failed render uses no credit, so re-running failed rows costs only what then succeeds. The error codes reference lists the rest.

Limits and costs

  • RenderScreenshot credits. One credit per new render; reuses and failures use none. The free plan gives 150 credits each month. See pricing.
  • Clay credits. Clay's own pricing decides what an HTTP API column costs on your Clay plan. Check it before you run a large table.
  • Link lifetime. The image link works until the cache entry expires: 30 days with the cache_ttl above. If a campaign sends emails later than that, re-run the column first; with cache_available the re-run renders again only where the old render has expired. Paid plans can also copy each render to your own bucket.

Troubleshooting

  • The column returns a long block of odd characters. The Accept: application/json header is missing, so the API sent image bytes.
  • Every row fails with missing_credentials. Check the Authorization header: the word Bearer, one space, then the key.
  • Images show a cookie wall. Most banners go with block_cookies. For stubborn ones, see blocking ads and cookie banners.
  • The wrong page appears for URLs with their own query string. Insert the column as the value of url in the query string fields, not inside the endpoint URL, so the whole target is sent as one encoded value.

Frequently asked questions

How do I add website screenshots to a Clay table?
Add an HTTP API enrichment column that sends a GET request to the RenderScreenshot API with the row's website as the url parameter and Accept: application/json as a header. Return the field path image.url, and the column holds a public link to the screenshot.
Will re-running the column charge me again?
Not if you send cache_available=true. A row whose page was rendered with the same options in the cache window gets the earlier image back for 0 credits. This also covers many contacts at the same company domain.
What happens when a prospect's website is down?
The API returns an error code instead of an image, for example navigation_failed or ssl_error. A failed render uses no credit, and the code itself tells you the site has a problem.

Related in this topic

Try RenderScreenshot free

150 free credits every month, no credit card required.