ScreenshottyScreenshotty
FeaturesDocumentationPricingBlog
Google Sheets Recipe

Website Screenshots in Google Sheets

A 20-line Apps Script turns a column of URLs into a column of screenshot links — ideal for audits, link reviews, and lightweight monitoring.

Spreadsheets are where URL lists already live: SEO audits, partner directories, QA checklists. With a small Google Apps Script function, each row's URL gets captured through the Screenshotty API and the hosted image link (or an inline =IMAGE preview) lands in the next column.

The API key stays in Script Properties — not in the sheet — so you can share the spreadsheet without sharing credentials.

Apps Script (Extensions → Apps Script)
function SCREENSHOT(url) {
const apiKey = PropertiesService.getScriptProperties()
.getProperty("SCREENSHOTTY_API_KEY");
const response = UrlFetchApp.fetch(
"https://api.screenshotty.link/api/v1/screenshot",
{
method: "post",
contentType: "application/json",
headers: { "X-Api-Key": apiKey },
payload: JSON.stringify({
url: url,
block_cookie_banner: true,
response_type: "json",
}),
}
);
return JSON.parse(response.getContentText()).url;
}
// In the sheet: =SCREENSHOT(A2) or =IMAGE(SCREENSHOT(A2))

Everything You Need, Built In

One custom function

Call =SCREENSHOT(A2) like any formula, or run a menu action that fills the whole column.

Inline previews

Wrap the result in =IMAGE() to see thumbnails directly in the sheet.

Key kept server-side

Script Properties hold the API key; the sheet only ever contains output URLs.

Time-driven refresh

Apps Script triggers re-run the capture column daily for spreadsheet-native monitoring.

Frequently Asked Questions

Why not call the API directly from a cell formula?

Sheet formulas can't send authentication headers, so the key would leak into the sheet. The Apps Script wrapper keeps the key in Script Properties and exposes only a safe custom function.

How do I avoid re-capturing on every recalculation?

Custom functions cache per input, but for big sheets prefer a menu-driven script that writes static values into the cells instead of live formulas.

Where do I get an API key?

Sign up at screenshotty.link (free tier: 100 screenshots/month, no credit card) and copy your key from the dashboard. Keep it in the integration's credential store rather than pasting it into shared workflows.

Can I capture hundreds of rows?

Yes — batch the rows in the script with Utilities.sleep between chunks to respect rate limits, and write results as values.

Start Capturing in Minutes

100 free screenshots per month. No credit card required.

ScreenshottyScreenshotty

Most cost-effective Screenshot API

Product

  • Features
  • Pricing
  • Documentation
  • Blog
  • Compare
  • Alternatives

Free Tools

  • Website Screenshot Tool
  • Website Responsivity Check
  • Website Text Extractor
  • Website to PDF Converter
  • Website Markdown Converter
  • All Free Tools

Developers

  • Python Screenshot API
  • Node.js Screenshot API
  • PHP Screenshot API
  • Full Page Screenshots
  • URL to PDF API
  • API Parameters
  • MCP Server

Legal

  • Privacy Policy
  • Terms of Service

© 2026 Screenshotty. All rights reserved.