# CurlShot: questions and answers

## What is CurlShot?

CurlShot takes a screenshot of any web page. You give it the address of the page, it opens the page the way a normal browser would, and it hands you the screenshot as an image or a PDF.

## Do I need to install anything?

No. It works right on this page, in any browser, on a computer or a phone. There is nothing to download or set up.

## Is it free?

You can try it on this page without an account. A free account gives you 100 screenshots every month, and you do not need a card to sign up. If you need more, the paid plans have a fixed price each month.

## Can it take a screenshot of the whole page, not only the part I see on my screen?

Yes. Choose "Whole page" and the screenshot runs from the top of the page to the very bottom, including everything you would normally have to scroll to see.

## Can I get a PDF instead of an image?

Yes. Choose "PDF" and the page is laid out on paper-sized pages, ready to print, email or file.

## Can it hide cookie pop-ups and ads?

Yes, on most websites. Cookie pop-ups, ads and chat bubbles are removed before the screenshot is taken, so you get a clean page. It does not catch every one on every site.

## Why did my page not work?

CurlShot can open any page that anyone can visit without a password. Pages behind a login will show the login screen instead, and a few websites turn away visitors that are not people. Check the address for typos and try again.

## What counts as one screenshot?

One screenshot that worked. If a screenshot fails, it does not count. The free plan includes 100 screenshots every month.

## What happens when I use up my screenshots for the month?

It stops until the next month starts, or until you move to a bigger plan. Plans have a fixed monthly price, so you are never charged extra for going over.

## Is there a screenshot API for developers?

Yes. One HTTP request returns a PNG, JPEG, WebP or PDF of a URL, or of HTML or Markdown you send. The browsers run on our side, so it works from any language and any server. Signed links let you put a screenshot URL straight into a web page without exposing your key.

## Can the API capture pages behind a login or on a private network?

It can capture a page behind a login when you send what the page needs: cookies, extra headers or an Authorization header. Local and private addresses are refused on purpose; for those, send the HTML directly and it is rendered the same way.

## Can AI agents use it?

Yes. There is an MCP server with a take_screenshot tool, an OpenAPI description, an llms.txt map, and a markdown version of every docs page.

## How do I screenshot an entire web page, not only the part I see?

Paste the page address into CurlShot and keep "Whole page" selected. The screenshot covers the page from the top to the bottom, including everything you would have to scroll to see.

## Do images further down the page appear in the screenshot?

Yes. Many pages load images only when you scroll to them. CurlShot scrolls through the page first so those images load, then takes the screenshot.

## Is there a limit to how tall the page can be?

Yes. Very long pages are cut off at a maximum height so the image stays a usable size. The limit is higher on paid plans, and with the API you set it yourself with the full_page_max_height option.

## How do I convert a URL to a PDF?

Paste the URL into CurlShot, choose PDF and press the button. Developers send one request: the screenshot address with format=pdf.

## Can I select and copy the text in the PDF?

Yes. The PDF is made by a real browser, the same way as its "Save as PDF", so the text stays text and links keep working.

## Can I choose the paper size?

With the API, yes: paper format, landscape, margins and whether backgrounds are printed are all options. There is also an option to fit the whole page on one long sheet.

## How do I convert a URL to a PNG or JPG?

Paste the URL into CurlShot and download the screenshot. With the API, add format=png, format=jpeg or format=webp to the request.

## Which image format should I pick?

PNG is exact and best for pages with text and flat colour. JPEG and WebP make much smaller files and are the better choice for long pages and photos.

## Can I get a smaller image, such as a thumbnail?

Yes. With the API, image_width and image_height resize the result, so you can ask for a 400 pixel wide thumbnail directly.

## How can I see what my website looks like on a phone?

Paste the address into CurlShot and choose Phone. You get a screenshot of the mobile version of the page, as a phone would show it.

## Which devices can I choose?

On this page: a phone, a tablet and a computer. The API has a list of named devices, including current iPhone, Pixel and iPad models and common laptop and desktop sizes, and you can also set any width and height yourself.

## Is this a real phone?

No. It is a real browser set up like the phone: the same screen size, pixel density, touch support and browser identity. That is what decides which layout a site serves, so the result matches what the phone shows for almost all sites.

## How do I take a screenshot without the cookie banner?

Use CurlShot with "Hide ads and cookie pop-ups" switched on. With the API, add block_cookie_banners=true to the request.

## Does it work on every website?

It works on most sites, not all. The common consent tools are covered. For a site with an unusual pop-up, the API can hide any element by its selector or click a button before the capture.

## What else can be removed?

Ads, trackers and chat widgets each have their own switch in the API: block_ads, block_trackers and block_chats.

## How do I generate a thumbnail from a URL?

Paste the URL into CurlShot and choose "Just the top". With the API, add image_width to get the thumbnail at the size you need.

## Can I show the thumbnail directly in a web page?

Yes. The screenshot request is a normal web address, so it can be the source of an image. Use a signed link so your access key is not visible in the page.

## Do repeated views cost screenshots?

Not with the cache switched on. A cached screenshot is served again without counting against your allowance.

## What is a screenshot API?

A service that takes screenshots of web pages for your code. You send the address of a page, it opens the page in a browser on its own servers and returns the image, so you do not run or maintain headless browsers yourself.

## Which languages does it work with?

Any language that can fetch a URL. The docs have complete samples for cURL, Node.js, Python, PHP, Go and Ruby. There is nothing to install.

## How is usage counted?

One successful render is one screenshot, whatever its size. Failed renders and cache hits are not counted. Each plan is a fixed number of screenshots a month for a fixed price.

## Can an AI agent use it?

Yes. CurlShot has an MCP server with a take_screenshot tool, an OpenAPI description and an llms.txt file, so an agent can look at any web page.

## How do I convert HTML to an image?

Send the HTML to CurlShot in the html field of a POST request. The answer is the image file. Set viewport_width and viewport_height to the size the image should have.

## Can I use my own fonts and images?

Yes. The HTML is rendered like a web page, so fonts and images referenced by a public address load normally.

## Can I get a PDF instead?

Yes. Add format=pdf. Paper size, margins and orientation are options.

## Does it take Markdown?

Yes. Send a markdown field instead of html and it is rendered as a clean, styled page.

## How do I record a video of a website scrolling?

Send CurlShot the address of the page with format=mp4. The answer is the video file: the page from top to bottom, in a 1280 by 720 window. In the dashboard playground you do the same with a form and a button.

## Can I get a GIF instead of a video?

Yes. Ask for format=gif. A GIF is 640 pixels wide unless you set another width, and it is a much larger file than an MP4 of the same page.

## How long is the video?

As long as the page needs: a taller page gives a longer video, up to 30 seconds. Set video_duration to choose the length yourself, and the scroll speeds up or slows down to fit.

## Can I record the phone version of a site?

Yes. Add a device, for example viewport_device=iphone_15_pro, and you get a tall video of the mobile layout.

## Does a video cost more than a screenshot?

No. A video counts as one screenshot of your monthly allowance. Plans differ in how long a video may be, up to 30 seconds.

## How do I convert a web page to a JPG?

Paste the address of the page into CurlShot and press "Take the screenshot". The download is a JPG image of the page.

## Can I choose the quality of the JPG?

With the API, yes. image_quality takes a number from 1 to 100: a lower number makes a smaller file, a higher one a sharper image.

## JPG, PNG or WebP: which should I use?

JPG is the small, universal choice for pages with photos. PNG keeps text and flat colors perfectly sharp and can have a transparent background. WebP is the smallest of the three and is meant for use on websites.

## How do I take a screenshot of a website on an iPad without an iPad?

Paste the address into CurlShot and choose Tablet. The page is opened with the screen size and browser identity of a tablet, and you get a screenshot of what it shows.

## Can I get the landscape view?

With the API, yes. Add viewport_landscape=true and the tablet is turned on its side before the screenshot is taken.

## Which tablets are available?

The API has presets for the iPad, iPad mini, iPad Air and iPad Pro, and you can set any screen width and height yourself.

## How do I take a screenshot of a website in dark mode?

Send a CurlShot request with dark_mode=true. The page is asked for its dark theme before the screenshot is taken.

## Can I also turn animations off?

Yes. reduced_motion=true asks the page to stop its animations, which gives the same screenshot every time.

## Can I combine it with a phone view or a full page?

Yes. dark_mode works together with every other option: device presets, full_page, element captures and PDF.

## How do I take a screenshot of a specific element?

Add selector to a CurlShot request with the CSS selector of the element. The image contains that element and nothing else.

## What if the element appears late?

Add wait_for_selector with the same selector. The screenshot is taken only after the element is visible.

## Can I capture an area by coordinates?

Yes. clip_x, clip_y, clip_width and clip_height cut out a rectangle of the page, measured in pixels from its top left corner.

## Can I hide things inside or around the element?

Yes. hide_selectors hides any elements you name, and styles adds your own CSS to the page before the screenshot.

## How do I take a high-resolution screenshot of a website?

Add device_scale_factor=2 to a CurlShot request. The image has twice the width and height in pixels, with the same layout.

## What is the difference from a wider browser window?

A wider window changes the layout: the page shows its large-screen design. A higher pixel density keeps the layout and draws it with more pixels, so it is sharper.

## Which format is best for sharp text?

PNG keeps every pixel as it was drawn. For smaller files use WebP or JPEG with image_quality set to 90 or more.

## Can I set the exact size of the image?

Yes. viewport_width and viewport_height set the size of the browser window, and image_width resizes the finished image.

## How do I screenshot a page without the ads?

Paste the address into CurlShot. Ad networks are blocked while the page loads, so the ads never appear in the screenshot.

## What is left where the ad was?

Usually an empty space the size of the ad, or nothing at all when the page closes the gap. The content of the page is not changed.

## Can I block something else on the page?

With the API, yes. block_requests blocks any address pattern you give, block_resources blocks whole kinds of files such as fonts or video, and hide_selectors hides any element.

## How do I convert HTML to PDF?

Send the HTML to CurlShot in the html field of a POST request and add format=pdf. The answer is the PDF file.

## Do backgrounds and colors print?

Yes. Background colors and images are printed unless you switch them off with pdf_print_background=false, for a document that saves ink.

## Can I control page breaks?

Yes, with normal CSS. Rules such as break-before, break-after and break-inside work as they do when a browser prints.

## Can the whole document be one long page?

Yes. pdf_fit_one_page puts everything on a single tall page with no breaks.

## How do I convert Markdown to PDF?

Send the Markdown to CurlShot in the markdown field of a POST request and add format=pdf. The answer is the PDF file.

## Can I change how it looks?

Yes. The styles option adds your own CSS to the page, so fonts, colors and spacing can match your brand.

## Can I get an image instead of a PDF?

Yes. Leave format out for a PNG, or ask for jpeg or webp. Set viewport_width to choose how wide the page is.

## Are tables and code blocks supported?

Yes. Tables, fenced code blocks, lists, links, quotes and images are all rendered.

## What size should an Open Graph image be?

1200 by 630 pixels is the size that X, LinkedIn, Facebook and most chat apps show without cropping.

## How do I make one image per page automatically?

Keep one HTML template and fill in the title of each page before you send it to CurlShot. Each request returns the card for that page.

## Can I use a screenshot of the page itself as the image?

Yes. Send the address of the page instead of HTML, with the same window size, and the card is a screenshot of its first screen.

## Is the image rendered again every time someone shares the link?

Not with the cache switched on. The card is rendered once and repeat requests are served from storage, without counting against your allowance.

## How do I take a screenshot of a page that requires login?

Send the session cookie of a signed-in user in the cookies field of a CurlShot request. The page then opens as that user.

## What if the site uses a token and not a cookie?

Send it with the headers option, as a named HTTP header. For HTTP basic authentication use the authorization option.

## Which account should I use?

One made for screenshots, with read-only access to the pages you need and nothing else. Send the request with POST so the cookie is in the body and not in a web address.

## Can it click through a sign-in form?

A cookie or a header is the reliable way. The click option presses one element before the screenshot and scripts runs your own JavaScript on the page, for a step such as closing a dialog.

## How do I take screenshots of multiple URLs at once?

Send them to the CurlShot bulk endpoint as one list. Each item is a normal request with its own address and options, and up to 100 fit in one call.

## How do I get the results?

Ask for the status of the batch, which lists every job and a link to each finished file, or give a webhook address and each result is sent to it when it is ready.

## What does the request on this page do?

It starts one screenshot in the background and sends the result to a webhook. A bulk call is a list of requests like it, started together.

## How is a batch counted?

Like the same screenshots made one by one: each successful render is one screenshot. Failed renders are not counted. The pricing page shows which plans include bulk calls.

## How can an AI agent take a screenshot of a website?

Through the CurlShot MCP server, which gives the agent a take_screenshot tool, or with one HTTP request that returns the image.

## What does the agent get back?

The image itself, or with response_type=json a short JSON answer with a link to the file, which is easier for a tool call to pass on.

## Can the agent read the page as text too?

The service returns images and PDFs. A PDF of a page has text that can be selected and extracted, and a model that reads images can read a screenshot directly.

## How do I keep the cost of an agent under control?

Each plan is a fixed number of screenshots a month, and an access key can be revoked at any time. Repeat requests for the same page can come from the cache at no cost.
