BYTETOOLS

Thum.io API

Free website screenshot API with no key: put a page URL in the path and get a rendered PNG back, with width, viewport and full-page options. Tested example included.

No API key requiredCORS enabledHTTPSFree tier

Endpoint tested and returned HTTP 200 on 2026-08-21

What is the Thum.io API?

Thum.io renders a screenshot of any public web page from a URL you put in the request path, with no API key on the free tier. The response is the rendered PNG image itself, sized to the width you specify.

Rendering a screenshot properly means running a headless browser somewhere, which is a real operational burden for what is usually a cosmetic feature. Thum.io removes that entirely: build a URL with the width you want and the page you want, put it in an `img` tag, done. There is no account, no queue to poll and no callback to handle.

The URL grammar is the unusual part — options are path segments rather than query parameters, so `/get/width/400/https://example.com` reads as a small command chain. That composes neatly: `/get/width/800/crop/600/noanimate/https://...` chains three options. The free tier watermarks images and rate limits by IP, and a paid tier removes both. Screenshots are cached, so the first request for a page is slow while a browser actually renders it and later ones are quick.

Quick facts

Base URL
https://image.thum.io
Authentication
No API key on the free tier, which watermarks images. Paid plans use an auth token in the path and remove the watermark.
Rate limit
Free tier is rate limited by IP; no figure is published. Screenshots are cached per URL and option set.
Pricing
Free tier with a watermark; paid plans for unwatermarked and higher-volume use.
CORS
Enabled — callable directly from browser JavaScript
Official docs
Read the docs

How to use the Thum.io API

Every request below was executed against the live API on 2026-08-21, and the response shown is the real body it returned — not an illustration.

1. Screenshot a web page at a given width

GET https://image.thum.io/get/width/400/https://example.com

curl
curl 'https://image.thum.io/get/width/400/https://example.com'
JavaScript (fetch)
const res = await fetch("https://image.thum.io/get/width/400/https://example.com");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);
Python (requests)
import requests

res = requests.get("https://image.thum.io/get/width/400/https://example.com", timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200
# This endpoint returns image/png, not JSON.
# The response body is the image itself, so it can be used directly as an
# <img src="..."> or saved to a file — there is nothing to parse.
#
# Verified: HTTP 200, Content-Type: image/png

Parameters

ParameterTypeRequiredDescription
width/{n}pathOptionalOutput width in pixels, as a path segment pair. width/400
crop/{n}pathOptionalCrop the screenshot to this height, for a card-sized preview rather than a full page. crop/600
fullpagepathOptionalCapture the entire scrollable page rather than the viewport.
viewportWidth/{n}pathOptionalBrowser viewport width used for rendering, which determines which responsive breakpoint is shown. viewportWidth/1280
(target url)pathRequiredThe page to screenshot, as the final path segment, including its scheme. https://example.com

Response fields

(body)image/png
The rendered screenshot. There is no JSON — the URL is the whole interface.
Content-Typeheader
`image/png`.
(watermark)visual
Free-tier images carry a Thum.io watermark. Removing it requires a paid plan.
(caching)behaviour
Results are cached per URL and option set, so the first request is slow and subsequent ones are fast.

What you can build with the Thum.io API

  • Generate link preview thumbnails for a bookmarking tool
  • Show visual previews in a directory of websites
  • Capture a page at several viewport widths for a responsive review
  • Illustrate a portfolio with live screenshots rather than stale images

Common errors and how to fix them

Blank or partial screenshot

The page renders content after load, or blocks headless browsers.

Fix: Try `fullpage`, and accept that pages behind a bot check or heavy client-side rendering will not capture cleanly.

Slow first request

An uncached page has to be rendered by a real browser.

Fix: Expect several seconds on a cold URL. Do not put it on a synchronous render path — lazy-load the image.

Watermark on the image

That is the free tier.

Fix: A paid plan with an auth token in the path removes it. There is no free way around it.

Stale screenshot

Results are cached per URL and option set.

Fix: Vary an option, or use the documented cache-control mechanism, when you need a fresh render.

Thum.io API — frequently asked questions

Is the Thum.io screenshot API free?

There is a free tier needing no key, which watermarks the images and rate limits by IP. Paid plans remove the watermark and raise the limits.

How do I set the image size?

With path segments rather than query parameters — `/get/width/400/https://example.com`. Options chain together in the path.

Why is the first request so slow?

Because a real headless browser has to load and render the page. Once rendered, the result is cached and subsequent requests are fast.

Can it capture the whole page?

Yes, with the `fullpage` option. Without it you get the viewport only, which is usually what you want for a thumbnail.

Tools that pair with this API

Thum.io is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-21; always check the official documentation before relying on this API in production, as terms and limits can change.