# Google Lens Scraper - $4 / 1000 Images (`scrapeunblocker/google-lens-scraper`) Actor

Reverse image search with Google Lens: give image URLs, get every visual match as JSON - page, site, matching image and size, product price, rating and reviews when shown - plus what Lens recognised. Any country. $4 per 1000 images searched.

- **URL**: https://apify.com/scrapeunblocker/google-lens-scraper.md
- **Developed by:** [Scrapeunblocker](https://apify.com/scrapeunblocker) (community)
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.00 / 1,000 image searcheds

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 Lens Scraper

**Reverse image search with Google Lens**, as clean JSON. Give one or more **image URLs** and get **every visual match** Lens finds - the page the image is on (title, URL, domain, site name), the matching image with its size and a thumbnail, and for products the **price and currency, product name and brand, rating and reviews** when Google shows them - plus **what Lens recognised** in the image (a landmark, a product, with its Knowledge Graph id) and **Google's own description** of the image. No Google account, API key or proxies to set up.

### Features

- **All visual matches** - usually about 60 per image, in Lens order.
- **Product data** - price and currency, product name, brand and description, and the price, rating and review count as the result shows them.
- **What Lens recognised** - the entities Lens identified, with a ready Google search link.
- **Google's description** - Lens's own short explanation of the image, when it is ready.
- **Any country** - shopping matches and prices follow the country you search from.
- **No charge for bad inputs** - an image URL that is gone or is a web page is rejected before any search and is not billed.

### Use cases

- **Find where an image is used** - copyright and brand monitoring, unlicensed use of product photos.
- **Price comparison from a photo** - find shops selling a product and their prices.
- **Product and landmark identification** - let Lens name what is in your images.
- **Duplicate and reseller detection** - spot listings that reuse your product images.

### Input

| Field | Type | Default | Description |
|-------|------|---------|-------------|
| `imageUrls` | array | one example product image | Public http(s) image URLs (one Lens search each). |
| `country` | string | empty | ISO-2 country to search from, e.g. `GB`, `DE`. Empty = the scraper chooses. |
| `maxResults` | integer | `60` | Matches kept per image (1-100). |
| `concurrency` | integer | `3` | Images searched at the same time (1-5). |

#### Example input

```json
{
  "imageUrls": [
    "https://m.media-amazon.com/images/I/61QYCC1rbsL._AC_SL1000_.jpg",
    "https://cdn.britannica.com/72/972-050-24D5F532/Golden-Gate-Bridge-San-Francisco.jpg"
  ],
  "country": "GB",
  "maxResults": 40
}
```

### Output

One dataset item per image searched (matches shortened here):

```json
{
  "imageUrl": "https://m.media-amazon.com/images/I/61QYCC1rbsL._AC_SL1000_.jpg",
  "country": "GB",
  "matchesCount": 59,
  "pricedCount": 4,
  "recognised": ["Amazon Echo Dot Smart Speaker"],
  "relatedSearches": [{"query": "Amazon Echo Dot Smart Speaker", "kgmid": "/g/11gm_5mqpl", "url": "https://www.google.com/search?q=Amazon+Echo+Dot+Smart+Speaker&kgmid=%2Fg%2F11gm_5mqpl"}],
  "description": "The image shows an Amazon Echo Dot (3rd Gen) smart speaker...",
  "visualMatches": [
    {
      "position": 3,
      "title": "Amazon Echo Dot 3rd Gen (36EBT3) with Clock -White, C - CeX ...",
      "url": "https://uk.webuy.com/product-detail/?id=810014001029C",
      "domain": "uk.webuy.com",
      "source": "CeX",
      "imageUrl": "https://uk.static.webuy.com/product_images/Electronics/Smart%20Assistant/810014001029C_l.jpg",
      "thumbnailUrl": "https://encrypted-tbn2.gstatic.com/images?q=tbn:ANd9GcRnIUrZls_-mxjlf_YN9v5zzw6HiurdKu4rwETbcV3cTHy3uV4R",
      "width": 480,
      "height": 346,
      "price": 38,
      "currency": "GBP",
      "product": {"name": "Amazon Echo Dot 3rd Gen (36EBT3) with Clock -White, C", "brand": "Amazon", "description": "The Amazon Echo Dot 3rd Gen with Clock brings Alexa's smart assistance into your home..."},
      "priceText": "£38",
      "rating": null,
      "reviews": null
    }
  ]
}
```

Images that could not be searched (URL gone, not an image, no matches) go to the `ERRORS` record in the run's key-value store, with the reason. They are not billed.

### Pricing

**$4 per 1000 images** (pay per result) - one dataset item is one image searched, with all its matches. Failed images are free.

### Notes

- Google fetches each image itself, so the URL must be public; hotlink-protected images may not load for Google.
- Product prices are shown only for matches Google lists with a price.
- Powered by [ScrapeUnblocker](https://www.scrapeunblocker.com).

# Actor input Schema

## `imageUrls` (type: `array`):

Public http(s) URLs of the images to search with (one Lens search each). Google fetches each image itself.

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

ISO-2 country to search from, e.g. 'GB', 'DE', 'FR'. Shopping matches and prices follow it. Leave empty to let the scraper choose.

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

Cap on the visual matches kept for each image (Lens usually returns about 60).

## `concurrency` (type: `integer`):

How many images to search at the same time (1-5).

## Actor input object example

```json
{
  "imageUrls": [
    "https://m.media-amazon.com/images/I/61QYCC1rbsL._AC_SL1000_.jpg"
  ],
  "country": "",
  "maxResults": 60,
  "concurrency": 3
}
```

# Actor output Schema

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

One item per image: its visual matches, what Lens recognised and Google's description

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

Images that could not be searched, with the reason (not billed)

# 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 = {
    "imageUrls": [
        "https://m.media-amazon.com/images/I/61QYCC1rbsL._AC_SL1000_.jpg"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapeunblocker/google-lens-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 = { "imageUrls": ["https://m.media-amazon.com/images/I/61QYCC1rbsL._AC_SL1000_.jpg"] }

# Run the Actor and wait for it to finish
run = client.actor("scrapeunblocker/google-lens-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 '{
  "imageUrls": [
    "https://m.media-amazon.com/images/I/61QYCC1rbsL._AC_SL1000_.jpg"
  ]
}' |
apify call scrapeunblocker/google-lens-scraper --silent --output-dataset

```

## MCP server setup

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