October DealsAmazon USOctober deal check: compare before you payAmazon US: current deals, useful picks and tech finds.Check DealsSlow PC?RecommendedPC slow today? Run a repair scan before it gets worseResolve common Windows issues and optimize system performance.Scan NowOctober DealsAmazon USDeal season is back - check today's better picksAmazon US: current deals, useful picks and tech finds.See Picks×
Skip to content
World desk5 min

PagePeeker Screenshot API in Python: Capture a List of URLs

PagePeeker’s documented thumbnail endpoint takes one URL per request. Loop over a Python list, URL-encode each target, save the response bytes, and budget for readiness checks that count toward quota.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

To capture screenshots of multiple URLs with PagePeeker in Python, send one request per URL and save each response’s image bytes. PagePeeker documents a single-target thumbnail endpoint, not a multi-URL batch endpoint. Its API V2 is the current recommended version; V1 is discontinued and redirects to V2. The Python example below is a client-side integration pattern based on PagePeeker’s documented HTTP parameters, not a published or tested PagePeeker SDK example.

Capture a list of URLs with Python

Install the HTTP client first:

python -m pip install requests

Then loop through the URLs, URL-encode each target in the query string, check the HTTP status, and write the returned bytes to a file:

As an Amazon Associate I earn from qualifying purchases.

from pathlib import Path
from urllib.parse import urlencode
import requests

BASE = "http://api.pagepeeker.com/v2/thumbs.php"
API_CODE = "YOUR_SERVER_SIDE_CODE"


def capture(url: str, output: Path, size: str = "m") -> None:
    params = {"size": size, "code": API_CODE, "url": url}
    response = requests.get(f"{BASE}?{urlencode(params)}", timeout=60)
    response.raise_for_status()
    output.write_bytes(response.content)


urls = ["https://example.com", "https://example.org"]
for index, url in enumerate(urls, start=1):
    capture(url, Path(f"capture-{index}.jpg"))

This uses the unbranded/paid entry point, api.pagepeeker.com. For PagePeeker’s free branded service, use http://free.pagepeeker.com/v2/thumbs.php; that service ignores the optional account code. PagePeeker documents the target URL as URL-encoded and recommends using an account code for server-side calls. Do not put the code in browser-side JavaScript or another public client: someone else could use it and consume calls from the account.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The example writes the response body to a file; it does not inspect the returned content type or provider-specific error headers. For production use, check the response content type and, for paid or unbranded accounts, consider logging PagePeeker’s documented headers such as X-PP-Error, X-PP-Capture-Time, X-PP-Final-URL, and X-PP-Timestamp. Choose filenames and retry handling appropriate to your workload.

Choose a thumbnail size

Size code Documented dimensions
t 90 × 68 px
s 120 × 90 px
m 200 × 150 px
l 400 × 300 px
x 480 × 360 px

Premium accounts may have additional sizes. These are thumbnail dimensions; do not assume the standard endpoint returns a full-page screenshot.

Does PagePeeker have a batch API?

The documented V2 thumbnail URL accepts one url parameter per request. The cited API documentation does not document a multi-URL batch endpoint, so capture a list by iterating over it and making a separate request for each URL. Keep concurrency conservative unless your account terms and provider guidance support higher parallelism; the cited documentation does not specify a safe concurrency limit.

How to handle thumbnails that are not ready

PagePeeker provides a separate readiness endpoint at /v2/thumbs_ready.php?size={size}&code={code}&url={url}. It returns JSON fields named Error and IsReady. The documented flow is to request generation, check readiness, and then fetch the image when ready.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The documentation does not prescribe a Python client or polling interval. If you implement polling, use a bounded retry strategy with a delay chosen for your workload, stop after a defined deadline, and handle an error or a still-not-ready result rather than polling indefinitely. A readiness check itself consumes an API call, so frequent polling can use quota quickly.

Request options and limits

  • code: Optional account API key. Keep it server-side. The free branded endpoint ignores it.
  • refresh=1: Forces regeneration for premium accounts.
  • wait: Premium-only maximum number of seconds to wait for a thumbnail before returning the generated image or a placeholder.

PagePeeker describes full-page screenshots as a Premium offering. Its feature page lists adjustable width and maximum height, compression, thumbnail sizes, overlay text, and capture waiting options. The ordinary free thumbnail endpoint should not be treated as a full-page capture service.

Quotas, caching, and account choices

PagePeeker’s published terms differ by account type and may change. The figures below reflect the vendor pages accessed in 2026; confirm current terms before selecting an account. Rendering-time ranges are PagePeeker’s published typical ranges for the named options, not a universal latency guarantee.

Option Monthly calls Branding or link-back Maximum listed size Cache duration Published typical rendering time
Free branded No call limit listed Branded 480 × 360 20 days 30–60 seconds
Free unbranded 100,000 Link back required 480 × 360 20 days 10–20 seconds
Basic 100,000 Not stated on the cited pricing page Not stated on the cited pricing page 7 days Not stated on the cited pricing page
Advanced 1,000,000 Not stated on the cited pricing page Not stated on the cited pricing page 5 days Not stated on the cited pricing page
Premium No listed call limit; custom pricing Not stated on the cited pricing page Additional sizes may be available Customizable Varies by account category

PagePeeker’s pricing page accessed in 2026 lists Basic at $5.99/month for 100,000 calls and Advanced at $39.99/month for one million calls; Premium pricing is custom. These are vendor-listed plan terms, not independent usage measurements.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Count readiness checks and cache hits in your budget

PagePeeker’s FAQ says calls count when displaying a cached thumbnail, creating a thumbnail, checking whether one is ready, and using any other exposed API. Readiness polling therefore adds calls on top of the thumbnail request. Unused monthly calls do not roll over. The FAQ also describes pay-as-you-go for premium accounts above five million calls per month by contacting PagePeeker.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Or skip the browser setup

If you want a screenshot workflow with a one-request API, ScreenshotNeo accepts one URL and returns a PNG, JPEG, WebP, or PDF. For a list, make a request per URL, just as with the loop above. Its distinguishing options include removing cookie/consent banners, newsletter popups, and chat widgets before capture; its response identifies bot checks, blank pages, failed loads, and cache hits, and only clean shots are billed. It also offers an MCP server for AI agents.

Install Requests with python -m pip install requests, then use this one-call example for a target URL. See the ScreenshotNeo API documentation for request options.

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)

ScreenshotNeo includes 1,000 screenshots per month free with no card; paid plans start at $5 for 3,000. Sign up for ScreenshotNeo free.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Troubleshooting

  • The request fails or returns an HTTP error: Check that you are using the V2 path and a valid entry point, and call raise_for_status() so your script does not silently save an error response as an image.
  • The saved file is not a usable image: Inspect the response content type and provider-specific error headers, rather than assuming every response body is a thumbnail.
  • The thumbnail is not ready: Use the readiness endpoint and stop after a bounded number of checks; PagePeeker does not specify a polling interval.
  • Your account calls are being consumed faster than expected: Account for the original request, readiness checks, and cached-thumbnail displays, all of which PagePeeker says count as calls.
  • Your API code appears exposed: Move it to a server-side environment variable or secret store and avoid embedding it in browser code.
  • You expected a full-page image: Full-page capture is listed as a Premium feature; the normal thumbnail sizes are small fixed dimensions.

Prevent PagePeeker captures of your site

PagePeeker says site owners who do not want its robot to capture pages can add this to robots.txt:

User-agent: PagePeeker
Disallow: /

Frequently Asked Questions

Can I save PagePeeker screenshots with a different file extension?

Choose an extension that matches the response’s actual image format; the cited API details describe returned thumbnails but do not establish one universal format for every account or response.

Does PagePeeker publish a Python SDK?

The cited API page documents HTTP URLs and parameters, not a Python SDK or a Python list-batch example.

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.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Leave a Reply

Your email address will not be published. Required fields are marked *

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

More from the Wire

  1. World desk4 min
    How to Spot an AI Voice Scam Before Sending MoneyDon’t rely on how a caller sounds. Pause, call back through a known number, and verify the emergency with another trusted person before sending money.
  2. Mountain View desk4 min
    Google’s SynthID Detector: How to Check AI-Generated Images, Video and AudioGoogle’s SynthID Detector looks for an embedded watermark in supported images, video and audio. Here is what its results do—and do not—show.
  3. Redmond desk20 min
    How to create a link to File or Folder in Windows 11Windows 11 gives you several ways to point to a file or folder without moving or duplicating it. You can create a desktop shortcut,…
Recommended PC Tool
Recommended PC Tool
Outdated Drivers Are Slowing You DownFree scan - exact matches
Windows Errors? Fix Them Before They SpreadFree repair scan

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.