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

Scrape Google Images for any keyword: original image URL, width and height, title, thumbnail, source page and domain. Size, type, time and color filters and hundreds of unique images per query. A bulk image downloader list and image dataset builder, like a Google Images API.

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

## Pricing

from $0.50 / 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

### 🖼️ Google Images Scraper

Scrape **Google Images** results for any keyword and export them as JSON, CSV or Excel. For each query the **Google Images Scraper** saves every image with its **original image URL, width and height**, title, thumbnail, **source page URL and domain**, the site name and the price when Google shows one. Filter by size, type, time and color, and collect **hundreds of unique images per query**. Use it as a **bulk image downloader** list, to build an **image dataset** for AI training, for visual research or brand monitoring, like a **Google Images API**. No Google account or API key needed.

### ✨ Features

- 🔎 **Many queries per run**: one keyword per line; Google operators like `site:` and `"exact phrase"` work.
- 🖼️ **Original image URLs**: the full-size file, not only the thumbnail, with its width and height in pixels.
- 🔗 **Source page**: the page that shows the image, its domain and site name.
- 🎛️ **Filters**: size (large, medium, icon), type (photo, clip art, line drawing, GIF, face), time (past day to past year) and color.
- 📚 **Deep results**: past the first listing the Actor also collects the images Google shows for size, type, date and color variations of the query.
- 🧹 **No duplicates**: an image URL is saved and charged once per query.
- 🌍 **Any country and language**.

### 🛠️ How It Works

1. **Enter search queries**, one per line.
2. **Set the number of images per query** and, if you want, the size, type, time and color filters.
3. **Run the Scraper** and download the image list as JSON, CSV or Excel, or call it through the API.

### ⚙️ Input

| Field                    | What it does                                                                                  |
| ------------------------ | --------------------------------------------------------------------------------------------- |
| **Search queries**       | What to search on Google Images, one per line. Default `mountain landscape`.                  |
| **Max images per query** | Images saved per query. Default 100.                                                          |
| **Country**              | Two-letter country code to search from. Default `us`.                                         |
| **Language**             | Google interface language, e.g. `en`, `de`, `pt-BR`. Default `en`.                           |
| **Size / Type / Time / Color** | Optional Google Images filters. Default: any.                                            |

```json
{
    "queries": ["red sneakers", "site:unsplash.com coffee"],
    "maxItems": 300,
    "countryCode": "us",
    "languageCode": "en",
    "size": "large",
    "type": "photo"
}
```

#### How many images per query?

One Google Images listing gives **about 300 images** for most queries ("red sneakers": 344). When you ask for more, the Actor also collects the images Google lists for filtered variations of the query (sizes, types, dates, colors) and keeps only images it has not saved yet: in our tests "red sneakers" gave **3,000 unique images** (it stopped at the limit we set), about 200 per minute. The run's status message says how many unique images a query had when it runs out before your limit.

### 🔍 Use cases

- **Bulk image downloader**: get a clean list of original image URLs to download with any tool.
- **Image dataset for AI and machine learning**: collect labelled images per keyword with size and source.
- **Brand and copyright monitoring**: find where your product photos or logo appear and on which domains.
- **Visual and SEO research**: see which sites and which kinds of images rank for a keyword in Google Images.
- **E-commerce research**: product images with store names and prices from image results.

### 💰 Pricing

Pay only for the images you get. No monthly rental.

| Event           | Price                                    | What you get                                |
| --------------- | ---------------------------------------- | ------------------------------------------- |
| **Image**       | $0.0005 per image ($0.50 per 1,000)      | One unique image with all fields below      |
| **Actor start** | $0.00005 per run                         | Charged once when the run starts.           |

Examples: 100 images ≈ $0.05 · 1,000 images = $0.50 · 10,000 images = $5.00.

### 📊 Sample Output Data

```json
{
    "query": "mountain landscape",
    "position": 1,
    "title": "9,142,400+ Mountain Landscape Stock Photos and Royalty-Free Pictures - iStock",
    "imageUrl": "https://media.istockphoto.com/id/2166651330/photo/grand-teton-mountains-from-oxbow-bend-on-the-snake-river-at-sunrise-grand-teton-national-park.jpg?s=612x612&w=0&k=20&c=NmPOaN3nhEfowD1xOdV_z2X5CdsjBTPwSncbvji1saw=",
    "width": 612,
    "height": 408,
    "thumbnailUrl": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQVDzJWD4ZypQdJfljd4iPqef6HXDShBWr3HLsbnIK91w&s=10",
    "sourceUrl": "https://www.istockphoto.com/photos/mountain-landscape",
    "sourceDomain": "istockphoto.com",
    "sourceName": "iStock",
    "price": null,
    "labels": ["Licensable"],
    "countryCode": "us",
    "languageCode": "en"
}
```

- `labels` are the tags Google shows on the image, e.g. "Licensable", "Video" or its age ("2 days ago").
- `price` is set for product images, as shown (e.g. "$20.99").
- `position` is the order in which images were found for the query.

### ❓ FAQ

**Is there a Google Images API?** Google has no public Google Images search API (the Custom Search API is limited and paid per query). This Actor works like one: send queries through the Apify API and get structured JSON back.

**Does it download the image files?** It returns the original image URLs with size and source; download them with any downloader or script. That keeps runs fast and cheap.

**Can I get only large photos?** Yes. Set "Size" to large and "Type" to photo; the filters work as on Google Images.

**Can I get more than a few hundred images per query?** Yes, set a higher limit; the Actor adds results from filtered variations of the query. Each image URL is saved once per query.

**Can I use the images?** Images belong to their owners. Check the source page and its license before reusing an image.

# Actor input Schema

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

What to search on Google Images, one query per line. Operators work as on Google (site:, "exact phrase", -exclude).

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

How many images to save for each query. One page holds up to 100 images; past the first pages the Actor also collects the images Google shows for size, type, date and color variations of the query, which usually gives several hundred unique images per query.

## `countryCode` (type: `string`):

Two-letter country code to search from, e.g. us, gb, de, fr, in.

## `languageCode` (type: `string`):

Language of the Google interface, e.g. en, de, es, pt-BR.

## `size` (type: `string`):

Only images of this size.

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

Only images of this type.

## `time` (type: `string`):

Only images published in this period.

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

Only images with this color.

## Actor input object example

```json
{
  "queries": [
    "mountain landscape",
    "red sneakers",
    "site:unsplash.com coffee"
  ],
  "maxItems": 100,
  "countryCode": "us",
  "languageCode": "en",
  "size": "any",
  "type": "any",
  "time": "any",
  "color": "any"
}
```

# Actor output Schema

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

No description

# 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": [
        "mountain landscape"
    ],
    "maxItems": 100,
    "countryCode": "us",
    "languageCode": "en"
};

// Run the Actor and wait for it to finish
const run = await client.actor("piotrv1001/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": ["mountain landscape"],
    "maxItems": 100,
    "countryCode": "us",
    "languageCode": "en",
}

# Run the Actor and wait for it to finish
run = client.actor("piotrv1001/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": [
    "mountain landscape"
  ],
  "maxItems": 100,
  "countryCode": "us",
  "languageCode": "en"
}' |
apify call piotrv1001/google-images-scraper --silent --output-dataset

```

## MCP server setup

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