To scrape Google Images, give a ready-made Actor one or more search queries, and it returns one row per image: the full-size image URL with its width and height, Google's thumbnail, the page that published the image, the site name, the page title and the image's rank. Filters for country, language, size, color, type, time and usage rights work like the ones in Google's own toolbar. On Scrape.ly that's a preset and one click, or one API call, with no Google account and no proxy setup.
This guide covers the fields you get, the no-code steps, the same job in curl, Python, Node.js and through an AI agent, a real run from 27 October 2026 (Creative Commons images of mountain lakes from the past year), its log and exact cost, and what Google's own image API offers today.
What data you can get from Google Images
The Google Images Scraper returns one row per image:
| Field | What it holds |
|---|---|
query, position | The search query and the image's rank for it, starting at 1 |
imageUrl, imageWidth, imageHeight | The full-size image and its size in pixels |
thumbnailUrl, thumbnailWidth, thumbnailHeight | Google's thumbnail of the image |
contentUrl, title | The page that published the image and its title |
origin, source | The host name and the site name as Google shows it |
googleUrl | Google Images' preview link for the image |
The Actor returns URLs, not files. Download the images you're allowed to use yourself.
How to scrape Google Images without code
- Open the Google Images Scraper in the Scrape.ly Store.
- Pick the Creative Commons mountain lake images, 10 images preset. It fills in this input:
{
"queries": ["mountain lake"],
"maxResultsPerQuery": 10,
"usageRights": "creativecommons",
"timeRange": "year"
}- Change the query, add more on new lines, and click Start. Our run took 8 seconds.
- Open the dataset and export it as JSON, CSV, Excel or HTML.
The input fields that matter most:
queries: search queries, one per line; duplicates and extra spaces are removed.maxResultsPerQuery: images per query. Google usually has a few hundred per query, and the run stops when it runs out.countryCode,languageCode: search from a country (us,de,fr) in a language.imageSize,imageColor,imageType:large,mediumoricon; color, grayscale or transparent; photo, clip art, line art, animated or face.timeRange: images from the past day, week, month or year.usageRights:creativecommonsorcommercial, as Google labels them.
The large Berlin skyline photos preset searches from Germany with size filters, and golden retriever images, 60 goes past the first page.
How to scrape Google Images with the API
Create a token under Settings → API & Integrations in the dashboard and store it as SCRAPELY_TOKEN. 250 images take about three seconds of scraping, so the synchronous endpoint fits:
curl -X POST "https://api.scrape.ly/v2/actors/querystone~google-images-scraper/run-sync-get-dataset-items" \
-H "Authorization: Bearer $SCRAPELY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"queries": ["red bicycle", "vintage road bike"], "maxResultsPerQuery": 100, "countryCode": "us", "imageSize": "large"}'Add ?format=csv for a CSV. The API docs cover asynchronous runs for big query lists.
In Python (pip install scrapely-client-python), this image-SEO check searches your product keywords and reports where your own site ranks in Google Images, and which sites take the top spots:
import os
from collections import Counter
from scrapely_client import ScrapelyClient
client = ScrapelyClient(os.environ["SCRAPELY_TOKEN"], api_url="https://api.scrape.ly")
MY_SITE = "example-shop.com"
run = client.actor("querystone/google-images-scraper").call(
run_input={"queries": ["linen duvet cover", "washed linen sheets"], "maxResultsPerQuery": 100}
)
top_sites = Counter()
for img in client.dataset(run.default_dataset_id).iterate_items():
if img["position"] <= 20:
top_sites[img["origin"]] += 1
if MY_SITE in (img.get("origin") or ""):
print(f'{img["query"]}: position {img["position"]}, {img["imageWidth"]}x{img["imageHeight"]}')
print(top_sites.most_common(10))In JavaScript or Node.js (npm install scrapely-client), collect Creative Commons candidates for a moodboard, large and recent only:
import { ScrapelyClient } from 'scrapely-client';
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN, baseUrl: 'https://api.scrape.ly' });
const run = await client.actor('querystone/google-images-scraper').call({
queries: ['alpine hut interior', 'scandinavian cabin'],
maxResultsPerQuery: 50,
imageSize: 'large',
usageRights: 'creativecommons',
timeRange: 'year',
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
for (const img of items) console.log(img.imageWidth, img.imageHeight, img.contentUrl);The Google Images API page shows the same Actor as a ready-made API, and the Python client docs cover paging through large datasets.
With an AI agent (MCP)
Scrape.ly runs a hosted MCP server at https://mcp.scrape.ly. In Cursor, add it to ~/.cursor/mcp.json:
{
"mcpServers": {
"scrapely": {
"url": "https://mcp.scrape.ly",
"headers": { "Authorization": "Bearer YOUR_TOKEN" }
}
}
}In Claude Code, run claude mcp add --transport http scrapely https://mcp.scrape.ly, then /mcp to sign in with OAuth. Then ask: "Use scrapely to get the top 50 Google Images results for 'standing desk' in the US and tell me which sites rank most often and what image sizes they use." The MCP docs list ChatGPT, VS Code, Windsurf and the other clients.
A real run: Creative Commons mountain lakes
We ran the preset as-is on 27 October 2026. It saved 10 images in 8 seconds. Six of them:
| Position | Site | Size (px) | Page title |
|---|---|---|---|
| 1 | Wikimedia Commons | 4032 × 2688 | File:Chola Mountain Lake, Nepal.jpg |
| 2 | Public Domain Pictures | 1280 × 1920 | Mountain Lake at Sunrise – Free Public Domain Image |
| 3 | Discover Colorado's Lakes & Reservoirs | 1024 × 683 | Lake Como — Alamosa County, Colorado |
| 4 | StockSnap.io | 960 × 640 | Mountain Lake Free Stock Photo |
| 5 | Public Domain Pictures | 1920 × 1280 | Sunrise over Mountain Lake – Free Public Domain Image |
| 9 | StockSnap.io | 960 × 719 | Mountain Lake Free Stock Photo |
2026-10-27T17:17:46.409Z [scrapely.actor] INFO Saved 10 images for 1 queries. Search API calls: 1.
2026-10-27T17:17:46.409Z [scrapely.actor] INFO [Status message]: Saved 10 images for 1 queries.What the ten rows show:
- The license filter favors free-image sites. Wikimedia Commons, Public Domain Pictures and StockSnap held five of the ten spots; the rest came from Flickr, DeviantArt, a regional lakes site and a personal travel blog.
- Google's license label is a starting point.
usageRightsfilters on how Google classifies an image, and two of the ten came from sites where each image has its own license terms. OpencontentUrland check the license on the page before you reuse anything. - Sizes vary 4×. From 960 × 640 to 4032 × 2688, and one portrait image (1280 × 1920) among landscapes. Filter on
imageWidthandimageHeightfor the format you need, or setimageSize: "large". - Sites repeat. Three sites appeared twice in the top ten. For a varied set, keep the best image per
origin. - One request. The log counts a single search API call for ten results, which is why a run takes seconds and costs fractions of a cent.
What it costs
The Actor charges one event per image saved, platform usage (compute, proxy and browser) included. Price checked on the Store page on 27 October 2026: $0.00201 per image, which is $2.01 per 1,000 images.
Our run: 10 × $0.00201 = $0.0201 at list price ($0.01608 charged, because our plan has a Store discount).
At scale: tracking the top 50 images for 100 keywords every week is 5,000 images, $10.05 a week. A one-off dataset of 300 images for each of 20 queries costs about $12. The Free plan's $5 of monthly usage covers about 2,500 images.
What to watch out for
- A few hundred images per query. Google stops there; very large limits end at that ceiling, and the run says when Google ran out.
- Results depend on country and language. They can differ slightly from what you see in your own browser; set
countryCodeandlanguageCodeexplicitly for repeatable tracking. - No reverse image search. For search by image, use the Google Lens Scraper.
- URLs, not files. Download only what you have the right to use, and expect some image URLs to stop working as sites change.
- Copyright stays with the owner. Every image belongs to whoever made it, whatever Google's filter says.
Is it legal to scrape Google Images?
The Actor collects publicly visible search results without logging in. Google's Terms of Service (effective July 30, 2026, read on 27 October 2026) prohibit "using automated means to access content from any of our services in violation of the machine-readable instructions on our web pages (for example, robots.txt files that disallow crawling, training, or other activities)". Our robots.txt and web scraping guide explains how to read those instructions.
The bigger question is usually the images themselves. Search results are links; the photos behind them are copyrighted works, and photos of people are personal data under the GDPR. Use the license filter, check the source page, and keep image datasets for analysis unless you have the right to republish. This is not legal advice; for a commercial project, ask a lawyer about your case.
Why Scrape.ly for Google Images
- Google's own route is closing. Its Custom Search JSON API overview says: "The Custom Search JSON API is closed to new customers", and "Existing Custom Search JSON API customers have until January 1, 2027 to transition to an alternative solution." The Actor works today, with one Scrape.ly token.
- Every row is complete. Full-size URL, pixel size, thumbnail, source page, site and rank together, with Google's real filters.
- Seconds per query. Pages are fetched in parallel; 250 images in about three seconds.
- Search, images and more on one platform. The same token runs Google search results, Google Shopping and Pinterest, plus an MCP server for AI agents.
FAQ
Can you scrape Google Images for free?
Yes. The Free plan includes $5 of usage credit every month with no credit card, which covers about 2,500 images at list price.
Is there an official Google Images API?
Google's Custom Search JSON API, which could return image results, is closed to new customers, and existing customers have until January 1, 2027 to move to an alternative. The Actor returns Google Images results as JSON through the Scrape.ly API.
How many images can I get per query?
As many as Google has, usually a few hundred. Set maxResultsPerQuery high and the run saves everything, then says if Google ran out.
Can I filter Google Images by license?
Yes. Set usageRights to creativecommons or commercial. It filters on Google's label, so check the license on the source page before reuse.
Does the scraper download the image files?
No. It returns the full-size URL, the thumbnail URL and the source page. Download the files you need yourself.
Can I scrape Google Images with Python?
Yes. Install scrapely-client-python and call querystone/google-images-scraper, as in the image-SEO script above. The scraping runs in the cloud, so you don't manage proxies or Google's internal endpoints.




