Screenia is a free self-hosted website screenshot generator with API. You can self-host it on a server and generate unlimited website screenshots in a few clicks. It comes with API support, and in this you can programmatically generate website screenshots by making simple API calls. It gives you very detailed installation instructions and API code example on its GitHub repository that you can just copy and execute.
We have covered many website screenshot grabber tools but this one here is kind of special. Here you can self-host it on your own and even run it locally. It will help you take unlimited website screenshots of both front page and full page. The API that it comes with supports some extra parameters to deal with the Ajax and JavaScript. You can use it to take a screenshot of any publicly available website and save it as a PNG and JPG image.
In this post, I will show you how to set it up on a custom free server on Vercel.
Installing and Setting Up Screenia:
To host this on your own, you need a free GitHub and Vercel account. The GitHub account will be used to store the back-end code and Vercel will take care of the hosting part.
So just go ahead and create your GitHub account and fork this GitHub repository.
Sign up on Vercel and connect your GitHub account. It is very easy to do that as you just have to authorize Vercel to access your GitHub.
Now click on the deploy button that is present in the Readme file of the forked/original GitHub repository of this tool. Wait for a few seconds and then enter the name of the Vercel project and click Create.
After giving the name, just start the deployment process. It will take a few seconds to install and configure all the dependencies. You just have to be a little patient while it is setting up this screenshot software.
Now, when the process has finished, you just have to click on the URL that it generates to access the newly hosted web app. The main interface of this website screenshotter looks like this.
At this point it is ready to take a screenshot of any website. I refer to the following section to see how to use it now.
Using Screenia to Generate Website Screenshots:
For now, there is no sign up or registration required to use it. On the main home page, there is a box in which you have to enter link of the target website you want to take a screenshot of.
After entering the screenshot hit enter and wait for a few seconds. It will show you preview of the website and when the preview has finally generated completely, you can download it.
After the preview has been generated, simply click on the download button and then choose image format to save the screenshot. It gives you two options: JPG and PNG for saving your screenshot.
This is how you can take website screenshots using this self-hosted website screenshot generator. There is another way you can use it to grab website screenshot and that is by making an API call.
If you have some knowledge of Node.js and JavaScript, then you can just use this following script to take a screenshot of websites. In this script, you just have to replace the server URL with the URL of screen that is running on your Vercel account.
let url = 'SERVER_URL?url=WEBSITE_URL/&type=png';
let options = {method: 'GET'};
fetch(url, options)
.then(res => res.blob())
.then(blob => URL.createObjectURL(blob))
.catch(err => console.error('error:' + err));
This is all it takes to set up your own personal website screenshot generator. However, a little downside of this tool is that right now it does not support full page clean shots, but they are planned in the road map. From next week, it will be able to save full length screenshots of websites.
Closing thoughts:
If you are looking for a free and open-source website screenshot generator, then you have landed on the right place. Screenia here is the website screenshot generator you are looking for. Just grab its source code and deploy it on a free server and use it unlimited number of times. What I like most about this tool is that it even comes with an API support. So, as a programmer you will be able to use this tool to take multiple screenshots of multiple websites in a batch.