# Google Images Scraper - Image URLs, Sizes, Sources & Filters (`topapi/google-images-scraper`) Actor

Scrape Google Images by search term or link: full-size image URL, width and height, thumbnail, title, source page, site, file size, dominant colour, product and licence data. Every Google filter, size and aspect checks, related searches, monitor mode. No login.

- **URL**: https://apify.com/topapi/google-images-scraper.md
- **Developed by:** [Top Api](https://apify.com/topapi) (community)
- **Categories:** SEO tools, AI, Marketing
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.22 / 1,000 images

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### What does Google Images Scraper do?

**Google Images Scraper** searches Google Images for your search terms (or pasted Google Images links) and returns one row per image result. Each row has the full-size image URL with width and height, Google's thumbnail, the title and source page, the site name and domain, file size, dominant colour, Google's image id and position, and product or licence data where Google shows it. Built for dataset builders, SEO and brand teams, e-commerce and AI pipelines that need image results as structured data.

<a href="https://console.apify.com/actors/qunQE4aDQFZ10JBPm"><img src="https://api.apify.com/v2/key-value-stores/qNQ9zP0xaj2yxGeMY/records/google-images-scraper-source.png" alt="Google Images results for red panda that Google Images Scraper turns into rows" style="width:70%"></a>

- 🖼️ **Image URLs and sizes:** the image file Google links to, its width and height, plus Google's thumbnail and its size.
- 🔗 **Where each image lives:** source page URL, page title, site name and domain, Google's image id and a Google viewer link.
- 🎯 **Every Google filter:** size (incl. "larger than" and exact size), colour, type, file type, time, custom date range, usage rights, SafeSearch, site, country and language.
- ✂️ **Checks Google skips:** aspect ratio, exact size, minimum width/height and crawler-only links are checked on every image before it is delivered.
- 🛍️ **Shopping and licence data:** product name, seller, price, currency, rating and Shopping link on product images; licence provider, terms, credit and "get this image" link on licensable images.
- 🔁 **Monitor mode:** scheduled runs deliver only images earlier runs did not deliver.
- 🔌 **No login, no API key, no cookies.** Export to JSON, CSV or Excel, or use the API and MCP.

Also searched as: Google image search scraper, Google Images API, Google image downloader (links), image SERP scraper.

### What data can you get from Google Images?

| | | |
|---|---|---|
| 🖼️ Full-size image URL `imageUrl` | 📐 Width and height `imageWidth`, `imageHeight` | 🔍 Thumbnail URL and size |
| 📰 Page title `title` | 🔗 Source page `link` | 🏷️ Site name `source` |
| 🌐 Domain `domain` | 🆔 Google image id `imageId` | 🔢 Position and page |
| 💾 File size `fileSize` | 🎨 Dominant colour `dominantColor` | 🗂️ Format (from the URL) `format` |
| ℹ️ "About this image" link | 👁️ Google viewer link `googleUrl` | 🚫 Crawler-only flag |
| 🛍️ Product title, seller, description | 💲 Product price and currency | ⭐ Product rating |
| 🛒 Google Shopping link | 📜 Licence provider and terms link | ✍️ Licence credit, creators, copyright |
| ✅ Image link check (add-on) | 🧾 Content type and bytes (add-on) | 🗓️ Search, country, language, filters |

### How to scrape Google Images with Google Images Scraper

1. [Create a free Apify account](https://console.apify.com/sign-up) — $5 of monthly credit, no card needed.
2. Open [Google Images Scraper](https://apify.com/TopApi/google-images-scraper) and click **Try for free**.
3. Type your searches into **Search terms**, one per line (e.g. `red panda`, `modern kitchen`), or paste Google Images links.
4. Pick filters if you need them (size, colour, usage rights, country…) and set **Max images per search**.
5. Click **Start** and watch the images arrive in the dataset.
6. Export as JSON, CSV, Excel or HTML, or read the dataset through the API.

### ⬇️ Input

| Parameter | Type | Description |
|---|---|---|
| **🔍 What to scrape** | | |
| `queries` | list of strings | Searches, one per line. A Google Images link also works here. Empty = the sample search `red panda`. |
| `searchUrls` | list of strings | Pasted Google Images links; each keeps its own term, `tbs` filters, country, language and SafeSearch. |
| **🎯 Google filters** | | |
| `country` | select, default `us` | Google domain, `gl` and proxy country — 51 countries. |
| `language` | select, default `en` | Interface and result language (`hl`). |
| `imageSize` | select, default `any` | Large, medium, icon, "larger than" 400×300 … 70 MP, or exact size. |
| `exactWidth`, `exactHeight` | integer | Pixels for Size = Exactly. |
| `imageColor` | select | Full colour, black and white, transparent, or one of 12 colours. |
| `imageType` | select | Photo, face, clip art, line drawing, GIF / animated. |
| `fileType` | select | JPG, PNG, GIF, BMP, SVG, WEBP, ICO, RAW. |
| `timeRange` | select | Past hour, 24 hours, week, month, year. |
| `dateFrom`, `dateTo` | date | Custom date range (wins over `timeRange`). |
| `usageRights` | select | Creative Commons, or commercial & other licenses. |
| `safeSearch` | select, default `off` | Off, Google default, or filter explicit results. |
| `site` | string | Only images from one website, e.g. `wikipedia.org`. |
| **✂️ Refine results** | | |
| `aspectRatio` | select | Tall, square, wide, panoramic — checked on each image's size. |
| `minWidth`, `minHeight` | integer, default 0 | Drop smaller images. |
| `skipCrawlerOnlyImages` | boolean | Drop Facebook/Instagram crawler-only image links. |
| `removeDuplicatesAcrossQueries` | boolean | Deliver each image once per run. |
| **➕ Extra data** | | |
| `checkImages` | boolean | Check each image link (paid add-on, see pricing). |
| `expandWithRelatedSearches` | boolean | Also search Google's related-search chips when a search runs out. |
| `maxRelatedSearches` | integer, default 5 | Related searches per search (1-30). |
| `relatedSearchesExclude` | list | Skip related searches containing these words. |
| `includeRelatedQueries` | boolean | One free row per search with Google's related searches. |
| **🔁 Monitoring** | | |
| `monitorMode` | boolean | Deliver only images earlier runs did not deliver (first results page per search). |
| `monitorStoreName` | string | Named store that remembers delivered images. |
| **📦 Output** | | |
| `maxResultsPerQuery` | integer, default 100 | Images per search (1-1,000). |
| `maxResults` | integer, default 0 | Cap for the whole run; 0 = none. |
| `compact` | boolean | Core fields only, for AI / MCP pipelines. |
| **⚙️ Advanced** | | |
| `maxConcurrency` | integer, default 4 | Google requests in flight. |
| `tbs` | string | Extra Google `tbs` codes, e.g. `isz:l,ic:trans`. |

No field is required. Other Google Images actors' input names are accepted too (`query`, `q`, `keywords`, `maxImagesPerQuery`, `gl`, `hl`, `color`, `timePeriod`, `startUrls`, `onlyNew`, `monitorName`).

#### Input JSON

```json
{
  "queries": ["red panda", "modern kitchen"],
  "maxResultsPerQuery": 100,
  "country": "us",
  "imageSize": "large",
  "usageRights": "creativeCommons",
  "aspectRatio": "wide"
}
```

#### Put one search per line

Each line is one Google Images search, like typing it into images.google.com. `red panda, snow leopard` is one search for both words together; put `red panda` and `snow leopard` on separate lines to get two result sets.

#### Paste a link to keep Google's own filters

If you already filtered results in Google Images, copy the address bar and paste it into **Google Images links**. The term, `tbs` filters, country (`gl` or the Google domain), language and SafeSearch of that link are used as they are.

#### Some filters are checked here, not by Google

Google ignores its aspect-ratio filter (measured: the same 94 of 100 images with and without it) and applies exact size loosely (54% exact on a 1920×1080 test). So aspect ratio, exact size, "larger than" sizes and the minimum width/height are checked on each image's own width and height. Images that fail are not delivered and not charged.

### ⬆️ Output

<a href="https://console.apify.com/actors/qunQE4aDQFZ10JBPm"><img src="https://api.apify.com/v2/key-value-stores/qNQ9zP0xaj2yxGeMY/records/google-images-scraper-output.png" alt="Google Images Scraper output table with Google Images results for eiffel tower" style="width:70%"></a>

A real row (run `xZZILxYJcJkNtfCto`, search "eiffel tower"; product and licence fields are null on this image):

```json
{
  "type": "image",
  "query": "eiffel tower",
  "position": 1,
  "page": 1,
  "title": "Eiffel Tower - Wikipedia",
  "imageUrl": "https://thumb.wikimedia.org/wikipedia/commons/thumb/8/85/Tour_Eiffel_Wikimedia_Commons_%28cropped%29.jpg/330px-Tour_Eiffel_Wikimedia_Commons_%28cropped%29.jpg?utm_source=en.wikipedia.org&utm_campaign=parser&utm_content=thumbnail",
  "imageWidth": 330,
  "imageHeight": 550,
  "thumbnailUrl": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcR7GJBXlQ3OF8bY82wTFblEORSQwA2Bvq5zTlMA8Q2Jxg&s",
  "thumbnailWidth": 174,
  "thumbnailHeight": 290,
  "source": "Wikipedia",
  "domain": "en.wikipedia.org",
  "link": "https://en.wikipedia.org/wiki/Eiffel_Tower",
  "imageId": "G2qeinFlUcWkQM",
  "fileSize": "36KB",
  "dominantColor": "rgb(64,93,128)",
  "format": "jpeg",
  "isProduct": false,
  "isLicensable": false,
  "country": "us",
  "language": "en",
  "scrapedAt": "2026-10-21T00:14:09.362Z"
}
```

On a licensable stock image the licence fields read, for example, `"licenseName": "iStock"`, `"licenseCredit": "©iStock, credit: K_Thalhofer"`, `"licenseCopyright": "©iStock"`, `"licenseUrl": "https://www.istockphoto.com/legal/license-agreement"`. On a product image: `"productTitle": "Cute Golden Retriever Puppy"`, `"productSeller": "Posterlounge"`, `"productPrice": 7.95`, `"productCurrency": "EUR"`.

#### Fields

Fill measured on run `xZZILxYJcJkNtfCto` (10 searches, 1,000 images, 604 different domains).

| Field | Type | Meaning | Filled |
|---|---|---|---|
| `imageUrl`, `imageWidth`, `imageHeight` | string, int | The image file Google links to and its size (median width 1,100 px) | 100% |
| `thumbnailUrl`, `thumbnailWidth`, `thumbnailHeight` | string, int | Google's thumbnail | 100% |
| `title`, `link` | string | Source page title and URL | 100% |
| `source`, `domain` | string | Site name and domain | 100% |
| `imageId`, `googleUrl`, `position`, `page` | string, int | Google's image id (stable across days), viewer link, rank, results page | 100% |
| `fileSize`, `dominantColor` | string | Google's size label ("36KB") and colour ("rgb(64,93,128)") | 100% |
| `aboutThisImageUrl` | string | Google's "About this image" page | 100% |
| `format` | string | From the URL's extension (null when the URL has none) | 91% |
| `imageUrlCrawlerOnly` | boolean | Facebook/Instagram crawler-only link | 100% (true on 1.5%) |
| `isProduct` + `productTitle`, `productSeller`, `productDescription`, `productPrice`, `productCurrency`, `productRating`, `productId`, `googleShoppingUrl` | mixed | Shopping data, only on product images | 3% of these searches; 12 of 100 on "nike air max 90" |
| `isLicensable` + `licenseName`, `licenseUrl`, `licenseAcquireUrl`, `licenseCreators`, `licenseCreatorsText`, `licenseCredit`, `licenseCopyright` | mixed | Licence data, only on licensable images | 8.5% of these searches; 99 of 100 on a stock-photo search |
| `imageAvailable`, `imageHttpStatus`, `imageContentType`, `imageBytes` | mixed | Image link check (add-on only) | 34 of 40 links served an image |
| `query`, `sourceQuery`, `country`, `language`, `filters`, `safeSearch`, `searchUrl`, `scrapedAt` | string | The search the row came from | 100% |

Product prices are in the seller's own currency (a US search mixes USD and EUR sellers).

### How can I use Google Images data?

- 🤖 **AI and ML datasets:** collect image URLs with sizes, titles and licences to build training or evaluation sets.
- 🔎 **Image SEO:** track which pages rank for your keywords in Google Images, at which position, with what file size.
- 🏷️ **Brand and product monitoring:** schedule monitor mode on your brand or product names and get new images as they appear.
- 🛍️ **E-commerce research:** see which sellers and prices Google shows on product images for a search.
- ⚖️ **Licensing and rights research:** find licensable stock images with their provider, credit and licence link, or filter to Creative Commons.
- 🎨 **Design and content research:** filter by colour, size, type and aspect ratio to shortlist visuals with their source pages.

### How much does it cost to scrape Google Images?

Google Images Scraper uses pay per event, with **no start fee and no per-search fee**:

| Event | Charged when | Price |
|---|---|---|
| `image` | once per image delivered to your dataset | $0.00022 ($0.22 per 1,000) |
| `image-check` | once per image whose link was checked and served an image (only with **Check image links**) | $0.001 |

| Run | Images (events) | Cost |
|---|---|---|
| 1 search × 50 images | 50 `image` | $0.011 |
| 10 searches × 100 images | 1,000 `image` | $0.22 |
| 1 search × 300 images | ~280-300 `image` (Google's own depth for the search) | ~$0.06-0.066 |
| 1 search × 40 images + image check | 40 `image` + up to 40 `image-check` | up to $0.049 |

Images that fail your filters, images an earlier monitor run already delivered, duplicates, related-search rows and searches that return nothing are not charged. Apify's free plan includes $5 of monthly credit.

### Integrations, API, scheduling & MCP

- **Schedules:** run daily or hourly from **Schedules** in Apify Console; with **Monitor mode** each run returns only new images.
- **Webhooks:** call your endpoint when a run finishes.
- **No-code:** Make, Zapier, n8n, Google Sheets, Airtable and Slack via [Apify integrations](https://docs.apify.com/integrations).
- **API:** start runs and read datasets from Node.js or Python with `apify-client` — code on the [API tab](https://apify.com/TopApi/google-images-scraper/api/python).
- **MCP / AI agents:** connect Claude, Cursor or any MCP client through the [MCP tab](https://apify.com/TopApi/google-images-scraper/api/mcp).

### More search and media scrapers

<table>
<tr>
<td>🔎 <a href="https://apify.com/TopApi/bing-search-scraper">Bing Search Scraper</a> — Bing web, news, images and videos</td>
<td>🏨 <a href="https://apify.com/TopApi/google-hotels-scraper">Google Hotels Scraper</a> — prices and booking sites</td>
<td>⭐ <a href="https://apify.com/TopApi/google-maps-reviews-scraper">Google Maps Reviews Scraper</a></td>
</tr>
<tr>
<td>📍 <a href="https://apify.com/TopApi/google-geocoding-scraper">Google Geocoding Scraper</a></td>
<td>📸 <a href="https://apify.com/TopApi/instagram-scraper">Instagram Scraper</a> — posts and reels</td>
<td>🎵 <a href="https://apify.com/TopApi/tiktok-scraper">TikTok Scraper</a></td>
</tr>
<tr>
<td>🌐 <a href="https://apify.com/TopApi/website-content-crawler">Website Content Crawler</a> — page text for RAG</td>
<td>🗺️ <a href="https://apify.com/TopApi/apple-maps-scraper">Apple Maps Scraper</a></td>
<td>👤 <a href="https://apify.com/TopApi">All TopApi Actors</a></td>
</tr>
</table>

### Limits & empty runs

- **Images per search:** a Google results page holds 50-100 images (usually 100). Google's own depth was 278-371 images per search in our runs; `expandWithRelatedSearches` goes further (450 from one term, 43% of them through related searches).
- **Speed:** one Google request answers in 4-40 s. 10 searches × 100 images took 86 s; a 300-image search 81-183 s. Now and then Google's proxy does not answer; that request is retried once.
- **Results change:** Google re-orders and swaps images between requests (5 of 100 first-page images changed within minutes in our monitor test), and by country and language.
- **Monitor mode** reads the first results page (up to 100 images) of each search.
- **Empty runs:** a search Google has no images for, or one where every image fails your filters, delivers nothing and charges nothing. RUN_SUMMARY lists every search with pages read, duplicates, filtered counts and why it stopped.
- If Apify's Google proxy refuses requests (for example a used-up monthly quota on the account), the run stops cleanly with a status message; searches not run are not charged.
- Images belong to their owners. The Actor returns links and the information Google publishes about them, not the image files. Google and Google Images are trademarks of Google LLC; this Actor is not affiliated with Google.

### ❓ FAQ

#### How many images can Google Images Scraper get per search?

Up to 100 per results page and usually 280-370 per search before Google runs out of new images. Turn on **Expand with related searches** to keep going through Google's related searches, up to 1,000 per search.

#### How much does Google Images Scraper cost?

You pay per delivered image (`image` event) and, only when you turn it on, per checked image link (`image-check`). There is no start fee and no per-search fee. The current prices are on the Pricing tab.

#### Can I run Google Images Scraper on a schedule and get only new images?

Yes. Turn on **Monitor mode**, give it a **Monitor store name**, and schedule the task. Each run reads the first results page of each search and delivers only images that earlier runs with the same store did not deliver.

#### Can I use Google Images Scraper with the Apify API?

Yes. Start runs and read results from any language over the REST API, or with `apify-client` for Node.js and Python. Examples are on the API tab.

#### Can I use Google Images Scraper through an MCP server?

Yes. Add the Actor to Claude, Cursor or another MCP client from the MCP tab. Use **Compact output** to keep rows short for AI agents.

#### Do I need a Google account, API key or cookies for Google Images Scraper?

No. Google Images Scraper reads the public results pages; nothing is needed from you except the searches.

#### Does Google Images Scraper download the image files?

No. It returns the image URL, its size and Google's thumbnail. **Check image links** asks each host for the first bytes of the file to confirm the link still serves an image, its content type and its size in bytes.

#### Can Google Images Scraper filter by licence or Creative Commons?

Yes. Set **Usage rights** to Creative Commons or commercial & other licenses. Licensable images also carry `licenseName`, `licenseUrl`, `licenseAcquireUrl` and `licenseCredit`.

#### Can Google Images Scraper search other countries and languages?

Yes. Pick one of 51 countries (Google domain and `gl`) and a language (`hl`), or paste a Google Images link from that country.

#### Why did my Google Images Scraper run return no images?

Google may have no images for the search, or your filters removed them all (see `filtered` in RUN_SUMMARY), or in monitor mode nothing new appeared since the last run. None of these is charged.

#### Your feedback

Found a bug or need a field? Open an issue on the [Issues tab](https://apify.com/TopApi/google-images-scraper/issues/open) with the run ID and we will look at it.

# Actor input Schema

## `queries` (type: `array`):

One Google Images search per line, e.g. "red panda", "modern kitchen", "nike air max 90". A pasted Google Images link works here too. Empty = the sample search "red panda".

## `searchUrls` (type: `array`):

Pasted Google Images result links, e.g. https://www.google.com/search?q=red+panda\&udm=2\&tbs=isz:l. Each keeps its own term, filters (tbs), country, language and safe search.

## `country` (type: `string`):

Which Google Images to search (Google domain, gl and the proxy country). Results and product prices follow the market Google shows for this country.

## `language` (type: `string`):

Interface and result language (hl), e.g. English or German.

## `imageSize` (type: `string`):

Google's size filter. "Larger than" and "Exactly" are also checked on every image's own width and height before it is delivered.

## `exactWidth` (type: `integer`):

With Size = Exactly: the width in pixels, e.g. 1920.

## `exactHeight` (type: `integer`):

With Size = Exactly: the height in pixels, e.g. 1080.

## `imageColor` (type: `string`):

Google's colour filter: full colour, black and white, transparent background or one dominant colour.

## `imageType` (type: `string`):

Google's type filter: photo, face, clip art, line drawing or animated GIF.

## `fileType` (type: `string`):

Google's file-format filter, e.g. PNG or SVG.

## `timeRange` (type: `string`):

Only images Google found within this period. Ignored when a date range is set.

## `dateFrom` (type: `string`):

Custom date range start (YYYY-MM-DD), e.g. 2026-01-01. Empty = no lower bound.

## `dateTo` (type: `string`):

Custom date range end (YYYY-MM-DD). Empty = no upper bound.

## `usageRights` (type: `string`):

Google's licence filter: Creative Commons or commercial & other licenses.

## `safeSearch` (type: `string`):

Google SafeSearch for explicit results.

## `site` (type: `string`):

Only images from this website (Google's site: operator), e.g. "wikipedia.org". Empty = every site.

## `aspectRatio` (type: `string`):

Keep only images of this shape, checked on each image's width and height (Google no longer applies its own aspect filter).

## `minWidth` (type: `integer`):

Drop images narrower than this, e.g. 1200. 0 = no minimum.

## `minHeight` (type: `integer`):

Drop images shorter than this. 0 = no minimum.

## `skipCrawlerOnlyImages` (type: `boolean`):

Drop images whose link only answers search crawlers (Facebook / Instagram lookaside "crawler" URLs).

## `removeDuplicatesAcrossQueries` (type: `boolean`):

Deliver each image once per run even when several searches find it (the first search keeps it).

## `checkImages` (type: `boolean`):

Ask each image's host for the first bytes of the file: whether the link still serves an image, its real content type and its size in bytes. Paid add-on per checked image.

## `expandWithRelatedSearches` (type: `boolean`):

When Google runs out of new images before your per-search cap, also search Google's own related-search chips (e.g. "baby red panda") and add those images.

## `maxRelatedSearches` (type: `integer`):

How many related searches one search may expand into.

## `relatedSearchesExclude` (type: `array`):

Related searches containing any of these words are not searched, e.g. "drawing", "cartoon".

## `includeRelatedQueries` (type: `boolean`):

Add one free row per search (type "relatedQueries") with Google's related-search chips.

## `monitorMode` (type: `boolean`):

Read each search's first results page (up to 100 images) and deliver only images not delivered by an earlier run with the same monitor store. A poll with nothing new delivers and charges nothing.

## `monitorStoreName` (type: `string`):

Named key-value store that remembers delivered images, e.g. "my-brand-images". Empty = "google-images-monitor".

## `maxResultsPerQuery` (type: `integer`):

Images to deliver per search. Page 1 carries up to 100; Google's own depth is about 150-400 per search (more with related searches).

## `maxResults` (type: `integer`):

Cap for the whole run across all searches. 0 = no run cap (each search still stops at its own cap).

## `compact` (type: `boolean`):

Core fields only (query, position, title, image URL and size, thumbnail, source page, domain, site) - trimmed for AI / MCP pipelines.

## `maxConcurrency` (type: `integer`):

Google requests in flight at once. Searches run in parallel; pages within a search run one after another.

## `tbs` (type: `string`):

Extra Google tbs filter codes added to every search, e.g. "isz:l,ic:trans". For codes not in the menus above.

## Actor input object example

```json
{
  "queries": [
    "red panda"
  ],
  "country": "us",
  "language": "en",
  "imageSize": "any",
  "imageColor": "any",
  "imageType": "any",
  "fileType": "any",
  "timeRange": "any",
  "usageRights": "any",
  "safeSearch": "off",
  "aspectRatio": "any",
  "minWidth": 0,
  "minHeight": 0,
  "skipCrawlerOnlyImages": false,
  "removeDuplicatesAcrossQueries": false,
  "checkImages": false,
  "expandWithRelatedSearches": false,
  "maxRelatedSearches": 5,
  "includeRelatedQueries": false,
  "monitorMode": false,
  "maxResultsPerQuery": 50,
  "maxResults": 0,
  "compact": false,
  "maxConcurrency": 4
}
```

# Actor output Schema

## `results` (type: `string`):

One row per image result.

## `summary` (type: `string`):

Per search: pages read, Google requests, images seen, duplicates, filtered and already-seen counts, related searches and why paging stopped.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "queries": [
        "red panda"
    ],
    "maxResultsPerQuery": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("topapi/google-images-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "queries": ["red panda"],
    "maxResultsPerQuery": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("topapi/google-images-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "queries": [
    "red panda"
  ],
  "maxResultsPerQuery": 50
}' |
apify call topapi/google-images-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,topapi/google-images-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/qunQE4aDQFZ10JBPm/builds/xAeeWFO4NAwLnoUWh/openapi.json
