Best screenshot API: 3 APIs an agent can call
Screenshot API comparison: three website screenshot APIs an agent can call, with full-page and viewport options, output format and live price per call.
The looot team · , updated · 10 min read
On this page
A screenshot API takes a URL and returns an image of the page, so an agent can see what a person would see. Agents use one to feed a vision model, to check that a deploy did not break a layout, or to keep a dated copy of a page. Running your own headless browser for that means installing Chromium, handling cookie banners and waiting for scripts to finish.
This post ranks the three website screenshot APIs in the looot catalog that an agent can call per page. It covers what each returns, which options each one takes (full page, viewport size, a wait before capture), live prices, a guide for choosing, a prompt and a FAQ. All three also scrape a page to markdown, so we compare that too.
Best screenshot API: the short answer
Each provider wins a different job. Pick by what you need back, not by the brand.
- Context.dev, best for full-page captures of sites with cookie popups: it takes a domain or a direct URL and can dismiss the banner first.
- ScrapeGraphAI, best for setting the exact image size: width, height and quality are parameters, and it returns an image URL.
- Steel, best when the page needs time to render: a delay of up to 10 seconds waits for scripts before the capture.
| Provider | What the screenshot endpoint returns | Options in the catalog description | Other web capabilities in the catalog | Billing unit |
|---|---|---|---|---|
| Context.dev | The screenshot with height and domain | fullScreenshot, viewport, waitForMs, colorScheme, handleCookiePopup | Markdown scrape, HTML scrape, image scrape, crawl, extract, search, site map | Per call |
| ScrapeGraphAI | An image URL | fullPage, width 320 to 3840, height 200 to 2160, quality 1 to 100 | Markdown scrape, AI extract to JSON, crawl, search | Per call |
| Steel | A screenshot of the page | delay up to 10,000 ms, default 2,000 | Markdown or HTML scrape, page to PDF | Per call |
Prices are read from the catalog when the page loads, one row per provider.
Key takeaways
- Only ScrapeGraphAI says in its description that it returns an image URL. The other two describe "the screenshot" without saying whether it comes as a link or as encoded data, so test one call before you wire the output into a vision model.
- Only Context.dev lists a cookie popup option and a color scheme option. That matters for archiving, where a banner over the content ruins the copy.
- Steel lists no full-page or viewport option. It captures what its browser shows after the delay.
How we ranked these screenshot APIs
We read the public looot catalog on 2026-11-04 and kept every provider with an endpoint tagged web_screenshot that the blog can price. We ordered them by the price per call of that endpoint, cheapest first. All three bill per call, one page per call, so no per-result price had to be converted. If two had tied on price, breadth of other web capabilities in the catalog would have broken the tie.
We did not run these endpoints for this post. The catalog marks all three as unverified and publishes no success rate or speed figure for them, so we rank on neither. We do not rank image quality either. The blog's provider snapshot is dated 2026-10-12.
1. Context.dev, best for full-page captures with cookie banners
The endpoint context-dev-web-screenshot captures a screenshot of a website. You send either a domain or a directUrl. Optional fields refine it: fullScreenshot for the whole page, viewport for the window size, waitForMs for a wait before capture, colorScheme for the color scheme, and handleCookiePopup. The response holds the screenshot plus the page height and domain. Context.dev has more web capabilities in the catalog than the other two, from markdown and HTML scrapes to a crawl and a site map.
Best for
- Archiving a homepage each week, with the cookie banner handled so the content is visible.
- Visual checks of the same site under a different color scheme, through colorScheme.
Strengths
- One call can take just a domain, so the agent does not have to guess the right URL.
- Full page and viewport are both options, so one provider covers above-the-fold checks and whole-page archives.
Limits
- The description does not say whether the screenshot comes back as a URL or as encoded data. Read one response first.
- The call needs a domain or a directUrl. Send one of them.
Does not fit a job that needs exact pixel dimensions set per call. ScrapeGraphAI lists width and height ranges, Context.dev lists a viewport option without ranges.
2. ScrapeGraphAI, best for set image sizes and a link back
The endpoint scrapegraphai-screenshot takes a page and returns the image URL. fullPage captures the whole scrollable page. Width runs from 320 to 3840 pixels, height from 200 to 2160, and quality from 1 to 100. A URL is easy to pass to a vision model or store in a sheet. ScrapeGraphAI's other catalog endpoints include a markdown scrape, an AI extract that returns JSON for a prompt, a crawl and a search that reads each result page.
Best for
- Mobile and desktop captures of the same page, by setting width to 390 for one call and 1440 for the next.
- Feeding a vision model a link instead of a large payload.
Strengths
- The size and quality ranges are in the description, so the agent can set them without trial and error.
- The output format is stated: an image URL.
Limits
- The description lists no wait option. A page that renders late may be captured before it finishes.
- No cookie popup option is described.
Does not fit single-page apps that load content seconds after the first paint.
3. Steel, best for pages that need time to render
The endpoint steel-screenshot takes a url and a delay. The delay waits for the page before the capture, up to 10,000 ms, with a default of 2,000. The catalog warns that a slow page plus a long delay can time out, so keep the delay short. The price is flat per call. Steel has the fewest capabilities of the three: this screenshot, a scrape that returns markdown or HTML (and can add a screenshot and a PDF in the same call), and a page to PDF.
Best for
- Dashboards and charts that draw after a few seconds of JavaScript.
- Saving a page as both a PDF and an image for a record.
Strengths
- The delay is explicit and bounded, so the agent knows how long it will wait.
- The scrape endpoint can return content, a screenshot and a PDF in one call.
Limits
- No full-page, viewport or size option is described for the screenshot endpoint.
- A long delay on a slow page can time out.
Does not fit a job that needs the whole scrollable page in one image.
How to choose
What do you need back?
For a URL you can hand to a vision model, ScrapeGraphAI states it returns one. For the whole page with the cookie banner gone, use Context.dev. For a page that only looks right after its scripts run, Steel's delay is the clearest control. To try a single capture before you wire anything, the free website screenshot tool returns a PNG of one page in a desktop viewport.
Do you also need the text of the page?
All three scrape a page to markdown, so one provider can give the agent both the image and the words. This is the case for an agent that reads a pricing page and checks the layout in the same run. For a wider list of scrapers, see the best web scraping API ranking, and web crawler vs web scraper for when you need a crawl instead.
How many pages do you capture?
Every endpoint here bills per call, one page per call. A run over 500 URLs is 500 calls, so the total is the per-call price times the rows. Put the row count and a budget in your prompt so the agent stops at the limit.
Does it need to run on a timer?
Capturing a page every morning for an archive needs scheduled runs, not available yet. Run the prompt by hand, or from your own cron job that starts the agent.
| Your need | Pick | Why |
|---|---|---|
| Whole page, banner dismissed | Context.dev | fullScreenshot and handleCookiePopup |
| Exact width and height | ScrapeGraphAI | Width 320 to 3840, height 200 to 2160 |
| An image link for a vision model | ScrapeGraphAI | Returns the image URL |
| A page that renders late | Steel | Delay up to 10,000 ms |
| Image, text and PDF in one call | Steel | The scrape endpoint adds screenshot and pdf |
How to run this with an agent
- Connect your agent to looot once with the setup line in the prompt below.
- Ask it to search the catalog for "take a screenshot of a web page". It lists each endpoint with its inputs and price.
- Give it three URLs and name two providers to compare.
- Look at the images side by side. Check for cut-off content, cookie banners and blank areas that had not loaded.
- Run the one that worked on the full list, with a budget cap.
Prompt for your agent
Screenshot a list of pages
Each provider's setup page shows its endpoints: Context.dev on looot and Steel on looot. The full list is in the public catalog.
What this post does not cover
It covers one page per call through an API. It does not cover visual diffing, PDF reports or browser sessions where the agent clicks through a flow. It makes no claim about image quality or capture speed, because the catalog publishes neither for these endpoints. Screenshot providers in the live catalog that are not in the blog's provider snapshot are left out until the snapshot is refreshed.
Last checked 2026-11-04 against the public catalog at https://api.looot.ai/v1/public-catalog. Author: the looot team. The blog's provider snapshot is dated 2026-10-12.
Questions
Keep reading
Web crawler vs web scraper: what each does, which you need
Web crawler vs web scraper: a crawler finds pages by following links, a scraper reads data from a page. What a web crawler is, robots.txt, and agent use.
The looot team · · 6 min read
AI agent tools: the data and APIs an agent needs
The AI agent tools that matter most fetch real data. A plain map of the jobs agents call tools for, and how to connect them without a dozen keys.
The looot team · · 7 min read
AI agent cost: model tokens plus data calls
AI agent cost has two meters, model tokens and data calls. How to estimate each, why the data side is easier to cap, and how to read per-call prices first.
The looot team · · 7 min read
Try it with the agent you already use
Start your workspace, top up, and paste one prompt into your agent.
