# Google Images Scraper (`cirkit/google-images-scraper`) Actor

Scrape Google Images by keyword: full-size image URLs with width and height, thumbnails, source page, title, website, credits, file size, colour, product prices and video details. Filter by size, type, colour, date or Creative Commons.

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

## Pricing

$1.00 / 1,000 image results

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 is Google Images Scraper?

**Google Images Scraper** lets you extract image search results from [Google Images](https://images.google.com) by keyword, helping you build image datasets, track where your photos and products appear, and research visual trends at scale. Give it a search such as `modern kitchen design` and it returns every image as a clean record: the **full-size original image URL** with width and height, the thumbnail, the page the image lives on, its title, the website name, credits, file size and dominant colour.

- 🖼 **Build image datasets fast:** collect hundreds of relevant, full-resolution image URLs per keyword for machine learning, mood boards or content research
- 🔎 **Find who uses an image or a product photo:** every row carries the source page, website name and domain, plus Google's "About this image" link
- 🛍 **Monitor products in image search:** images Google shows as shopping results come with price, original price, currency, rating and brand
- 🎨 **Filter like the Google Tools menu:** size, type (photo, clip art, line drawing, GIF), colour, transparent background, time and Creative Commons licences
- ©️ **See credits before you reuse:** photographer and copyright lines (for example `Getty Images/iStockphoto`) when the image publishes them
- ⚡ **No browser, no login, no cookies.** Fast HTTP requests through Apify's Google SERP proxy

Google shows 50 to 100 images per page and the classic `start=` paging no longer works. Google Images Scraper goes deeper by walking Google's own Tools filters (large, clip art, black and white, past month and more), so one search returns **hundreds and up to about 1,800 unique, on-topic images** instead of one page.

### What data does Google Images Scraper extract?

- 🖼 Full-size image URL, width and height (`imageUrl`, `imageWidth`, `imageHeight`)
- 🧾 Image format and file size (`imageFormat`, `fileSize`)
- 🔍 Google thumbnail URL and size (`thumbnailUrl`)
- 🏷 Title of the page the image appears on (`title`)
- 🌐 Source page URL, domain, website name and site icon (`sourcePageUrl`, `sourceDomain`, `sourceName`)
- 🎨 Dominant colour as rgb and hex (`dominantColor`, `dominantColorHex`)
- ©️ Credit line and creator names, when published (`creditLine`, `creators`)
- 🛍 Product title, price, original price, currency, rating, brand and Google Shopping link, for product images
- 🎬 Video flag, duration and publish date, for video results (TikTok, YouTube, Instagram reels)
- ℹ️ Google's "About this image" link (`aboutThisImageUrl`)
- 📍 Search, matched filter, rank and Google Images URL (`searchQuery`, `matchedFilter`, `position`, `googleImagesUrl`)

Image URL, size, title, source page and website are returned on every image row. Credits, product and video fields are filled whenever Google has them for that image.

### How to scrape Google Images

1. Click **Try for free** and open the Input tab.
2. Add one or more **image searches**, for example `golden retriever puppy`.
3. Set **Max images per search**, and optionally a size, type, colour, time or Creative Commons filter.
4. Click **Start**.
5. Download the results as JSON, CSV, Excel or HTML, or read them through the API.

### Input

```json
{
    "queries": ["golden retriever puppy", "modern kitchen design"],
    "maxResultsPerQuery": 300,
    "maxItems": 500,
    "imageSize": "large",
    "imageType": "any",
    "color": "any",
    "timeRange": "any",
    "usageRights": "any",
    "country": "us",
    "language": "en",
    "safeSearch": true
}
```

| Field | What it does |
|---|---|
| `queries` | Searches to run, one per line. Required. |
| `maxResultsPerQuery` | Unique images per search (default 100, up to 2,000). |
| `maxItems` | Hard cap on rows across all searches, and so on cost. |
| `imageSize` | `any`, `large`, `medium`, `icon` |
| `imageType` | `any`, `photo`, `clipart`, `lineart`, `animated` |
| `color` | `any`, `grayscale`, `transparent`, or a colour such as `red`, `blue`, `green` |
| `timeRange` | `any`, `day`, `week`, `month`, `year` |
| `usageRights` | `any` or `creativeCommons` |
| `country` / `language` | Google market and interface language, for example `gb` and `en` |
| `safeSearch` | Filter explicit images (on by default) |

### Output

```json
{
    "searchQuery": "golden retriever puppy",
    "matchedFilter": null,
    "position": 1,
    "imageId": "jUS0xT_ulT-SUM",
    "title": "How to Train a Golden Retriever Puppy: Growth & Training Timeline",
    "imageUrl": "https://s3.amazonaws.com/cdn-origin-etr.akc.org/wp-content/uploads/2020/07/09151754/Golden-Retriever-puppy-standing-outdoors.jpg",
    "imageWidth": 729,
    "imageHeight": 486,
    "imageFormat": "jpg",
    "fileSize": "190KB",
    "thumbnailUrl": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRUNLBzUGVp8D2IE6U-7oqMxVJ0xJaE1GFBpikkO40bOA&s=10",
    "sourcePageUrl": "https://www.akc.org/expert-advice/dog-breeds/golden-retriever-puppy-training-timeline/",
    "sourceDomain": "www.akc.org",
    "sourceName": "American Kennel Club",
    "dominantColor": "rgb(176,160,106)",
    "dominantColorHex": "#b0a06a",
    "creditLine": "Getty Images/iStockphoto",
    "creators": ["Bigandt_Photography"],
    "isVideo": false,
    "isProduct": false,
    "productPrice": null,
    "aboutThisImageUrl": "https://www.google.com/search/about-this-image?img=...",
    "country": "us",
    "language": "en",
    "scrapedAt": "2026-10-01T13:45:10.000Z",
    "noResults": false,
    "notice": null
}
```

The dataset has three ready-made table views: **Images** (thumbnail, title, size, source and credit), **Products** (price, rating and brand) and **Videos** (duration and publish date).

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

Google Images Scraper uses flat pay-per-result pricing: **$1.00 per 1,000 images**. There is no monthly fee and you only pay for rows you get.

| Images | Cost |
|---|---|
| 1,000 | $1.00 |
| 10,000 | $10.00 |
| 100,000 | $100.00 |

The most-used Google Images actor on the Store charges $3.50 per 1,000 on the free plan.

### Measured coverage

From QA runs on 2026-10-01, locally and on the Apify platform, across 12 searches in the US, UK and France (about 4,900 image rows):

| Field | Coverage |
|---|---|
| `imageUrl`, `imageWidth`, `imageHeight` | 100% |
| `title`, `sourcePageUrl`, `sourceName`, `sourceDomain` | 100% |
| `thumbnailUrl`, `fileSize`, `dominantColor` | 100% |
| `imageFormat` | 85 to 97% (URLs without a file extension stay null) |
| `creditLine` / `creators` | 5 to 10% (only images that publish credits) |
| Product fields | 0 to 40%, depending on how commercial the search is |
| Video fields | 0 to 15%, depending on the search |

Duplicate images within a search: 0. A search with no images returns one row with `noResults: true` and a plain-words `notice`, so an empty search never looks like a broken run.

### Limits

- Depth depends on the search: 1,864 unique images measured for "coffee mug" (24 pages) and 1,000+ for "modern kitchen design". Narrow searches run out sooner. For more volume, add related searches.
- Google ignores the aspect ratio filter and the legacy licence filter on today's Images page, so they are not offered.
- Credits come from the image's own metadata. Many images carry none, and a Creative Commons label is Google's, so check the licence on the source page before reuse.
- Images are not downloaded. You get URLs; the thumbnail URL on Google's CDN always loads, the original depends on the source site.

### FAQ

#### Is it legal to scrape Google Images?

Google Images Scraper only reads public search result pages, with no login and no personal accounts. The images themselves belong to their owners: having a URL is not a licence to reuse a picture. You are responsible for using the data in line with copyright law, Google's terms and the rules in your country.

#### How many images can I get per search?

Usually several hundred, and up to about 1,800 for broad searches. The first page has 50 to 100 images, and each extra Google filter adds roughly 50 to 100 new ones until a search runs dry.

#### Can I get only Creative Commons images?

Yes. Set `usageRights` to `creativeCommons` and results come from sources such as Wikimedia Commons, Flickr and Pxhere. Always confirm the exact licence on the source page.

#### Can I get transparent PNGs or clip art?

Yes. Set `color` to `transparent` for images with a transparent background, or `imageType` to `clipart` or `lineart`.

#### Does it download the image files?

No. Each row has the original image URL and Google's thumbnail URL. Pass the URLs to any downloader, or to another Apify actor, if you need the files.

#### Can I use Google Images Scraper as an API?

Yes. Every run is available through the [Apify API](https://docs.apify.com/api/v2), and you can start runs and fetch results with a single HTTP request.

#### Can I use this in Python?

Yes, with the `apify-client` package:

```python
from apify_client import ApifyClient
client = ApifyClient("<YOUR_API_TOKEN>")
run = client.actor("cirkit/google-images-scraper").call(run_input={"queries": ["golden retriever puppy"]})
images = client.dataset(run["defaultDatasetId"]).list_items().items
```

#### Can I integrate Google Images Scraper with other apps?

Yes. Apify connects runs to Zapier, Make, Google Sheets, Slack, Airbyte and webhooks, so new images can flow straight into your own tools.

#### How do I schedule Google Images Scraper to run automatically?

Create a Schedule in Apify Console and pick this actor with your saved input. Daily or weekly runs with `timeRange` set to `day` or `week` give you a feed of newly indexed images.

#### Why did I get fewer images than expected?

Narrow or misspelled searches have fewer images, and every filter you pin narrows the pool and removes that filter from the depth walk. Check the run's `RUN_SUMMARY` record: `stopReason` tells you whether the run hit your cap or ran out of new images.

#### Can I get a field that is not listed?

Open an issue on the actor page and describe the field. If Google shows it on the Images page, it can usually be added.

### You might also like

- [Google Shopping Scraper](https://apify.com/cirkit/google-shopping-scraper) for product prices across merchants
- [Pinterest Pins Scraper](https://apify.com/cirkit/pinterest-pins-scraper) for visual content and boards
- [Google Trends Scraper](https://apify.com/cirkit/google-trends-scraper) for search interest over time
- [Google News Scraper](https://apify.com/cirkit/google-news-scraper) for headlines by keyword
- [Google Maps Business Scraper](https://apify.com/cirkit/google-maps-business-scraper) for local business data

### Changelog

- **0.1** (2026-10-01): First release. Image, product and video fields, Google Tools filters, depth past the first page.

# Actor input Schema

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

What to search for on Google Images, one search per line, for example "golden retriever puppy" or "modern kitchen design". Each search runs separately and images are deduped within it.

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

Upper limit of unique images for each search. Google shows 50 to 100 images per page, so past that the actor walks Google's own Tools filters (large, clip art, black and white, past month and so on) to go deeper. Expect several hundred, and up to about 1,800, unique images per search; add more searches for more volume.

## `maxItems` (type: `integer`):

Hard cap on rows across every search, and therefore on what the run can cost. Leave empty for no cap.

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

Only images of this size, using Google's Tools filter.

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

Only images of this type.

## `color` (type: `string`):

Only images in this colour. Transparent returns images with a transparent background, mostly PNG.

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

Only images Google first indexed within this window.

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

Creative Commons returns only images Google labels as published under a Creative Commons licence. Always confirm the licence on the source page before reuse.

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

Two-letter country code Google ranks results for, for example "us", "gb", "de" or "in".

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

Two-letter interface language code, for example "en", "fr" or "es". It changes titles Google shows and slightly shifts ranking.

## `safeSearch` (type: `boolean`):

Filter explicit images out of the results, like SafeSearch on google.com. Turn off to get unfiltered results.

## Actor input object example

```json
{
  "queries": [
    "golden retriever puppy"
  ],
  "maxResultsPerQuery": 50,
  "imageSize": "any",
  "imageType": "any",
  "color": "any",
  "timeRange": "any",
  "usageRights": "any",
  "country": "us",
  "language": "en",
  "safeSearch": true
}
```

# Actor output Schema

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

Every image matched by the searches, one row per image, with original URL, size, source page and credits.

## `resultsCsv` (type: `string`):

The same images as a downloadable CSV file.

## `products` (type: `string`):

Images Google shows as shopping products, with price, rating and merchant.

## `videos` (type: `string`):

Video results with duration and publish date.

# 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": [
        "golden retriever puppy"
    ],
    "maxResultsPerQuery": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("cirkit/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": ["golden retriever puppy"],
    "maxResultsPerQuery": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("cirkit/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": [
    "golden retriever puppy"
  ],
  "maxResultsPerQuery": 50
}' |
apify call cirkit/google-images-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,cirkit/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/rDpYx36Ggo6dX2hto/builds/LVfnZci6m9NKC3n99/openapi.json
