Google Images Scraper avatar

Google Images Scraper

Pricing

from $0.38 / 1,000 image results

Go to Apify Store
Google Images Scraper

Google Images Scraper

Search Google Images and get one row per image: the thumbnail, the page the image sits on, its domain, the title and the rank. Google no longer serves original file addresses, so rows say that plainly instead of passing a thumbnail off as the original. No login. $0.40 per 1,000 images.

Pricing

from $0.38 / 1,000 image results

Rating

0.0

(0)

Developer

Dami's Studio

Dami's Studio

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

Type a search and get one row per Google Images tile: the Google thumbnail, the page hosting the image, that page's domain, the tile's title text and its rank in the results.

Read this before you buy, because it decides whether this is any use to you. Google stopped putting the original file address in the Images page, so there is no link to the full-size file here. Every row comes back with imageUrl: null and imageUrlAvailable: false rather than passing the thumbnail off as the original. What you get is thumbnailUrl and sourcePageUrl.

InputOne Google Images search
OutputOne row per image tile: thumbnail, source page, its domain, title, rank
Ceiling100 images per run, across up to 3 pages
Account neededNone, and no Google API key
Price$0.40 per 1,000 images on the Free plan, a little less on paid plans. The free plan's $5 a month covers about 12,500

🔍 What Google Images Scraper does

It runs your search against Google Images, reads the tile grid, and writes a row per tile.

Each row carries the thumbnail Google serves in the grid and its width and height, the page the image sits on and that page's domain, the tile's title text, Google's own tile id, and the rank and page it came from.

Set maxPages up to 3 to ask for more tiles. Duplicate tiles are removed across pages, so an image appearing twice arrives once.

📋 What data you get from each Google Images result

What you getField
The thumbnail Google serves in the grid, and its sizethumbnailUrl, thumbnailWidth, thumbnailHeight
The page the image sits on, and its domainsourcePageUrl, sourceDomain
The tile's title texttitle
Google's own id for the tiledocId
Rank within its page, and which pagerank, page
The search that produced itquery
The original file's address and size, which Google no longer gives, with a flag that says soimageUrl, width, height, imageUrlAvailable
Whether SafeSearch was applied, which it never issafeSearchApplied

▶️ How to scrape Google Images

  1. Open Google Images Scraper and click Try for free.
  2. Put your search into Image search query, replacing the example.
  3. Set Maximum images. Twenty is a sensible first run.
  4. Change Language and Country if you want another market's results, then click Start.
  5. Download the dataset as JSON, CSV or Excel, or read it from the Apify API.

💰 How much does it cost to scrape Google Images?

$0.40 per 1,000 images on the Free plan. Paid plans pay a little less: $0.395 on Starter, $0.39 on Scale and $0.385 on Business. On the free plan, the $5 Apify gives you each month covers about 12,500 images.

maxItems caps the rows, so it also caps what a run can bill: set it to 20 and twenty rows is the most you can be charged for.

Not charged as images: the sample row, every diagnostic row, duplicate tiles removed across pages, and a search that comes back with nothing.

📥 What you give it

{
"query": "golden retriever puppy",
"language": "en",
"countryCode": "US",
"maxItems": 20,
"maxPages": 1
}
FieldDefaultWhat it is
querynone, the box starts at red running shoesYour image search. Leave it empty and you get one uncharged sample row.
languageenGoogle interface language, like en, fr or de.
countryCodeUSTwo-letter country for localised results.
maxItems20Image rows to return, 1 to 100. It is also the most a run can bill you.
maxPages1Result pages to request, 1 to 3. More pages take longer.
safeSearchactiveNot applied. See below.
enableProxyFallbackonOn by default. Off, a search usually ends in a NOT_SERVED row with no images.
proxyConfigurationleave it aloneOptional. Your own servers are used exactly as given, in the order listed.

safeSearch does nothing. It is still in the form, and every value behaves the same: Google returns a mostly unrelated tile set when the setting is sent, so it is left off and you get Google's default filtering. Rows say so with safeSearchApplied: false. Do not build a content policy on that field.

📤 What you get back

A real row from a run on 21 September 2026:

{
"ok": true,
"rank": 1,
"query": "golden retriever puppy",
"page": 1,
"title": "How to Train a Golden Retriever Puppy: Growth & Training Timeline",
"imageUrl": null,
"imageUrlAvailable": false,
"thumbnailUrl": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRUNLBzUGVp8D2IE6U-7oqMxVJ0xJaE1GFBpikkO40bOA&s=10",
"thumbnailWidth": 678,
"thumbnailHeight": 452,
"sourcePageUrl": "https://www.akc.org/expert-advice/dog-breeds/golden-retriever-puppy-training-timeline/",
"sourceDomain": "www.akc.org",
"width": null,
"height": null,
"docId": "jUS0xT_ulT-SUM",
"safeSearchApplied": false
}
FieldHow to read it
thumbnailUrlThe only image address you get. It is Google's cached thumbnail, not the original file.
thumbnailWidth, thumbnailHeightThe served thumbnail's shape, read from the tile.
imageUrl, imageUrlAvailablenull and false on the current layout. The field exists so a row never pretends otherwise.
width, heightThe original file's dimensions. Also null, for the same reason.
sourcePageUrl, sourceDomainThe page carrying the image. This is what most people actually want.
docIdGoogle's own tile identifier, handy as a dedupe key.

🧾 Reading the output

RowHow to spot itCharged
An image tileok: true and no _sampleyes
The sample row_sample: trueno
A diagnosticok: false and an errorCodeno

The sample row is not representative of a real one. It shows imageUrl, width and height filled in, and real rows on the current layout never carry them. Run a one-image search to see the truth.

CodeWhat it means
NO_RESULTSThe page came back with no tiles on it. A very narrow search lands here.
NOT_SERVEDThis search page was not served this run. Re-run it later. Until 12 October 2026 this code was called BLOCKED or JS_REQUIRED.
RATE_LIMITEDGoogle answered with a rate limit. Wait and try again.
NETWORKGoogle was unreachable or the response never finished.
TIME_LIMITThe run reached its time limit. The images found before it stay and are charged; give the run more time to get the rest. The run ends as failed only when the limit stopped it before any image came back.

The Overview table shows imageUrl, width and height, which are always empty, and hides thumbnailUrl and sourceDomain, which are not. Read the dataset as JSON or export it, rather than judging a run by that table.

💡 What people use it for

  • Finding which sites carry a product photo, by reading sourceDomain across the whole result set.
  • Building a shortlist of pages to visit for licensing, where the source page matters more than the file.
  • Comparing what one search returns in US against DE or JP, tile for tile.
  • Checking how your own pages rank in image results for a keyword, using rank and sourceDomain.

From an image search to the people behind the pages, in three steps:

  1. Search your product's name here and copy the sourceDomain column.
  2. Open those domains and find each site's own contact page.
  3. Write to the ones using your pictures, about credit or a licence.

🚧 What it does not do

  • No original file addresses. imageUrl, width and height are null on every row from the current layout. If your project needs the full-size file, open sourcePageUrl and find it there.
  • safeSearch is not applied, whatever you set it to. safeSearchApplied: false on every row.
  • 100 images and 3 pages per run. There is no way to ask for the thousandth result.
  • A failure on page two or three throws away the earlier rows. With maxPages above 1, a run that trips on a later page writes a diagnostic and no image rows. Keep it at 1 when one page is better than nothing.
  • One search per run. Use a schedule or several runs for a keyword list.
  • It does not download images. You get addresses and metadata, and what you do with them is yours to get right: licences, copyright and each site's terms are your responsibility.
  • Rows are a snapshot. Image results reshuffle constantly.
  • It is not an official Google tool. Dami's Studio is independent and is not affiliated with or endorsed by Google, or by any other company named on this page.

🧭 Which Google scraper do you need?

If you wantUse
The web results page for a keyword: organic, ads, People Also AskGoogle Search Results Scraper
What a search box suggests as people typeKeyword Autocomplete Scraper
Interest in a keyword over time and by regionGoogle Trends Scraper
News articles with the publisher's real linkGoogle News Scraper
Image results and the pages they sit onThis one
The ads a brand runs on GoogleGoogle Ads Transparency Scraper
The photos on one Google Maps place, at the width you chooseGoogle Maps Place Photos Scraper
Pins by keyword, with the link each one points atPinterest Search Scraper

❓ Questions people ask

Can I get the full-size image file from Google Images?

Not from Google. The address is not in the page any more. Open sourcePageUrl and take it from the page itself.

Why is width empty when thumbnailWidth is filled?

thumbnailWidth is the tile Google served. width would be the original file, and Google no longer tells anyone what that is.

Do I need a Google API key?

No. Nothing to apply for and nothing to sign in to.

How many images can one search return?

Up to 100, across at most three pages. Google often runs out before that on a narrow search.

Can I call it from code or connect it to an AI assistant?

Yes. The API tab has ready-made code for Python, JavaScript and the command line. For Claude, ChatGPT or another MCP client, connect https://mcp.apify.com/?tools=fetch-actor-details,dami_studio/google-images-scraper. Either way the run happens on your Apify account at the same price.

The rows are public search metadata and addresses. The images themselves belong to whoever made them, so check licences and each site's terms before reusing anything. Apify's write-up on the legality of web scraping is a good starting point, and we are not lawyers.

🆘 If something breaks

Open the Issues tab on the actor page. Send the search and the run ID. The errorCode on the diagnostic row usually names the problem on its own.