If you want to track how a competitor's homepage or prices change, or keep a record of how your own site looked before an update, you end up taking screenshots by hand. Each one comes out a different size, and you forget to take them. shot-scraper grabs a screenshot, PDF or the HTML of a page with a single command. It also records demo videos and pulls data out of a page using JavaScript.
Who this is NOT for
It is not for you if you have never opened a terminal and have nobody to install Python for you. Everything runs through commands, with no window and no buttons. It is also not worth it for one screenshot a month: your browser's own screenshot tool is enough. And if you want to pull data from a website without writing code, this will not help: data extraction asks you to write JavaScript.
Under the hood it uses Playwright. Its advantage over using Playwright directly is that you don't write a program: one line gives you a .png file named after the page. The value is in repetition, not in a one-off screenshot. The cases in its README are automated captures: the Datasette documentation, a bot that captured newspaper homepages, and dashboards Reuters keeps updated for its newsletters. The mistake almost everyone makes is installing it with pip and skipping the second step, `shot-scraper install`, which downloads the browser. Without it, nothing gets captured. It is maintained: the last commit is from Sep 24, 2026.
Your first step
Run pip install shot-scraper, then shot-scraper install, then shot-scraper https://your-site.com. A .png of your own website should appear in your folder.
The shot-scraper implementation guide
The project belongs to Simon Willison (simonw) and it is free: the link beside asks for nothing. The guide to set it up without getting lost is ours: step by step, common mistakes and a checklist. Leave your email and we will send it.
No spam. Unsubscribe anytime.