---
id: capture-screenshot
title: Capture a screenshot using Puppeteer
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
import RunnableCodeBlock from '@site/src/components/RunnableCodeBlock';
import ApiLink from '@site/src/components/ApiLink';
import PuppeteerPageScreenshotSource from '!!raw-loader!roa-loader!./puppeteer_page_screenshot.ts';
import PuppeteerCrawlerUtilsSnapshotSource from '!!raw-loader!roa-loader!./puppeteer_crawler_utils_snapshot.ts';
import PuppeteerCrawlerPageScreenshotSource from '!!raw-loader!roa-loader!./puppeteer_crawler_page_screenshot.ts';
import PuppeteerCrawlerCrawlerUtilsSnapshotSource from '!!raw-loader!roa-loader!./puppeteer_crawler_crawler_utils_snapshot.ts';
## Using Puppeteer directly
:::tip
To run this example on the Apify Platform, select the `apify/actor-node-puppeteer-chrome` image for your Dockerfile.
:::
This example captures a screenshot of a web page using `Puppeteer`. It would look almost exactly the same with `Playwright`.
Using `page.screenshot()`:
{PuppeteerPageScreenshotSource}
Using `utils.puppeteer.saveSnapshot()`:
{PuppeteerCrawlerUtilsSnapshotSource}
## Using `PuppeteerCrawler`
This example captures a screenshot of multiple web pages when using `PuppeteerCrawler`:
Using `page.screenshot()`:
{PuppeteerCrawlerPageScreenshotSource}
Using the context-aware `saveSnapshot()` utility:
{PuppeteerCrawlerCrawlerUtilsSnapshotSource}
To take full page screenshot using puppeteer we need to pass parameter `fullPage` as `true`in the `screenshot()`: `page.screenshot(fullPage: true)`
In both examples using `page.screenshot()`, a `key` variable is created based on the URL of the web page. This variable is used as the key when saving
each screenshot into a key-value store.