--- 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.