NewMCP server live

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 ads and cookie banners.

4.9average across
G2 — 4.8 out of 5Google — 4.9 out of 5Product Hunt — 5.0 out of 5
  • 500 free credits every month
  • No card to start
  • Failed requests cost nothing
Playground
Request
POST /screenshot
{
  "url": "stripe.com"
}
loading example…
Want every endpoint and every parameter?
The Geekflare playground has every API and option, plus saved requests. Free with 500 credits a month.
Open the playground
Trusted by teams at
PfizerNBCUniversalTCSHostingerKissflowLookoutPlivoClearSaleSparkianCBSplitOmreon
PfizerNBCUniversalTCSHostingerKissflowLookoutPlivoClearSaleSparkianCBSplitOmreon
Handled for you

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: true

Clean captures

Block ads, hide cookie banners by default, and skip CAPTCHAs where possible so you get a clutter-free result every time.

hideCookie: true

Any 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: mobile

Dark 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: dark

PNG, JPEG or WebP

Control format and compression quality. Get a hosted image URL back, or stream inline Base64 directly to AI agents.

type: webp

Global proxies

Route requests through proxies in specific countries to capture localized pricing, regional layouts, and localized content.

proxyCountry: gb
Build vs buy

What a DIY screenshot service actually takes.

Headless Chrome gets you a first screenshot in an afternoon. Making every capture look right, on every site, is the part that keeps costing you.

ProblemIn-houseWith Geekflare
RenderingRun and scale a headless browser fleet, and watch memory and cold starts.Real browser, per request
Cookie banners and adsMaintain selectors to close consent popups and block ad networks, site by site.Removed by default
Full-page capturesScroll, wait for late content, and deal with sticky headers breaking the image.fullPage: true
Devices and viewportsKeep device profiles, viewport sizes and pixel ratios up to date.device: "mobile"
Blocked sitesBuy proxies for sites that block bot traffic, in every country you need.proxyCountry: "de"
Storing imagesUpload to storage, generate links and clean up old files.Hosted URL
Regional content

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 exactly what native visitors see.

  • proxyCountry captures through any of 194 countries
  • Check regional pricing, ads and compliance banners
  • Adds 4 credits only on requests that use a proxy
0
Countries
Country
Level of geo-targeting
Opt-in
Only when you need
POST/screenshot{ "url": "apple.com", "proxyCountry": "us" }from United States
Parameters

The API parameters you'll use most.

See what each screenshot parameter does, what it costs, and when to use it.

ParameterTypeWhat it doesCredits
urlstringThe page to capture. Any public URL.—
fullPagebooleanCapture the whole page instead of just the viewport. Defaults to false.included
selectorstringCapture only the element that matches a CSS selector, such as ".hero".included
devicestringdesktop or mobile. Defaults to desktop.included
viewportWidthnumberViewport width from 320 to 3840 pixels. viewportHeight sets the height.included
typestringpng, jpeg or webp. Defaults to png. Set quality for jpeg and webp.included
themestringlight, dark or auto. Defaults to auto.included
delaynumberSeconds to wait before capturing, up to 10.included
inlinebooleanAlso return the image as Base64 and a data URI in the response.included
proxyCountrystringCapture through a proxy in this country, e.g. "de".+4
Use cases

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
Typical request
POST /screenshot
{
  "url": "https://stripe.com/pricing",
  "fullPage": true,
  "addTimestamp": true
}
What comes back
dataimage URL
hosted PNG, full page
meta.fullPagetrue
meta.addTimestamptrue
Quickstart

Your first screenshot, in a few lines.

quickstart.pyofficial SDK
# 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)
Ways in

One API. Every stack.

The same key works from an agent, a workflow builder, an SDK or your own service. Pick the lane you already live in.

MCP server

One remote endpoint exposes Geekflare's tools to any MCP client. Your agent discovers them itself: no glue code, no per-tool wiring.

ClaudeCursorCodexany MCP client
Set up the MCP server

LLM & agent pipelines

LLM-ready Markdown straight into a retrieval pipeline, with the boilerplate stripped so you spend context on content, not navigation.

RAGagentsmarkdown-llmgrounded search
See the solutions

Workflow builders

Run any endpoint as a step in a visual scenario. Useful when the person who needs the data does not write code.

ZapierMaken8n
Browse integrations

SDKs & REST

First-party typed SDKs for Python and Node. Everything else talks plain REST, from any language.

PythonNode.jsPostman
Open the API reference
Pricing

5 credits a screenshot. Here is what that buys.

Credits are shared with every other Geekflare API. Failed requests cost nothing.

5002M

Growth covers up to ~20,000 screenshots a month (100K credits), about $3.45 per 1,000 screenshots. Or $58/mo billed yearly.

screenshots · 60,000 credits
12,000
Plan
Growth · $69/mo
FreeNo card
$0/mo
~100
screenshots / month
  • 500 credits / month
  • 1 team member
  • 7 days log retention
  • 1 request per second
Starter
$19/mo
~2,000
screenshots / month
  • 10K credits / month
  • 3 team members
  • 30 days log retention
  • 5 requests per second
GrowthMost popular
$69/mo
~20,000
screenshots / month
  • 100K credits / month
  • 5 team members
  • 30 days log retention
  • 10 requests per second
Business
$349/mo
~200,000
screenshots / month
  • 1M credits / month
  • 25 team members
  • 90 days log retention
  • 25 requests per second
Start freeCompare plans and credit packsEvery account starts free. Upgrade from the dashboard when you need more, or buy a credit pack from $10.
Testimonials

Teams that stopped maintaining Puppeteer.

Read all reviews
“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.”
Dinny RobersonDeveloper
“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.”
Michael TSoftware Engineer
“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!”
Kham Nguyen DinhDeveloper
Questions

Before you integrate screenshots.

Everything else is in the endpoint docs, and our support team replies to every email.

Open the endpoint docs

A screenshot costs 5 credits. Failed requests cost nothing.

Yes. Set fullPage: true to capture the whole page from top to bottom instead of just the viewport.

PNG, JPEG and WebP. Set type, and quality from 10 to 100 for JPEG and WebP. Add inline: true to also get the image as Base64 in the response.

Yes. Pass a CSS 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.

Yes, and they are on by default. blockAds blocks ads, hideCookie hides cookie popups and skipCaptcha tries to get past CAPTCHAs.

Image URLs are hosted on the Geekflare CDN for 30 days and then deleted automatically. Use inline: true if you'd rather store the image yourself.

Some sites block automated traffic with WAFs or IP rate limits. Adding proxyCountry routes the capture through a proxy in that country, which often gets past these blocks.

Yes. Take screenshots in the dashboard playground, use it from Zapier, Make or n8n, or let AI agents call it through our MCP server.

100 screenshots a month, free.

The free tier renews every month and needs no card. Capture your first page in a single call.