# Google Images Scraper & API - $0.10 per 1,000 Images (`santhej/google-images-scraper`) Actor

Scrape Google Images for any keyword: the direct image file URL on the publisher’s own server, title, alt text, publisher name, source page and rank. Up to 300 images per query, 18 countries, no expiring thumbnails. Clean JSON/CSV for datasets, ecommerce and brand monitoring.

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

## Pricing

Pay per event

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?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Google Images Scraper — Image Search Results & Sources API

**Scrape Google Images for any keyword: every image's direct URL, title, source page and rank — up to 300 per query, as clean JSON or CSV, at $0.10 per 1,000 images.**

Image search is its own battlefield. For product searches, a large share of clicks starts in the image grid, and which photos rank there decides whose product gets seen. For brands, the image SERP shows where your visuals travel; for data teams, it is the fastest map from a keyword to real-world pictures and the pages that host them.

This Actor runs a Google Images search for each keyword and returns one row per image, in Google's ranking order: the direct image URL on the publisher's own server, its title and alt text, the publisher name, and the page it was found on with its domain. No browser to babysit, no CAPTCHAs, no proxies to configure.

### What you get per image

| Field | What it tells you |
|---|---|
| `position` | The image's rank in the results (1-based) |
| `title` | The image's title |
| `alt` | The image's alt text as Google carries it |
| `source_name` | The publisher or brand Google shows under the image |
| `image_url` | **Direct URL of the image file on the publisher's own server** — not an expiring Google thumbnail |
| `source_page_url` | The page the image was found on |
| `source_domain` | That page's domain — who owns the visual SERP |
| `google_url` | Google's own image-viewer URL for the result |
| `country` / `language` / `checked_at` | Exactly which search this row came from, so results stay reproducible |

Every `image_url` points at the publisher's original file, so it keeps working after the run. Actors that return only `encrypted-tbn0.gstatic.com` thumbnails hand you links that rot.

A run summary is written to the key-value store with total images found, the average per keyword and any per-keyword errors.

### Use cases

- **Visual rank tracking** — does your product photo rank for "standing desk", and at what position?
- **Ecommerce competitor monitoring** — whose product imagery owns the grid for your money keywords.
- **Brand monitoring** — find where your visuals and packshots appear across the web.
- **Dataset assembly** — keyword-labelled image URLs with their source pages, ready for ML pipelines and licensing review.
- **Content sourcing** — see which pages publish the imagery Google trusts on a topic.
- **Agent workflows** — clean JSON for an LLM agent that needs live image-search context.

### Pricing

Pay per event. No monthly fee, no setup fee, no minimum.

| Event | Price |
|---|---|
| Actor start | $0.004 per run |
| Image result | **$0.0001 per image — $0.10 per 1,000** |

A full 100-image query costs **$0.014**. Ten keywords at 100 images each cost **$0.104** for 1,000 rows. You pay per image actually returned, and the search is sized to your request, so lowering **Max images per keyword** lowers the price in the same proportion.

### Input example

```json
{
  "keywords": ["standing desk", "ergonomic office chair"],
  "countryCode": "us",
  "languageCode": "en",
  "maxImagesPerKeyword": 300
}
```

### Output example

```json
{
  "record_type": "image",
  "keyword": "standing desk",
  "position": 1,
  "title": "Jarvis Bamboo Standing Desk - Fully",
  "alt": "Jarvis Bamboo Standing Desk - Fully",
  "source_name": "Fully",
  "image_url": "https://www.example-store.com/media/jarvis-bamboo-desk.jpg",
  "source_page_url": "https://www.example-store.com/standing-desks/jarvis-bamboo",
  "source_domain": "example-store.com",
  "google_url": "https://www.google.com/imgres?imgurl=...",
  "country": "us",
  "language": "en",
  "checked_at": "2026-08-24T09:14:00.000Z"
}
```

### FAQ

**Do I need an API key?** No. Everything is handled for you — just add keywords and run.

**Why did a keyword return fewer images than I asked for?** Google returns what it has. Niche queries can have thinner grids; you are only charged for the images actually returned.

**Are these full-size images or thumbnails?** `image_url` points at the image file the source site hosts, where Google exposes it. Base64 thumbnail blobs are deliberately excluded so your exports stay small and clean.

**Can it download the image files?** The Actor returns direct URLs, which any downloader, script or n8n workflow can fetch. Keeping files out of the dataset keeps runs fast and cheap.

**Which countries work?** 18 countries are selectable, with the United States as the default. Image results are localized per market.

**Is the ranking order preserved?** Yes — `position` is the order Google returned the images in, which is the order searchers see.

**Can I export it?** Yes — JSON, CSV, Excel, or straight into n8n, Make or Zapier via the Apify API.

### More Google SERP intelligence

- [People Also Ask Scraper](https://apify.com/santhej/people-also-ask-scraper) — every PAA question with its answer and source page, per keyword.
- [Google AI Overview Tracker](https://apify.com/santhej/google-ai-overview-tracker) — does Google's AI Overview answer your keywords, and does it cite you?
- [Google AI Mode Tracker](https://apify.com/santhej/google-ai-mode-tracker) — the same visibility check for Google's conversational AI tab.
- [Website Traffic Intel](https://apify.com/santhej/website-traffic-intel) — traffic estimates and engagement metrics for any domain list.

***

*Tags: google images scraper, image search api, google image search results, scrape google images, image serp api, image seo, visual seo, image rank tracker, ecommerce image monitoring, brand image monitoring, image dataset builder, reverse sourcing, product images, serp api, google scraper*

# Actor input Schema

## `keywords` (type: `array`):

The image searches to run. One row of output per image found, in Google's ranking order.

## `maxImagesPerKeyword` (type: `integer`):

How many images to return per keyword (10-300). You are billed per image actually returned, and the search is sized to your request so a small run stays cheap.

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

Country to search from. Image results are localized, so pick the market you care about.

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

Two-letter interface language code (ISO 639-1), e.g. 'en', 'de', 'es'.

## Actor input object example

```json
{
  "keywords": [
    "standing desk"
  ],
  "maxImagesPerKeyword": 30,
  "countryCode": "us",
  "languageCode": "en"
}
```

# Actor output Schema

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

One row per query, plus aggregate rows where applicable.

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

Coverage, citation rates, billing breakdown and net margin for the run.

# 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 = {
    "keywords": [
        "standing desk"
    ],
    "maxImagesPerKeyword": 30,
    "countryCode": "us",
    "languageCode": "en"
};

// Run the Actor and wait for it to finish
const run = await client.actor("santhej/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 = {
    "keywords": ["standing desk"],
    "maxImagesPerKeyword": 30,
    "countryCode": "us",
    "languageCode": "en",
}

# Run the Actor and wait for it to finish
run = client.actor("santhej/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 '{
  "keywords": [
    "standing desk"
  ],
  "maxImagesPerKeyword": 30,
  "countryCode": "us",
  "languageCode": "en"
}' |
apify call santhej/google-images-scraper --silent --output-dataset

```

## MCP server setup

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