ForHosting KIT · Web Scraping & Monitoring

Screenshot a website

Turn any web address into a PNG image of what a visitor sees on screen, captured by a real browser once the page and its scripts have finished loading. Keep proof of how a page looked, or watch it on a schedule. You pay per use, with no subscription.

● StablePer request + per URL$0.040
Use it from WebAPIEmailTelegramApp soon

Run this on our servers with your account. Free tools run in your browser; this one bills your KIT balance per the price above.

A live webpage is a moving target — it changes with every deploy, every A/B test, every ad rotation — so proving what it looked like at a given moment means capturing it, not describing it.

Why a page has to be captured, not described

A live web page is a moving target. It changes with every release, every layout test and every ad rotation, so proving what it looked like at a given moment means taking a picture of it. Automated checks can confirm that an element exists, but they cannot tell you it renders three pixels off, that a font failed to load or that an ad slot is showing a competitor's banner. This tool opens the address in a real browser, waits for the page to render, including content added by its scripts, and saves the visible area as an image.

Where routine screenshots help

Product teams capture a competitor's pricing page every week to follow changes without anyone visiting it by hand. Quality teams take screenshots of key pages after every test release, so a reviewer can compare them with the previous version before launch. Content sites capture any link a user shares to show a visual preview next to it, and brand monitoring services photograph client websites at regular intervals to confirm they display correctly rather than an error page. Each finished image waits behind a secure link for 24 hours.

How it plugs into monitoring and QA

Design teams capture a competitor's pricing page weekly to track changes without visiting it by hand. QA pipelines screenshot every staging deploy to catch visual regressions before they reach production. Uptime and brand-safety tools capture a page periodically to confirm it's rendering correctly and not showing an error page to real visitors.

Competitor pricing monitoring

A product team captures a competitor's pricing page on a weekly schedule to track changes without anyone visiting the site manually.

Visual regression testing

A QA pipeline screenshots key pages after every staging deploy so a reviewer can compare against the previous version before release.

Link preview generation

A content platform captures a screenshot of any URL a user shares to generate a visual preview alongside the link.

Brand and uptime monitoring

A brand safety tool periodically screenshots a set of client websites to confirm pages render correctly and aren't showing errors to visitors.

Does it capture JavaScript-heavy pages correctly?

Yes, a real browser renders the page before the image is captured, so dynamic content and JavaScript-driven layouts appear as they would to a visitor.

Are the captured pages or images stored afterward?

No, captured images are deleted after the retention window and are never used to train any model.

What can a screenshot catch that automated tests miss?

A test can confirm that an element exists, but not that it sits three pixels off, that a font failed to load or that an ad slot shows a competitor's banner. A screenshot shows the page exactly as a browser drew it.

Can I capture the same page on a regular schedule?

Yes. You can capture a page on demand or on a schedule, for instance a competitor's pricing page every week, so changes are recorded without anyone opening the site by hand.

Does it capture the whole page or only what fits on the screen?

It captures the visible area, the part a visitor sees on screen when the page opens, and saves it as a PNG image. The finished image waits behind a secure link that stays valid for 24 hours.

Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.

POSThttps://api.kit.forhosting.com/web/screenshot

Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.

curl -X POST https://api.kit.forhosting.com/web/screenshot \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com"}'
{
  "url": "https://example.com"
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "web.screenshot",
  "status": "queued",
  "_links": {
    "result": "/tasks/tsk_…/result"
  }
}

The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.

Per request$0.040
Per URL$0.001

Published price — no tokens, no invented credits. A failed task is never charged.

timeout_sec30
max_crawl_pages25
HTTPCodeMeaning
401unauthorizedMissing or invalid API key.
402insufficient_balanceYour balance doesn't cover the task price.
404unknown_typeThat task type doesn't exist.
429rate_limitedToo many requests. Use the webhook instead of polling.
422task_failedThe task failed after 3 retries. You are never charged for it.

This endpoint renders any URL and returns an image, on demand or on a schedule, without a browser open on a desk somewhere.

Why a screenshot is still the ground truth

Automated tests can assert that an element exists; they can't tell you it renders three pixels off, that a font failed to load, or that an ad slot is showing a competitor's banner. A screenshot settles that kind of question the way nothing else does, because it captures the page exactly as a browser rendered it, not as the code claims it should look. web.screenshot exists to make that capture a routine API call instead of a manual chore someone does when something looks wrong.

What happens between the request and the image

POST /web/screenshot with the target URL, receive a task_id immediately, and get the rendered image back by webhook or a signed link valid for 24 hours once it's captured. Behind the call, a real browser loads the page, waits for it to render, and takes the shot — so the result reflects JavaScript-heavy pages and dynamic content, not just the raw HTML a simple fetch would return.

From server-side rendering to headless browsers

Capturing what a page looks like used to require a person with a browser open, and later, brittle scripts driving a real browser window on a desktop that someone had to keep running. Headless browser automation changed that by letting a full rendering engine run without a visible window, which is what makes it possible to screenshot thousands of pages from a server with no monitor attached — the same capability this endpoint exposes over a simple API call.

What to expect across different kinds of pages

Static content and standard layouts capture cleanly and predictably. Pages with animations, cookie banners, or content that loads progressively as the user scrolls can render differently depending on timing, which is the same challenge any automated browser tool faces; check the endpoint reference for options that affect wait behavior and viewport size if a particular page needs tuning.

How it plugs into monitoring and QA

Billed per request plus per URL and run asynchronously, monitoring one page or ten thousand is the same integration at a different scale.

How do I take a screenshot of a webpage with the API?

Send the URL to POST /web/screenshot, store the returned task_id, and get the image by webhook or a signed link valid for 24 hours.

Is the screenshot API free?

No, there's no free tier or trial. It costs $0.040 per request plus $0.001 per URL, and a failed capture is never charged.

Can I capture the full page, not just the visible area?

Check the endpoint reference for capture options such as full-page height and viewport size, since these affect how much of a long page ends up in the image.

Can I schedule recurring screenshots for monitoring?

The endpoint itself is called on demand; recurring monitoring is built by triggering the API on your own schedule, such as a daily or weekly job.

Can I capture many URLs in bulk?

Yes, submit each URL as its own async task and collect the resulting images by webhook as they finish, which is how large batches are typically handled.

What image formats are supported?

Check the endpoint reference for the current list of supported output formats and resolution options.

Read the full KIT documentation →