# Google Images Scraper API: Image URLs, Sources & Filters (`plainrows/google-images-scraper`) Actor

Get Google Images results as clean data: original image URL, thumbnail, title, source page and domain, position. Filter by size, color, type, file type, date and usage rights, 20 countries. Fast API, no browser. Pay only per image found.

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

## Pricing

from $0.60 / 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.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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 API: Image URLs, Sources & Filters

Turn any Google Images search into clean data: **original image URL, Google thumbnail, title, source page, domain and position**, up to 200 images per query, in 20 countries. Use Google's own **size, color, type, file type, date and usage rights filters** to get exactly the images you need.

It calls a commercial search data API instead of driving a browser: **results in seconds, no proxies, no blocked runs.** **You only pay for images returned**: queries with no result and duplicate images are free.

### Typical uses

- **Dataset building for machine learning**: collect image URLs and their source pages per label (`golden retriever`, `oak leaf`), with Creative Commons or file type filters, then download them yourself under each license.
- **Image SEO**: see which pages and domains rank in Google Images for your keywords, and at which position; track your own images.
- **Visual SERP tracking**: schedule the same queries daily or weekly and compare positions and sources over time, per country.
- **Content and design research**: find reference images, transparent PNGs, SVG icons or Creative Commons photos for a topic, with the page to credit.
- **Automations and AI agents**: feed n8n, Make, Zapier, Google Sheets or an MCP client with structured JSON.

### What you get for each image

| Field | Description |
|---|---|
| `position` | Position in the Google Images results for your query (1 = first) |
| `title` | Image title / alt text shown by Google |
| `imageUrl` | Original image file on the source site (`null` when Google only embeds the image in the page) |
| `thumbnailUrl` | Google's thumbnail (`encrypted-tbn0.gstatic.com`) |
| `pageUrl`, `domain`, `sourceName` | Page that hosts the image, its domain without `www`, and the site name Google shows (e.g. `Walmart`, `Wikipedia`) |
| `searchQuery`, `searchCountry`, `languageCode`, `filters` | The query, country, language and filters that found it |
| `observedAt` | When the data was fetched (UTC) |

Missing values are always `null`, never guessed. Each image appears once per query. Image width and height are **not** included: the data source does not provide them.

### Input

```json
{
  "searchQueries": ["red bicycle", "vintage road bike"],
  "country": "US",
  "maxImagesPerQuery": 100,
  "imageSize": "large",
  "usageRights": "creativeCommons"
}
```

- **searchQueries**: up to 1,000 per run, up to 700 characters each.
- **country**: US, GB, CA, AU, IE, IN, DE, AT, CH, FR, BE, ES, MX, IT, NL, PT, BR, PL, SE, JP. **languageCode** (optional) sets the interface language; it defaults to the country's main language.
- **maxImagesPerQuery**: 1 to 200 (default 100).
- **Filters** (optional, all default to `any`, can be combined). They are Google's own filters, passed as is:
  - `imageSize`: `large`, `medium`, `icon`
  - `imageColor`: `blackAndWhite`, `transparent`, or a dominant color (`red`, `orange`, `yellow`, `green`, `teal`, `blue`, `purple`, `pink`, `white`, `gray`, `black`, `brown`)
  - `imageType`: `photo`, `face`, `clipart`, `lineart`, `animated`
  - `fileType`: `jpg`, `png`, `gif`, `svg`, `webp`
  - `timePeriod`: `pastDay`, `pastWeek`, `pastMonth`, `pastYear`
  - `usageRights`: `creativeCommons`, `commercial`

Google applies the filters; results are not checked image by image. In our tests, `fileType: "svg"` returned 99 SVG files out of 100 and `fileType: "png"` 83 PNG files out of 100.

### Output example

Real row from a run on 2026-10-07 (query `golden retriever puppy`, US, no filter):

```json
{
  "searchQuery": "golden retriever puppy",
  "found": true,
  "position": 1,
  "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",
  "thumbnailUrl": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRUNLBzUGVp8D2IE6U-7oqMxVJ0xJaE1GFBpikkO40bOA&s=10",
  "pageUrl": "https://www.akc.org/expert-advice/dog-breeds/golden-retriever-puppy-training-timeline/",
  "domain": "akc.org",
  "sourceName": "American Kennel Club",
  "searchCountry": "US",
  "languageCode": "en",
  "filters": null,
  "observedAt": "2026-10-07T13:19:02.980Z",
  "schemaVersion": "1.0"
}
```

### Pricing

Pay per image returned, no subscription, no proxy costs. See the **Pricing** tab for current prices: one event per **image found**, cheaper on higher Apify plans (about $1 per 1,000 images on the Bronze plan), plus a small fee per search that returns images ($0.0022) and a tiny start fee per run ($0.001). Searches with no image are free. All filters are included in that price.

Queries with no result, duplicate images and input mistakes cost nothing beyond the start fee. The run never spends more than the maximum cost you set.

**Free Apify plan:** each run returns up to 20 images for up to 2 queries, so you can check the output. A paid Apify plan removes these limits.

### Use it from code, automations or AI agents

**API (one call, results returned directly):**

```bash
curl -X POST "https://api.apify.com/v2/acts/plainrows~google-images-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"searchQueries": ["red bicycle"], "maxImagesPerQuery": 50, "usageRights": "creativeCommons"}'
```

**n8n, Make, Zapier:** use the Apify integration, pick `plainrows/google-images-scraper`, and send the dataset items to Google Sheets, Airtable, a database or your download script.

**AI agents (MCP):** add `https://mcp.apify.com?tools=plainrows/google-images-scraper` to Claude, Cursor or any MCP client. The agent gets a typed tool and pays per result.

### What this is not

- **Not an image downloader.** It returns links only: images are never downloaded, stored or re-hosted. Images belong to their owners; check the license on the source page before you reuse one, even with the Creative Commons filter.
- No image width, height, file size or colors, and no reverse image search (Google Lens).
- No sponsored results, related searches or Google's suggestion chips: image results only.
- Not affiliated with Google.

### Run summary

Each run stores a summary in the key-value store (`OUTPUT`): queries run, queries with no result, images billed, duplicate images and queries removed, invalid queries, filters used, and anything skipped because of the free-plan or budget limit.

### FAQ

**How do I get image URLs from Google Images?**
Enter your searches, one per line, and run: one row per image with the original image URL, thumbnail, title, source page and domain.

**How many images per search?**
1 to 200 (**maxImagesPerQuery**, default 100).

**Can I filter by size, color, type or usage rights?**
Yes: Google's own filters for size, color, type, file type, date and usage rights can be combined.

**Does it download the images?**
No: it returns links only. Images belong to their owners; check the license on the source page before reusing one.

**Does it do reverse image search?**
No (no Google Lens): it searches Google Images by text.

### More PlainRows tools

Same pay-per-result pricing, same clean JSON, built to chain together in n8n, Make, Zapier or AI agents.

- **SEO and keywords:** [Keyword Search Volume, CPC & Difficulty](https://apify.com/plainrows/keyword-search-volume) · [Keyword Ideas Generator](https://apify.com/plainrows/keyword-ideas-generator) · [Google Autocomplete & People Also Ask](https://apify.com/plainrows/google-autocomplete-questions) · [Google Trends Explorer](https://apify.com/plainrows/google-trends-explorer) · [Website Organic Traffic & Top Keywords](https://apify.com/plainrows/domain-seo-overview) · [Bulk Domain Authority Checker](https://apify.com/plainrows/domain-authority-checker) · [Backlink Checker](https://apify.com/plainrows/backlink-checker) · [Broken Link Checker](https://apify.com/plainrows/broken-link-checker) · [AI Search Visibility Tracker (ChatGPT, Gemini, AI Mode)](https://apify.com/plainrows/ai-search-brand-visibility) · [Google Maps Rank Tracker (Geo-Grid Local SEO)](https://apify.com/plainrows/google-maps-rank-tracker)
- **Leads and companies:** [Google Maps Scraper](https://apify.com/plainrows/google-maps-businesses) · [Website Technology Checker](https://apify.com/plainrows/website-tech-stack) · [ATS Jobs Scraper (Workday, Greenhouse, Lever, Ashby)](https://apify.com/plainrows/ats-job-postings) · [Google Jobs Scraper](https://apify.com/plainrows/google-jobs-scraper) · [Google Ads Scraper (Transparency Center)](https://apify.com/plainrows/google-ads-transparency) · [Company Registry Lookup (SIRENE, LEI, Brreg)](https://apify.com/plainrows/company-registry-lookup) · [Public Tenders Search (EU TED & UK)](https://apify.com/plainrows/public-tenders-search)
- **E-commerce and travel:** [Amazon Product Search Scraper](https://apify.com/plainrows/amazon-product-search) · [Google Shopping Prices Scraper](https://apify.com/plainrows/google-shopping-prices) · [Google Hotels Prices Scraper](https://apify.com/plainrows/google-hotels-prices) · [Tripadvisor Reviews Scraper](https://apify.com/plainrows/tripadvisor-reviews)
- **Content and media:** [Google News Scraper](https://apify.com/plainrows/google-news-scraper) · [YouTube Search Scraper](https://apify.com/plainrows/youtube-search-scraper) · [YouTube Comments Scraper](https://apify.com/plainrows/youtube-comments-scraper) · [Website Screenshot API](https://apify.com/plainrows/website-screenshot) · [Google Maps Reviews Scraper](https://apify.com/plainrows/google-maps-reviews) · [App Store & Google Play Reviews Scraper](https://apify.com/plainrows/app-reviews-scraper)

### Support

Missing a field or found a bug? Open an issue on this page. Issues are read and answered.

# Actor input Schema

## `searchQueries` (type: `array`):

What you would type in Google Images, one per line: "red bicycle", "modern living room", "golden retriever puppy". Up to 1,000 queries per run.

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

Country whose Google Images results you want.

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

Two-letter language code, e.g. "en" or "fr". Leave empty to use the country's main language (for example German for Switzerland, French for Belgium).

## `maxImagesPerQuery` (type: `integer`):

Up to 200 images per query. Each image returned is billed; see Pricing.

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

Google's image size filter. Filtering is done by Google; results are not checked image by image.

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

Google's color filter: black and white, transparent background, or a dominant color. Filtering is done by Google; results are not checked image by image.

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

Google's image type filter. Filtering is done by Google; results are not checked image by image.

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

Google's file type filter. Filtering is done by Google; results are not checked image by image.

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

Only images Google found recently. Filtering is done by Google; results are not checked image by image.

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

Google's usage rights filter (Creative Commons licenses, or commercial and other licenses). Always check the license on the source page before reusing an image.

## Actor input object example

```json
{
  "searchQueries": [
    "red bicycle"
  ],
  "country": "US",
  "maxImagesPerQuery": 100,
  "imageSize": "any",
  "imageColor": "any",
  "imageType": "any",
  "fileType": "any",
  "timePeriod": "any",
  "usageRights": "any"
}
```

# Actor output Schema

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

No description

## `summary` (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 = {
    "searchQueries": [
        "red bicycle"
    ],
    "country": "US"
};

// Run the Actor and wait for it to finish
const run = await client.actor("plainrows/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 = {
    "searchQueries": ["red bicycle"],
    "country": "US",
}

# Run the Actor and wait for it to finish
run = client.actor("plainrows/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 '{
  "searchQueries": [
    "red bicycle"
  ],
  "country": "US"
}' |
apify call plainrows/google-images-scraper --silent --output-dataset

```

## MCP server setup

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