Google Image Scraper avatar

Google Image Scraper

Pricing

from $1.50 / 1,000 unique image scrapeds

Go to Apify Store
Google Image Scraper

Google Image Scraper

Google Images Scraper that returns up to 30,000 full-size image URLs per keyword, not gstatic thumbnails. Source page, alt text, and dimensions included. A Google Image Search API alternative, no API key.

Pricing

from $1.50 / 1,000 unique image scrapeds

Rating

0.0

(0)

Developer

Thodor

Thodor

Maintained by Community

Actor stats

1

Bookmarked

27

Total users

3

Monthly active users

15 hours ago

Last modified

Share

A Google Images scraper tool for AI training image datasets. Pull tens of thousands of full-resolution image URLs from one keyword, each with true pixel dimensions, source page, and caption. Real files on origin servers, not encrypted-tbn0.gstatic.com thumbnails. No API key, no browser.

  1. You enter a keyword.
  2. Every result's "visually similar images" page is opened automatically.
  3. Full-size URLs come back as JSON, CSV, or Excel, deduplicated.

📊 How many images do I get?

There's no fixed cap. max_results stops the run wherever you want it to.

What you wantImagesSwitch on
🌍 As many as possible, anywhere~100,000Related images + Expand markets ✅
📍 Everything for one country~20,000Related images ✅, Expand markets ❌
A quick sample~250see section below

✅ Both switches are on by default. The one number that decides your run is Max Results: raise it and you get the volume above, leave it and the run stops early.

Measured on cat: 19,874 from one market, 28,986 once a second market is added. The 100,000 is the theoretical maximum across all fifteen markets.

🌍 As many as possible, don't care where from

Sweeps all fifteen markets and stops at max_results. Right for dataset building. Every row records its market, so you can still filter later. Your output no longer represents any single market, which is right for datasets and wrong when local ranking is the point.

{"search_query": "golden retriever", "max_results": 100000,
"get_related_images": true, "expand_markets": true}

📍 Everything for one country

Results stay ranked for one market. Right for SEO checks and brand monitoring, where an image that only ranks in Brazil is noise.

{"search_query": "wanderschuhe", "max_results": 20000,
"country": "DE", "language": "de", "get_related_images": true}

⚖️ Compared to other Google Images scrapers

Typical scraperThis actor
Images per keyword❌ ~100, first page only✅ up to ~100,000
Related images❌ Never opened✅ Opened for every result
Markets❌ One✅ 15
Image URL❌ gstatic thumbnail, ~250px✅ Full-resolution original
width / height❌ The thumbnail's✅ The original's
BillingPer request✅ Per unique result

Why they stop early. Google's pagination dies around 250 images. Getting past it means opening the "visually similar" page behind each result, which normally needs a browser. Its address turns out to be computable, so this actor fetches it over plain HTTP instead.

Why the URLs are full-resolution. The original is never in the <img> tag, only in a JSON blob behind it, one array after the thumbnail. Anything reading rendered HTML sees the thumbnail and stops.

["https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9…", 259, 194] <- what others return
["https://upload.wikimedia.org/…/2025_Bart_De_Wever.jpg", 333, 250] <- what you get

🧠 Build AI training image datasets

Training a model needs volume plus enough metadata to filter and attribute. A standard SERP API gives you ~100 results and a thumbnail URL, which is neither.

  • Filter before you download: width and height are the original's, so drop anything under your resolution floor without fetching it
  • Provenance on every row: page_url and title are what licence review and dataset documentation need
  • Deduplicated: an image reached through many paths is emitted once, so your set doesn't over-weight popular images
  • Diversity controls: depth_level and market let you balance or stratify the set

Also used for computer vision sourcing, vision-language captioning pairs, fresh eval sets, e-commerce image research, and cross-country brand monitoring.

📥 Input

FieldTypeDefaultDescription
search_querystringrequiredKeyword to search
max_resultsinteger200Hard cap on images. Also caps billing
get_related_imagesbooleantrueAlso collect the visually similar images behind every result
countrystringUSGoogle market to rank for, 50 supported. Always searched first
expand_marketsbooleantrueSweep the other 14 markets once country is exhausted. Set false to keep every result ranked for country
languagestringenInterface language

⚡ A quick sample

Leave max_results low and the run stops before expansion ever starts, because your own country is always searched first and supplies ~250 on its own. You get the same set you'd see typing the query into Google Images yourself, in seconds, which is useful for checking output shape before committing to a large run.

{"search_query": "golden retriever", "max_results": 250}

📤 Output

One flat JSON object per image.

Google Images scraper output: full-resolution image URLs with pixel dimensions, source pages and captions for building AI training image datasets

FieldTypeDescription
image_urlstringFull-resolution original on the origin server
thumbnail_urlstringGoogle's gstatic thumbnail
width, heightintPixel dimensions of the original
page_urlstringPage hosting the image
titlestringThat page's title, the caption Google prints under the result
related_linkstringLink to visually similar images
search_querystringKeyword used
marketstringGoogle market that surfaced this image
depth_levelint0 = found by the search, 1 = found via related images
{
"image_url": "https://upload.wikimedia.org/wikipedia/commons/thumb/4/43/2025_Bart_De_Wever.jpg",
"thumbnail_url": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcR0OZnTrRQLi8&s",
"width": 250,
"height": 333,
"page_url": "https://es.wikipedia.org/wiki/Bart_De_Wever",
"title": "Bart De Wever - Wikipedia, la enciclopedia libre",
"search_query": "bart de wever",
"market": "US",
"depth_level": 0
// HIDDEN: related_link
}

title is the source page's title, not the image's HTML alt attribute, which Google doesn't ship in this payload. Present on 100% of direct results and 87% of related-image results.

In Python

import requests
resp = requests.post(
"https://api.apify.com/v2/acts/thodor~google-image-scraper/run-sync-get-dataset-items",
params={"token": "YOUR_APIFY_TOKEN"},
json={"search_query": "golden retriever", "max_results": 5000,
"get_related_images": True},
)
# Keep only images big enough to train on, without downloading the small ones
usable = [r for r in resp.json() if (r["width"] or 0) >= 768 and (r["height"] or 0) >= 768]

💰 Cost

Billing is per unique result, at the rate on the price card on this page. Duplicates and rows without a resolved full-size URL aren't charged. max_results is both the cap and the brake, so set it to the dataset size you actually want.

❓ FAQ

Are width and height the thumbnail's or the original's? The original's, which is what makes it practical to filter to trainable resolution before downloading.

Does it return image alt text? It returns title, the source page's title, which is Google's caption under each result. Not the alt attribute, which Google doesn't include. Use page_url to fetch the real alt text from the source.

Why doesn't it go deeper than one level of related images? It reaches more, but relevance drops off by the third or fourth level and you start collecting things that aren't your query. That trade shouldn't be made for you. If you need it, open a ticket on the Issues tab and I'll enable it.

Is there an official Google Images API? No, discontinued in 2011. The nearest option, the Custom Search JSON API, returns at most 10 images per request on a 100-query daily free tier.

How is this different from SerpApi or Zenserp? They return roughly the first 100 results and bill per request. This reaches tens of thousands from one query and bills per unique result. No API key.

Can I use the images commercially? The actor returns URLs and metadata, not licences. Check terms per source via page_url. Nothing here grants rights to the underlying files.

What if Google rate-limits a run? Everything collected is saved and you're only billed for unique results. For very large jobs, several smaller runs beat one enormous one.

🛟 Support

Something not working? Message me in the Issues tab and I'll look into it quickly. I'm a solo dev, so don't hesitate.

Scraping a different source? Try the Bing Images Scraper.

  • Thodor