To add website previews to Google Sheets, put each page URL in a cell, build a PagePeeker V2 thumbnail URL from it, then display that image in a cell or insert it over the sheet. PagePeeker renders the screenshot; Sheets only displays the returned image. The steps below use PagePeeker’s documented API and Google Apps Script’s documented image-placement methods.
1. Put the page URLs in a column
Enter the website or page addresses in column A, starting with A2. Keep the original address separate from the thumbnail URL so you can inspect both if a preview does not appear.
As an Amazon Associate I earn from qualifying purchases.
| Column | Purpose | Example |
|---|---|---|
| A | Page to capture | https://example.com |
| B | PagePeeker thumbnail URL | Generated in the next step |
| C | Screenshot preview | Image placed in a cell or over the grid |
2. Build a PagePeeker V2 thumbnail URL
PagePeeker identifies V2 as its current recommended API. Its documented URL pattern is http://{entrypoint}.pagepeeker.com/v2/thumbs.php?size={size}&url={url}. For the no-signup branded free endpoint, replace the entrypoint with free. The page address must be URL-encoded when used as the url query parameter.
Free tools Windows power users keep installed
One-click scans. No signup required.
For example, a thumbnail request for https://example.com has this shape: http://free.pagepeeker.com/v2/thumbs.php?size=m&url=https%3A%2F%2Fexample.com. The domain is an illustration, not a verified capture result. See PagePeeker’s API documentation for its endpoint and parameters.
#1 Best Overall
Choose a thumbnail size
| Size value | Documented dimensions |
|---|---|
t |
90 × 68 |
s |
120 × 90 |
m |
200 × 150 |
l |
400 × 300 |
x |
480 × 360 |
Use a size that fits the sheet’s layout. Larger previews take more space, but the documented dimensions do not establish how a particular Sheets layout will render them.
Encode each source URL
Encoding prevents characters in the target address—such as &, ?, or fragments—from being mistaken for part of the PagePeeker request. Google Sheets formulas for displaying images are not covered by the cited Apps Script references, so check the current Sheets editor’s IMAGE formula syntax if you want a formula-only, in-cell setup. The Apps Script option below avoids relying on an unverified formula mode.
3. Display the thumbnail in Google Sheets
Google Apps Script documents two different placements. Sheet.insertImage(url, column, row) inserts a publicly accessible image over the grid; it is not an image value contained in a cell. The Spreadsheet service’s SpreadsheetApp.newCellImage().setSourceUrl(url).build() creates a cell-image value instead. Choose based on whether the preview should float over the sheet or belong to a cell.
The Tool Desk
Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →Rank #2
- Intuitive interface of a conventional FTP client
- Easy and Reliable FTP Site Maintenance.
- FTP Automation and Synchronization
Option A: Insert an over-grid image with Apps Script
In the spreadsheet, open Extensions > Apps Script, add this function, and replace the example thumbnail URL with the PagePeeker URL you generated. The endpoint must be publicly accessible for this insertion method.
function insertPagePeekerThumbnail() {
const sheet = SpreadsheetApp.getActiveSheet();
const thumbnailUrl =
'http://free.pagepeeker.com/v2/thumbs.php?size=m&url=https%3A%2F%2Fexample.com';
sheet.insertImage(thumbnailUrl, 3, 2); // Column C, row 2
}
Save and run insertPagePeekerThumbnail, then authorize the script if Google prompts you. The image is placed at column C, row 2. For a list, adapt the function to read each source row, generate an encoded PagePeeker URL, and insert the image in the corresponding row. The relevant Google method is documented in the Apps Script Sheet reference.
Option B: Create a cell-image value
To place an image value in a cell rather than over the grid, Apps Script documents newCellImage() and setSourceUrl(). This example uses the same illustrative thumbnail URL and writes the value to C2:
Rank #3
function putPagePeekerImageInCell() {
const sheet = SpreadsheetApp.getActiveSheet();
const thumbnailUrl =
'http://free.pagepeeker.com/v2/thumbs.php?size=m&url=https%3A%2F%2Fexample.com';
const image = SpreadsheetApp.newCellImage()
.setSourceUrl(thumbnailUrl)
.build();
sheet.getRange('C2').setValue(image);
}
For a real sheet, replace the illustrative address with the correctly encoded URL for the row you want to preview. See Google’s Spreadsheet service reference for the cell-image builder.
4. Scale the workflow without wasting API calls
PagePeeker counts displaying cached thumbnails, creating thumbnails, checking readiness, and other API calls toward its API-call count. A render means creating a screenshot; it is not the same thing as an API call. Avoid repeatedly refreshing or polling every row in a large sheet unless you need a fresh image or a status check. PagePeeker describes a readiness endpoint that returns JSON including Error and IsReady, plus optional premium wait and refresh parameters for asynchronous checks or fresh captures; consult its API documentation before using them.
Know what the plan terms mean
The following PagePeeker details are provider-published terms, not independent performance tests. Pricing figures were listed on the official pricing page when accessed on October 3, 2026; verify them there before relying on them because plans can change.
Rank #4
| Offering | Published terms and behavior |
|---|---|
| Free branded | No signup; branding on thumbnails; 20-day caching; typical rendering time listed as 30–60 seconds. |
| Free unbranded | Requires a link back; listed at 100,000 monthly calls; 20-day caching; typical rendering time listed as 10–20 seconds. |
| Basic paid | $5.99/month and 100,000 API calls per month; 7-day caching; typical rendering time listed as 10–20 seconds. |
| Advanced paid | $39.99/month and 1,000,000 API calls per month; 5-day caching; typical rendering time listed as 5–15 seconds. |
The free-tier details come from PagePeeker’s free thumbnails page, while the paid figures and paid-tier details come from its pricing page. Rendering times are PagePeeker’s typical figures, not guaranteed completion times.
Keep account codes private
PagePeeker says an account code is optional for client-side direct linking, but warns that a code exposed on a client-side page can be used by others against the account’s quota. Do not put a paid account code into a formula in a shared spreadsheet or publish an authenticated thumbnail URL. Check the API documentation for supported authentication arrangements.
5. Troubleshoot missing or incorrect previews
- The URL appears broken or the wrong query values are read: encode the entire target page URL before placing it in the
urlparameter. Keep the source address and generated thumbnail address in separate columns while diagnosing it. - The preview is delayed: PagePeeker’s published typical rendering times vary by tier, and the first request may create a thumbnail. Do not interpret a slow response as proof that the address is invalid; use the documented readiness endpoint if you need to check status.
- The site cannot be captured: PagePeeker documents this robots.txt rule for blocking its robot:
User-agent: PagePeekerfollowed byDisallow: /. Sites that block PagePeeker may not be available for capture. The workflow cannot guarantee screenshots of every website. See its robot guidance. - Apps Script does not place the image: For
insertImage(url, column, row), confirm the image URL is publicly accessible and that the column and row are valid. For an image that should belong to a cell, use a cell-image value instead of expecting an over-grid image to behave like cell content. - Calls are being used faster than expected: displaying an already cached thumbnail still counts as an API call according to PagePeeker. Repeated display, refresh, or readiness checks can therefore consume quota; reduce polling and avoid needless refreshes.
- A thumbnail is stale: PagePeeker’s cache lifetimes differ by plan. Its API docs describe premium refresh behavior; check plan eligibility and parameters before attempting to bypass caching.
Or skip the browser setup
ScreenshotNeo is a website screenshot API and MCP server. Its one-call API can return a screenshot or PDF; the example below requests an image for the same illustrative URL:
Best Value
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://example.com -o shot.webp
See the ScreenshotNeo API documentation for setup and options. It accepts cookie banners and removes 60+ known consent platforms, newsletter popups, and chat widgets before capture; those steps can each be turned off. Bot checks, blank pages, timeouts, failed loads, and cache hits are not billed, with the response identifying the page verdict and billing status in headers. Its MCP server provides screenshot tools for AI agents, and its free plan includes 1,000 screenshots a month with no card; paid plans start at $5 for 3,000. Sign up free for ScreenshotNeo.
Frequently Asked Questions
Can a Google Sheets formula take the screenshot itself?
No. PagePeeker renders the page into a thumbnail; Sheets displays that image. The screenshot is not generated by the sheet.
Can I use a paid PagePeeker code in a shared spreadsheet formula?
No. PagePeeker warns that a code exposed in a client-side page can be used against the account’s quota. Keep it out of shared formulas and public URLs.
PC Slower Than It Used to Be?
A free scan shows the junk files, broken settings and background clutter dragging Windows down - then fixes them in one click.Free scan · Windows 10 & 11Outdated Drivers Are Slowing You Down
One free scan finds every outdated or missing driver and matches the right update for your exact hardware.Free scan · exact hardware matchQuick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.




