Screenshot API for any website.
Capture any URL as a PNG, JPEG, or WebP image. Full page or a single element, desktop or mobile, without most ads and cookie banners.
- 500 free credits every month
- No card to start
- Failed requests cost nothing
Try it on your own URL






Screenshots that look like the real page.
No browser fleet to run and no cleanup scripts. Every request renders in a real browser and returns a clean image.
Full page or one element
Capture the entire page from top to bottom, just the viewport, or target a specific element with a CSS selector.
fullPage: trueClean captures
Block most ads, hide cookie banners by default, and skip CAPTCHAs where possible so you get a clean image.
hideCookie: trueAny device or viewport
Emulate desktop or mobile devices, set viewports from 320 to 3,840 pixels, and boost scale factors for sharp, high-DPI images.
device: mobileDark mode and timing
Render in light or dark theme, wait up to 10 seconds for delayed content to load, and turn off animations for consistent output.
theme: darkPNG, JPEG or WebP
Control format and compression quality. Get a hosted image URL back, or stream inline Base64 directly to AI agents.
type: webpGlobal proxies
Route requests through proxies in specific countries to capture localized pricing, regional layouts, and localized content.
proxyCountry: gbWhat customers say.
“Finally found a screenshot API that handles full-page captures correctly. Most others mess up the rendering of dynamic elements. Geekflare API captures the whole thing.”
“Geekflare screenshot API has been solid so far. I like how consistently it handles dynamic content and modern websites. Team feature is a plus, I can get my team members to get API key and request logs.”
“Great API and even better customer support. They went above and beyond to help me fix a rendering issue. Fast response times and effective solutions. 5 stars!”
What a DIY screenshot service takes.
Headless Chrome gets you a first screenshot in an afternoon. Making every capture look right on every site takes much longer.
Rendering
In-houseRun and scale a headless browser fleet, and watch memory and cold starts.
With GeekflareReal browser, per requestCookie banners and ads
In-houseMaintain selectors to close consent popups and block ad networks, site by site.
With GeekflareCookie banners and most ads removed by defaultFull-page captures
In-houseScroll, wait for late content, and deal with sticky headers breaking the image.
With GeekflarefullPage: trueDevices and viewports
In-houseKeep device profiles, viewport sizes and pixel ratios up to date.
With Geekflaredevice: "mobile"Blocked sites
In-houseBuy proxies for sites that block bot traffic, in every country you need.
With GeekflareproxyCountry: "de"Storing images
In-houseUpload to storage, generate links and clean up old files.
With GeekflareHosted URL
| Problem | In-house | |
|---|---|---|
| Rendering | Run and scale a headless browser fleet, and watch memory and cold starts. | Real browser, per request |
| Cookie banners and ads | Maintain selectors to close consent popups and block ad networks, site by site. | Cookie banners and most ads removed by default |
| Full-page captures | Scroll, wait for late content, and deal with sticky headers breaking the image. | fullPage: true |
| Devices and viewports | Keep device profiles, viewport sizes and pixel ratios up to date. | device: "mobile" |
| Blocked sites | Buy proxies for sites that block bot traffic, in every country you need. | proxyCountry: "de" |
| Storing images | Upload to storage, generate links and clean up old files. | Hosted URL |
See the page each country sees.
Prices, languages, promotions, and cookie notices vary by location. Pass a country code to route your request through a local proxy and capture what local visitors see.
proxyCountrycaptures through any of 194 countries- Check regional pricing, ads and compliance banners
- 0
- Countries
- 4 credits
- Added only when you pick a country
The parameters you'll use most.
What each one does and what it costs.
- urlstring—
The page to capture. Any public URL.
- fullPagebooleanIncluded
Capture the whole page instead of just the viewport. Defaults to false.
- selectorstringIncluded
Capture only the element that matches a CSS selector, such as ".hero".
- devicestringIncluded
desktop or mobile. Defaults to desktop.
- viewportWidthnumberIncluded
Viewport width from 320 to 3840 pixels. viewportHeight sets the height.
- typestringIncluded
png, jpeg or webp. Defaults to png. Set quality for jpeg and webp.
- themestringIncluded
light, dark or auto. Defaults to auto.
- delaynumberIncluded
Seconds to wait before capturing, up to 10.
- inlinebooleanIncluded
Also return the image as Base64 and a data URI in the response.
- proxyCountrystring+4
Capture through a proxy in this country, e.g. "de".
| Parameter | Type | What it does | Credits |
|---|---|---|---|
| url | string | The page to capture. Any public URL. | — |
| fullPage | boolean | Capture the whole page instead of just the viewport. Defaults to false. | Included |
| selector | string | Capture only the element that matches a CSS selector, such as ".hero". | Included |
| device | string | desktop or mobile. Defaults to desktop. | Included |
| viewportWidth | number | Viewport width from 320 to 3840 pixels. viewportHeight sets the height. | Included |
| type | string | png, jpeg or webp. Defaults to png. Set quality for jpeg and webp. | Included |
| theme | string | light, dark or auto. Defaults to auto. | Included |
| delay | number | Seconds to wait before capturing, up to 10. | Included |
| inline | boolean | Also return the image as Base64 and a data URI in the response. | Included |
| proxyCountry | string | Capture through a proxy in this country, e.g. "de". | +4 |
What you can build with the Screenshot API.
A dated record of any page
Capture full-page screenshots with timestamp for compliance records, legal evidence, or audit logs.
- Full page, top to bottom
- Timestamp watermark on the image
- Schedule captures to track changes
POST /screenshot
{
"url": "https://stripe.com/pricing",
"fullPage": true,
"addTimestamp": true
}Your first screenshot, in a few lines.
# pip install geekflare-api
from geekflare_api.client import GeekflareClient
from geekflare_api.models import ScreenshotDto
with GeekflareClient(api_key="<api-key>") as client:
result = client.screenshot(
ScreenshotDto(
url="https://example.com"
)
)
print(result)One API. Every stack.
One account works from an agent, a workflow builder, an SDK or your own service.
MCP server
Sign in once and Claude, ChatGPT, Cursor or Codex can use Geekflare's tools directly, with no glue code to write.
LLM & agent pipelines
LLM-ready Markdown straight into a retrieval pipeline, with the boilerplate stripped so you spend context on content, not navigation.
Workflow builders
Run any endpoint as a step in a visual scenario. Useful when the person who needs the data does not write code.
SDKs & REST
First-party typed SDKs for Python and Node. Everything else talks plain REST, from any language.
How many screenshots each plan covers.
Every capture costs the same, whatever the page size or format. Failed requests cost nothing.
| Covered per month | Free $0/mo No card | Starter $19/mo | Most popular Growth $69/mo | Business 500K $299/mo | Business 1M $499/mo |
|---|---|---|---|---|---|
Credits a month | 500 | 20,000 | 100,000 | 500,000 | 1,000,000 |
ScreenshotsAny size, device or format, with most ads and cookie banners removed.5 credits | 100 | 4,000 | 20,000 | 100,000 | 200,000 |
| Requests per second | 1 | 5 | 10 | 25 | 25 |
- Free$0/moNo card
- Credits a month
- 500
- Screenshots5 credits
- 100
- Requests per second
- 1
- Starter$19/mo
- Credits a month
- 20,000
- Screenshots5 credits
- 4,000
- Requests per second
- 5
- GrowthMost popular$69/mo
- Credits a month
- 100,000
- Screenshots5 credits
- 20,000
- Requests per second
- 10
- Business 500K$299/mo
- Credits a month
- 500,000
- Screenshots5 credits
- 100,000
- Requests per second
- 25
- Business 1M$499/mo
- Credits a month
- 1,000,000
- Screenshots5 credits
- 200,000
- Requests per second
- 25
Before you integrate screenshots.
Everything else is in the endpoint docs, and our support team replies to every email.
Open the endpoint docsproxyCountry adds 4 credits. Failed requests cost nothing.fullPage: true to capture the whole page from top to bottom instead of just the viewport.type, and quality from 10 to 100 for JPEG and WebP. Add inline: true to also get the image as Base64 in the response.selector to capture a single element, or set viewportWidth and viewportHeight for an exact size. fallbackToFullPage returns the full page if the selector isn't found.blockAds blocks most ads (a site's own sponsor slots can still show), hideCookie hides cookie popups and skipCaptcha tries to get past CAPTCHAs.inline: true if you'd rather store the image yourself.proxyCountry routes the capture through a proxy in that country, which often gets past these blocks.Ask AI about Geekflare
Open the question in the assistant you already use.
100 screenshots a month, free.
No card needed, and it renews every month. Capture a page you care about and see how it looks.
