
Google Maps Scraper Lite
scrape.ly/store/cornerledger/google-maps-scraperLead generationSEO tools
1.4K monthly users

Capture screenshots of any public web page as PNG, JPEG or PDF, in desktop, laptop, tablet or phone size, viewport or full page. Each file gets a shareable link plus the page title, status and image size.
Turn any list of public web pages into PNG, JPEG or PDF files in one run. Pick a desktop, laptop, tablet or phone screen, capture the visible screen or the whole page, and get a shareable link to every file plus the page title, HTTP status and image size. No login, no browser to install, no code.
| Field | What it does |
|---|---|
urls | Pages to capture, one screenshot each. Duplicates are captured once. |
device | desktop, laptop, macbook, tablet, tablet-landscape, mobile, android or custom. |
fullPage | true captures the whole scrollable page, false only the visible screen. |
format | png, jpeg or pdf. |
jpegQuality | JPEG quality from 1 to 100 (default 80). |
pdfPageSize, pdfLandscape, pdfPrintBackground | PDF paper size, orientation and background graphics. |
fullPageMaxHeight | Full-page screenshots stop at this height (default 20,000 px). |
waitUntil, delaySecs, waitForSelector, scrollToBottom | When the screenshot is taken. |
hideCookieBanners, hideSelectors, darkMode | How the page looks in the picture. |
viewportWidth, viewportHeight, deviceScaleFactor | Custom screen size and pixel density. |
proxyConfiguration | Scrape.ly datacenter proxies by default; residential and country options available. |
{
"urls": [
{ "url": "https://playwright.dev/" },
{ "url": "https://www.python.org/" }
],
"device": "desktop",
"fullPage": false,
"format": "png"
}
One row per URL. The file itself is stored in the run's key-value store; screenshotUrl links to it.
| Field | Description |
|---|---|
url | URL from your input |
finalUrl | Address after redirects |
statusCode | HTTP status of the page |
title | Page title |
screenshotUrl | Shareable link to the PNG, JPEG or PDF file (valid for 31 days) |
screenshotKey | Key of the file in the run's key-value store |
format, contentType | File format and MIME type |
device, viewportWidth, viewportHeight, deviceScaleFactor, fullPage | How the page was opened |
width, height | Image size in pixels (PNG and JPEG) |
pdfPageSize, pdfPages | Paper size and page count (PDF) |
fileSizeBytes | File size |
loadTimeMs, capturedAt | Load time and capture time (UTC) |
warning | Note about a partial load, a cut full-page image or an HTTP error page |
error, errorCode | Why a URL could not be captured (blocked-url, invalid-url, dns-error, timeout, navigation-error, capture-error, browser-error, storage-error) |
Example row from a real run:
{
"url": "https://playwright.dev/",
"requestedUrl": "https://playwright.dev/",
"finalUrl": "https://playwright.dev/",
"statusCode": 200,
"title": "Fast and reliable end-to-end testing for modern web apps | Playwright",
"screenshotUrl": "https://api.scrape.ly/v2/key-value-stores/<store-id>/records/0001-playwright-dev.png?signature=<signature>",
"screenshotKey": "0001-playwright-dev.png",
"format": "png",
"contentType": "image/png",
"device": "desktop",
"viewportWidth": 1920,
"viewportHeight": 1080,
"deviceScaleFactor": 1,
"fullPage": false,
"width": 1920,
"height": 1080,
"fileSizeBytes": 415918,
"loadTimeMs": 3722,
"capturedAt": "2026-10-24T14:46:31Z",
"warning": null,
"error": null,
"errorCode": null
}
A refused address looks like this:
{
"url": "http://169.254.169.254/latest/meta-data/",
"screenshotUrl": null,
"errorCode": "blocked-url",
"error": "Refused for safety: 169.254.169.254 is a private, local or reserved address. Only public websites can be captured."
}
Is it legal to take screenshots of websites? Capturing public pages is generally fine, but what you do with the images matters: respect copyright, the site's terms and privacy laws, and do not publish personal data without a legal basis. If unsure, ask a lawyer.
Do I need a login, a proxy or my own browser? No. The actor runs its own browser and uses Scrape.ly datacenter proxies by default. Pages behind a login cannot be captured.
How many URLs can I add? As many as you like; there is no limit on the number of URLs. Large lists simply take longer: at the default 2 GB about 4 pages run in parallel and 1,000 pages took about 70 minutes in our tests. The default run timeout is 1 hour: for lists of more than about 800 URLs, raise the timeout in the run options or give the run more memory (more memory also gives the browser more CPU, so pages finish faster). Screenshots finished before a timeout are kept.
Why is a cookie banner or pop-up still visible? The actor hides the banners of common consent tools. Add the banner's CSS selector to Hide elements to hide any other overlay.
What happens with very long pages? Full-page images stop at Full page height limit (20,000 px by default) and the row gets a warning. Very long, heavy pages can take several minutes in full-page mode; more memory also gives the browser more CPU.
How long do the file links work? Links are valid for 31 days. The files stay in the run's storage for your account's data retention period; download them or copy them to your own storage for longer.
Can I schedule it or use the API? Yes. Schedule runs in the console, call the actor from the Scrape.ly API, the Python or JavaScript clients, or connect it to your workflows with webhooks.
http and https pages. Local, private, link-local (cloud metadata), carrier-grade NAT and other non-public addresses, and other schemes (file:, ftp:, data:, ...) are refused, also when a page redirects to them.Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
urlsarrayRequiredURLs
Web pages to capture, one screenshot per URL. Paste full addresses such as https://playwright.dev/. Only public websites can be captured; local, private and internal addresses are refused.
deviceenumOptionaldefault "desktop"Device
Screen size and device type the page is opened with. Mobile and tablet presets use a touch screen, a high-density display and a mobile browser identity, so sites serve their mobile layout.
fullPagebooleanOptionaldefault falseFull page
Capture the whole scrollable page, not only the visible screen. Ignored for PDF, which always contains the whole page.
formatenumOptionaldefault "png"File format
PNG is lossless, JPEG makes much smaller files, PDF prints the page to a document with selectable text.
jpegQualityintegerOptionaldefault 80JPEG quality
Image quality for JPEG files, 1 to 100. Higher means sharper and larger files.
pdfPageSizeenumOptionaldefault "A4"PDF page size
Paper size of the PDF pages.
pdfLandscapebooleanOptionaldefault falsePDF landscape
Print the PDF in landscape orientation.
pdfPrintBackgroundbooleanOptionaldefault truePDF background graphics
Keep background colors and images in the PDF.
fullPageMaxHeightintegerOptionaldefault 20000Full page height limit (px)
Full-page screenshots stop at this height. A full-page image is held in memory as raw pixels while it is encoded, so pages taller than this (endless feeds, very long lists) are cut here to keep the run from running out of memory. The browser cannot produce images taller than 32,000 pixels; with a pixel density above 1 the limit is lower (32,000 divided by the density).
waitUntilenumOptionaldefault "load"Wait until
When the page counts as ready. If it never gets there, the screenshot is taken when the page timeout ends and the row gets a warning.
delaySecsnumberOptionaldefault 0Extra delay (seconds)
Wait this long after the page is ready, for animations or late content.
waitForSelectorstringOptionalWait for element
Optional CSS selector to wait for before the screenshot, for example #main or .product-grid. If it never appears, the screenshot is taken anyway with a warning.
scrollToBottombooleanOptionaldefault falseScroll to load lazy images
Scroll down the page before the screenshot so images that load on scroll appear in full-page captures. Adds a few seconds per page.
pageTimeoutSecsintegerOptionaldefault 60Page timeout (seconds)
Longest wait for a page to load. Failed loads are retried once.
hideCookieBannersbooleanOptionaldefault trueHide cookie banners
Hide the consent pop-ups of common cookie banner tools. Nothing is clicked or accepted; the banners are only hidden from the picture.
hideSelectorsarrayOptionalHide elements
CSS selectors of elements to hide before the screenshot, for example chat widgets or ads: #chat-widget, .ad-slot.
darkModebooleanOptionaldefault falseDark mode
Ask the page for its dark color scheme. Only sites that offer a dark theme change.
viewportWidthintegerOptionalWidth (px)
Screen width. Required for the Custom device; for other devices it overrides the preset's width.
viewportHeightintegerOptionalHeight (px)
Screen height. Required for the Custom device; for other devices it overrides the preset's height. With Full page off, this is the picture height.
deviceScaleFactornumberOptionalPixel density (scale)
Device pixel ratio, for example 2 for Retina-sharp images that are twice as wide and tall. Empty uses the device preset's value.
blockMediabooleanOptionaldefault trueSkip video and audio downloads
Do not download video and audio files; players show their poster image instead. Keeps runs fast and traffic small. Turn off to capture the first frame of background videos.
maxConcurrencyintegerOptionalPages at once
How many pages are captured in parallel. Empty picks a number that suits the run's memory: 4 at the default 2 GB, 6 at 4 GB. More memory also means more CPU, so pages load faster.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy configuration
Pages are opened through Scrape.ly datacenter proxies by default. Switch to residential proxies, optionally in a specific country, for sites that block datacenter addresses or show country-specific content.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| url | string | URL from the input |
| requestedUrl | string | null | URL that was opened, after cleanup |
| finalUrl | string | null | Address after redirects |
| statusCode | integer | null | HTTP status of the page |
| title | string | null | Page title |
| screenshotUrl | string | null | Shareable link to the saved file |
| screenshotKey | string | null | Key of the file in the run's key-value store |
| format | string | png, jpeg or pdf |
| contentType | string | MIME type of the file |
| device | string | Device preset |
| viewportWidth | integer | Screen width in CSS pixels |
| viewportHeight | integer | Screen height in CSS pixels |
| deviceScaleFactor | number | Pixel density |
| fullPage | boolean | null | Whole page captured (images only) |
| width | integer | null | Image width in pixels |
| height | integer | null | Image height in pixels |
| pdfPageSize | string | null | PDF paper size |
| pdfPages | integer | null | Number of PDF pages |
| fileSizeBytes | integer | null | File size in bytes |
| loadTimeMs | integer | null | Time to load the page in milliseconds |
| capturedAt | string | null | When the screenshot was taken (UTC) |
| warning | string | null | Note about a partial load or an HTTP error page |
| error | string | null | Why the URL could not be captured |
| errorCode | string | null | blocked-url, invalid-url, dns-error, timeout, navigation-error, capture-error, browser-error or storage-error |
You pay for the events the actor reports, such as each result or page it produces, plus the platform usage of your runs: compute, proxies and storage.
| Event | Charged when | Price |
|---|---|---|
| Screenshot | One saved screenshot or PDF of a web page | $0.0005 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('querystone/website-screenshot').call({
"urls": [
{
"url": "https://playwright.dev/"
},
{
"url": "https://www.python.org/"
}
],
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"DATACENTER"
]
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run querystone/website-screenshotPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://mcp.scrape.ly?tools=actors,runs,storage,docs&actors=querystone/website-screenshot"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
Inputs the developer prepared for common jobs. Open one to see its input, then copy it to your account to run it as-is or adjust it.
Two home pages captured at 1920 x 1080 as PNG images.
Five pages of documentation sites captured at laptop size in one run.
The whole page from top to bottom as a compact JPEG image.
A page printed to an A4 PDF document with background graphics.
An encyclopedia article in its mobile layout on a 390 x 844 phone screen.
A page on a tablet screen with the site's dark theme.

The 9 best web scraping tools for 2026 across platforms, scraping APIs, no-code builders, open-source libraries and AI crawlers, each with a narrow 'best for', today's prices, and a comparison table. Scrape.ly is our pick.
Read the article
What is web scraping? The automated collection of data from websites into structured records. See how it works step by step with tested Python code, what teams use it for, how it differs from crawling, APIs and screen scraping, and how to do it without code.
Read the article
The 7 best Apify alternatives for 2026, compared on what matters when you leave Apify: running your existing Actors, proxy prices per GB, free plans and spend control. Plus the exact code to switch.
Read the articleScrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes.