# Reverse Image Search: Google Lens Matches & Pages \[NO LOGIN] ✅ (`unseenuser/reverse-image-search`) Actor

Reverse image search with Google Lens: up to ~60 visual matches, ~9 web pages and 10 short videos per image link, any country and language. Hosts that block Google still work. $3.99 per 1,000 images with matches; failed and no-match images are free. Export CSV, Excel, JSON or API.

- **URL**: https://apify.com/unseenuser/reverse-image-search.md
- **Developed by:** [Unseen User](https://apify.com/unseenuser) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

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

## 🔍 Reverse Image Search - Google Lens Visual Matches & Pages

> **Find where an image is published with Google Lens: up to ~60 visual matches, ~9 web pages and 10 short videos per image, for any country and language.**

Reverse image search for image links, one or thousands at a time: get the pages, sites and short videos where Google Lens finds each image, as clean rows you can export to CSV, Excel or JSON, or pull through the Apify API. No login, no cookies, no Google account.

### ⚡ Why This Actor?

Atomic actor: give it image links, get back the pages where Google Lens finds visually matching images, the web pages that talk about the image, and the short videos that show it, for the country and language you choose. Built for artwork and photo source-finding, landmarks and places, logos and brand marks, and finding where an image is discussed. Every image gets a clear result or a clear status row, and images that cannot be opened are never charged.

**What it does not do:**

- **No exact-match list.** Results are visually similar images, not proof that a page uses the exact same file. It does not list "every copy of this file".
- **No people or face search.** Images of people are against this actor's policy (see "No People Search" below).
- **No product prices or shopping results.** None appeared in testing.
- **No best-guess label and no text reading (OCR).** You get matches and pages, not a name for the image or the words in it.
- **No paging or depth setting.** Google Lens returns one result page per image, and that is everything this actor can return.

This is a single-job atomic actor. It does ONE thing well. Want a related job? See "Related Actors" at the bottom of this document.

### 📊 What You Get Per Image

| Result type | `resultType` | Up to | What each row has |
|---|---|---|---|
| Visual matches | `visual_match` | ~60 | The page the matching image sits on (`pageUrl`, `domain`). Google gives no title or thumbnail for these. |
| Web pages | `page` | ~9 | `title`, `description`, `websiteName`, `thumbnailUrl`, `publishedAt` (when shown) |
| Short videos | `video` | 10 | `title`, `pageUrl`, `domain`, `videoCreator` (channel or account name) |

All three types are always returned. Each result is its own row, so the data is easy to filter, sort and export to CSV. Images that do not produce results get one `info` or `error` row instead, explaining why.

These are **visually similar images**, not guaranteed exact copies. Treat a match as a lead to check, not as proof.

### 🎯 Use Cases

Use it as a bulk reverse image search tool for:

- **Artwork and photo source-finding** - find the original page, artist or archive behind an image you found without credit, and see where else it is published.
- **Logo and brand-mark monitoring** - see which sites show your logo or a look-alike mark, then review them for authorized and unauthorized use.
- **Landmark and place identification** - find pages about the building, monument or place in a photo, in the country and language you choose.
- **Finding where an image is discussed** - get the news articles, encyclopedia entries, social posts and short videos that feature an image.
- **Telling your own sites apart from everyone else's** - list your domains in `yourDomains` and every result on them is marked `isYourDomain: true`, so third-party copies stand out.
- **Checking an image's origin before reuse** - editors and fact-checkers can see where an image appeared before using it or reporting on it.

### 🚀 Quick Start

1. Click **Try for free** on this Actor's page
2. Paste image links
3. Run the Actor
4. Download results as JSON, CSV, or XLSX, or pull via Apify API

### ⚙️ Inputs Overview

| Input | Type | Required | Description | Example/Allowed Values |
|---|---|---|---|---|
| `imageUrls` | array of strings | ✅ | **Image URLs (max 20 MB each; returns up to ~60 visual matches, ~9 pages and 10 short videos per image).** Direct links to image files, one per line. Formats: JPEG, PNG, WebP, GIF, BMP, SVG. HEIC, AVIF and TIFF are not supported. Do not submit images of people. Free Apify plan: up to 5 images per run; paid plans: no limit. | `https://upload.wikimedia.org/wikipedia/commons/thumb/e/ea/Van_Gogh_-_Starry_Night_-_Google_Art_Project.jpg/1280px-Van_Gogh_-_Starry_Night_-_Google_Art_Project.jpg` |
| `country` | enum (dropdown) | ❌ | **Country.** Results are shown as Google Lens shows them in this country. Country-level locations only. Default `United States` | `United States`, `United Kingdom`, `Germany`, `Israel`, ... (full country list in the form) |
| `language` | enum (dropdown) | ❌ | **Language.** Preferred language for results. Page titles and descriptions stay in each page's own language, so results can mix languages. Default `English` | `English`, `German`, `French`, `Hebrew`, ... (full language list in the form) |
| `yourDomains` | array of strings | ❌ | **Your domains (optional).** Results on these domains and their subdomains get `isYourDomain: true`, so you can tell your own copies from everyone else's. Nothing is removed. | `example.com`, `mybrand.co.uk` |

**Example input (JSON):** the input used for the Output Example below.

```json
{
  "imageUrls": [
    "https://upload.wikimedia.org/wikipedia/commons/thumb/e/ea/Van_Gogh_-_Starry_Night_-_Google_Art_Project.jpg/1280px-Van_Gogh_-_Starry_Night_-_Google_Art_Project.jpg"
  ],
  "country": "United States",
  "language": "English",
  "yourDomains": ["wikipedia.org"]
}
```

**Limits that come from the data source:**

| Limit | Value |
|---|---|
| Image size | Max 20 MB per image |
| Image formats | JPEG, PNG, WebP, GIF, BMP, SVG |
| Visual matches per image | Up to ~60 |
| Web pages per image | Up to ~9 |
| Short videos per image | Up to 10 |
| Result pages per image | 1 (Google Lens returns one page) |

There is no limit on the number of images per run or on the number of domains in `yourDomains` (Free plan: see Pricing). The same URL listed twice in one run is searched once.

### 📤 Output Example

Input used: the default Starry Night image, `country: United States`, `language: English`, `yourDomains: ["wikipedia.org"]`. Three result rows (one of each type), one `info` row and one `error` row:

```json
[
  {
    "imageIndex": 1,
    "sourceImage": "https://upload.wikimedia.org/wikipedia/commons/thumb/e/ea/Van_Gogh_-_Starry_Night_-_Google_Art_Project.jpg/1280px-Van_Gogh_-_Starry_Night_-_Google_Art_Project.jpg",
    "resultType": "visual_match",
    "rank": 3,
    "pageUrl": "https://en.wikipedia.org/wiki/The_Starry_Night",
    "domain": "en.wikipedia.org",
    "isYourDomain": true,
    "title": null,
    "description": null,
    "websiteName": null,
    "thumbnailUrl": null,
    "publishedAt": null,
    "videoCreator": null,
    "country": "United States",
    "language": "English",
    "searchedAt": "2026-10-24T19:08:41.512Z",
    "status": "ok",
    "error": null
  },
  {
    "imageIndex": 1,
    "sourceImage": "https://upload.wikimedia.org/wikipedia/commons/thumb/e/ea/Van_Gogh_-_Starry_Night_-_Google_Art_Project.jpg/1280px-Van_Gogh_-_Starry_Night_-_Google_Art_Project.jpg",
    "resultType": "page",
    "rank": 7,
    "pageUrl": "https://edition.cnn.com/2026/10/24/science/van-goghs-starry-night-astronomy-intl-scli",
    "domain": "edition.cnn.com",
    "isYourDomain": false,
    "title": "Astronomers say van Gogh's 'The Starry Night' may have ...",
    "description": "Van Gogh's 1889 “The Starry Night” was probably rooted in observation, according to scientists who say they have identified the actual night ...",
    "websiteName": "CNN",
    "thumbnailUrl": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSV7W_iO7BPEGvH9UDaVrgzYUfzZFY6czxdj-jAUhOjQ_crfmstu6gs&usqp=CAE&s",
    "publishedAt": "2026-10-24T05:07:51Z",
    "videoCreator": null,
    "country": "United States",
    "language": "English",
    "searchedAt": "2026-10-24T19:08:41.514Z",
    "status": "ok",
    "error": null
  },
  {
    "imageIndex": 1,
    "sourceImage": "https://upload.wikimedia.org/wikipedia/commons/thumb/e/ea/Van_Gogh_-_Starry_Night_-_Google_Art_Project.jpg/1280px-Van_Gogh_-_Starry_Night_-_Google_Art_Project.jpg",
    "resultType": "video",
    "rank": 6,
    "pageUrl": "https://www.facebook.com/bymuseum.gallery/videos/the-starry-night-by-van-gogh-explained/1107999625098262/",
    "domain": "facebook.com",
    "isYourDomain": false,
    "title": "The Starry Night 1889: Van Gogh's Asylum Confession in Color",
    "description": null,
    "websiteName": null,
    "thumbnailUrl": null,
    "publishedAt": null,
    "videoCreator": "ByMuseum",
    "country": "United States",
    "language": "English",
    "searchedAt": "2026-10-24T19:08:41.519Z",
    "status": "ok",
    "error": null
  },
  {
    "imageIndex": 2,
    "sourceImage": "https://upload.wikimedia.org/wikipedia/commons/thumb/e/ea/Van_Gogh_-_Starry_Night_-_Google_Art_Project.jpg/1280px-Van_Gogh_-_Starry_Night_-_Google_Art_Project.jpg",
    "resultType": null,
    "rank": null,
    "pageUrl": null,
    "domain": null,
    "isYourDomain": null,
    "title": null,
    "description": null,
    "websiteName": null,
    "thumbnailUrl": null,
    "publishedAt": null,
    "videoCreator": null,
    "country": "United States",
    "language": "English",
    "searchedAt": "2026-10-24T19:07:50.102Z",
    "status": "info",
    "error": {
      "type": "DUPLICATE",
      "message": "This image is already in this run, so it was searched once."
    },
    "charged": false
  },
  {
    "imageIndex": 3,
    "sourceImage": "https://example.com/missing-photo.jpg",
    "resultType": null,
    "rank": null,
    "pageUrl": null,
    "domain": null,
    "isYourDomain": null,
    "title": null,
    "description": null,
    "websiteName": null,
    "thumbnailUrl": null,
    "publishedAt": null,
    "videoCreator": null,
    "country": "United States",
    "language": "English",
    "searchedAt": "2026-10-24T19:07:51.877Z",
    "status": "error",
    "error": {
      "type": "IMAGE_UNREACHABLE",
      "message": "The image could not be downloaded from this URL (HTTP 404). Check that the link opens the image directly."
    },
    "charged": false
  }
]
```

**Output fields:**

| Field | Filled for | Meaning |
|---|---|---|
| `imageIndex` | all rows (null for run-level rows) | Position of the image in your input, starting at 1 |
| `sourceImage` | all rows (null for run-level rows) | Your original link |
| `resultType` | result rows | `visual_match`, `page` or `video`; null on info and error rows |
| `rank` | result rows | Position within its result type, starting at 1 |
| `pageUrl` | result rows | The page the result points to |
| `domain` | result rows | Website of `pageUrl`, without `www.` |
| `isYourDomain` | result rows | `true` when `domain` is one of `yourDomains` or a subdomain of one; otherwise `false` |
| `title` | pages, videos | Title shown by Google Lens |
| `description` | pages | Snippet shown by Google Lens |
| `websiteName` | pages | Site name shown by Google Lens |
| `thumbnailUrl` | pages | Google thumbnail of the image on that page |
| `publishedAt` | pages | Publish time when Google shows one, otherwise null |
| `videoCreator` | videos | Channel or account name |
| `country`, `language` | all rows | The country and language you chose |
| `searchedAt` | all rows | When the row was written |
| `status` | all rows | `ok` for results, `info` or `error` otherwise |
| `error` | info and error rows | `{ "type", "message" }`; null on result rows |
| `charged` | info and error rows only | Always `false`. Result rows do not carry this field. |

The dataset has two views: **Results** (resultType, rank, domain, isYourDomain, title, pageUrl, thumbnailUrl, sourceImage) and **Info and errors** (imageIndex, sourceImage, status, error type, error message).

### 🚦 Info and Error Rows

Every image that does not produce results gets one row explaining why, and the run carries on. These rows are never charged.

| `error.type` | `status` | Message |
|---|---|---|
| `NO_MATCHES` | info | No matching images were found for this image. |
| `DUPLICATE` | info | This image is already in this run, so it was searched once. |
| `INVALID_URL` | error | This is not a valid public image URL. |
| `IMAGE_UNREACHABLE` | error | The image could not be downloaded from this URL (HTTP \<code>). Check that the link opens the image directly. |
| `NOT_AN_IMAGE` | error | This URL does not point to an image file. |
| `UNSUPPORTED_FORMAT` | error | This image format is not supported. Use JPEG, PNG, WebP, GIF, BMP or SVG. |
| `TOO_LARGE` | error | This image is over the 20 MB limit. |
| `SEARCH_TIMEOUT` | error | The search took too long for this image. Please try it again. |
| `INVALID_INPUT` | error | Add at least one image URL. |
| `FREE_PLAN_LIMIT` | info | NOTE: Free Apify users receive up to 5 results per run. Upgrade to any paid Apify plan to remove this limit. This limit was set by the Actor developer, not by Apify. |
| `MAX_CHARGE_REACHED` | info | The maximum cost per run was reached, so the remaining images were not searched. |
| `SOURCE_UNAVAILABLE` | error | The data source is temporarily unavailable, please try again in a few minutes. If this keeps happening, please open an issue in this Actor's Issues tab with your run ID (\<RUN_ID>) and the error type (SOURCE_UNAVAILABLE), so we can fix it. |
| `INTERNAL_ERROR` | error | Something went wrong on our side. If this keeps happening, please open an issue in this Actor's Issues tab with your run ID (\<RUN_ID>) and the error type (INTERNAL_ERROR), so we can fix it. |

### 💰 Pricing

Pay-per-event model on Apify. Each run has a small start fee, and after that you pay only for images that return matches.

| Event | Price | Charged when |
|---|---|---|
| Actor start | $0.02 per run | Every run |
| Image searched | $3.99 per 1,000 images ($0.00399 per image) | Once per image that returns at least one result, whatever the number of result rows |

Images with no matches, images that fail (bad link, wrong format, too large, timeout) and skipped images (duplicates, over the limit) are free. Info and error rows are never charged.

**Free plan:** NOTE: Free Apify users receive up to 5 results per run. Upgrade to any paid Apify plan to remove this limit. This limit was set by the Actor developer, not by Apify.

See exact per-event pricing on the Actor's Apify page.

### 🚫 No People Search

This actor is for products, logos, artwork, places and finding where an image is published. Do not submit photos of people or use it to identify anyone. Runs that do may be blocked.

### ❓ FAQ

**Q: Are the results exact copies of my image?**
A: No. Google Lens returns visually similar images. Many will be the same picture, but some may be edits, crops or look-alikes. Open the page to confirm before acting on a match.

**Q: Why did an image return NO_MATCHES?**
A: Google Lens found nothing for it. This is rare: even an obscure random photo returned 60 matches in testing. NO_MATCHES images are not charged.

**Q: Why do visual matches have no title or thumbnail?**
A: Google Lens gives only the page link for visual matches. Titles, descriptions and thumbnails come with the web page and short video results.

**Q: My image link opens fine in my browser. Why does it work here when other tools fail?**
A: Some image hosts block Google's own fetcher. This actor downloads and checks each image first, then hands Google a temporary copy, so those images still get searched.

**Q: What happens to the images I submit?**
A: Each image is stored only in your run's own storage, shared with the search engine through a temporary link, and deleted as soon as its search finishes.

**Q: Does `yourDomains` remove my own sites from the results?**
A: No. Nothing is removed. Results on your domains and their subdomains are marked `isYourDomain: true` so you can filter them yourself.

**Q: How long does a run take?**
A: In testing, Google Lens results were ready 17 to 87 seconds after an image was sent. Images are handled in batches of 100, so large runs take longer.

**Q: Does the country or language change the results?**
A: Yes. Results are shown as Google Lens shows them in the chosen country. Language: Preferred language for results. Page titles and descriptions stay in each page's own language, so results can mix languages.

**Q: What does the Free plan include?**
A: NOTE: Free Apify users receive up to 5 results per run. Upgrade to any paid Apify plan to remove this limit. This limit was set by the Actor developer, not by Apify.

**Q: What is a reverse image search?**
A: You give a search engine an image instead of words, and it finds pages that show the same or a visually similar image. This actor runs a reverse image search on Google Lens for every image link you give it and returns the results as rows.

**Q: Is there a Google Lens API?**
A: Google does not offer a public Google Lens API or reverse image search API for Lens results. This actor works as one: send image links through the Apify API or the form, and get visual matches, web pages and short videos back as JSON. Because it runs on Apify, you can call it from your own code, schedule it or connect it to other tools.

**Q: How is this different from a Google reverse image search by hand?**
A: It is the same Google Lens search, returned as data. Every match is a row with its page link and domain, pages come with title, snippet and date when shown, and you can search thousands of images, filter by `isYourDomain`, repeat runs on a schedule and export to CSV, Excel or JSON.

**Q: Can I reverse image search many images at once?**
A: Yes. Paste as many image links as you like: paid plans have no limit on images per run. Every image gets its own result rows or one status row explaining what happened.

**Q: How do I find the original source of an image?**
A: Run the image link, then check the `page` rows with the earliest `publishedAt` and the domains that appear most often in the `visual_match` rows. Museum, encyclopedia, stock and news pages are often the original source. Treat every result as a lead and open the page to confirm.

**Q: How is this different from the Google Cloud Vision API?**
A: Cloud Vision is Google's official image-analysis API (labels, text, logo and landmark detection). It is not the same as the Google Lens results page. This actor returns what Google Lens shows for an image: visual matches, web pages and short videos, one row per result.

**Q: Can I call this reverse image search API from Python or JavaScript?**
A: Yes, with the official Apify client for Python (`apify-client`) or JavaScript. A minimal Python example:

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("unseenuser/reverse-image-search").call(run_input={
    "imageUrls": ["https://upload.wikimedia.org/wikipedia/commons/thumb/e/ea/Van_Gogh_-_Starry_Night_-_Google_Art_Project.jpg/1280px-Van_Gogh_-_Starry_Night_-_Google_Art_Project.jpg"],
    "country": "United States",
    "language": "English",
})
for row in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(row["resultType"], row["pageUrl"])
```

**Q: Is there a free reverse image search API?**
A: Google does not offer a public one for Lens results. You can try this actor on the Apify Free plan; see "What does the Free plan include?" above and the Pricing section.

**Q: Can ChatGPT or other AI assistants do a reverse image search?**
A: They can describe an image you show them, but they do not return the full list of pages where an image appears. This actor returns the Google Lens results as rows, and AI agents can run it through Apify's MCP server or API.

**Q: What should I look for in a bulk reverse image search tool?**
A: For one image, Google Lens in your browser is enough. For many images, look for four things: a list of image links in one run, structured rows you can filter, scheduled repeat runs, and an API. This actor does all four.

#### ⚖️ Legal FAQ

**Q: Is this legal?**
A: This Actor wraps DataForSEO endpoints that handle the underlying data collection. Your downstream use of the data is your responsibility. See the full Terms of Service and the Actor-Specific Addendum (Part 4) for details.

**Q: Do I need a DataForSEO account?**
A: No. UnseenUser holds the DataForSEO credentials. You only need an Apify account.

**Q: What about Google's anti-scraping enforcement?**
A: Google's Terms of Service restrict automated access to its services. DataForSEO handles the data collection and bears the responsibility for its architecture's lawfulness. Your downstream use must comply with Google's Terms.

**Q: What if Google sends a cease-and-desist?**
A: Notify UnseenUser within 48 hours via the Apify profile contact form (apify.com/UnseenUser) and cease using this Actor immediately.

**Q: Can I use this data to train AI?**
A: NO. The images, pages and videos in the results belong to their owners, who retain copyright in their content. Do not train AI models on them without a license from the rights holders.

**Q: What about minors?**
A: This is not a people search, but results can include public social media posts and short videos. You may not use data of users you know or suspect are minors, and you should delete any such data you find. See Part 4 for details.

**Q: Do the results contain personal data?**
A: They can. Results can include public social media posts and video creator names. You are responsible for handling any personal data under the laws that apply to you.

### 🎬 Demo Videos

New to Apify? Schedule this actor to re-check your logo or images every week:

[![How to schedule your Apify actors](https://img.youtube.com/vi/GRFW_Loo2dk/hqdefault.jpg)](https://www.youtube.com/watch?v=GRFW_Loo2dk)

Send each run's results to Google Sheets, Slack, Zapier, Make or your own app:

[![Apify integrations](https://img.youtube.com/vi/bNACk1_S_6w/hqdefault.jpg)](https://www.youtube.com/watch?v=bNACk1_S_6w)

### 🔧 How It Works

- **Live data:** every run searches Google Lens at that moment. Nothing comes from a cache.
- **No login, no cookies, no Google account:** paste image links and run.
- **Checked before searching:** each image is downloaded, checked and saved temporarily in your run's own storage, then searched from that copy. Links that cannot be opened get an error row and are never charged.
- **Typical speed:** results for an image are usually ready 17 to 87 seconds after it is sent (measured in testing). Large runs take longer.
- **When a run ends:** when every image has results or a status row, or earlier if the free plan limit, your maximum cost per run, or a search service outage stops it. An info or error row says which.
- **Safe restarts:** a run that is restarted or migrated never searches the same image twice.
- **Output:** one flat row per result in the Apify dataset. Export as JSON, CSV, Excel or via the Apify API.

### 🔗 Related Actors

- [Google AI Overviews scraper](https://apify.com/unseenuser/google-ai-overviews-scraper) - Google AI Overview Tracker: see which sites Google's AI answers cite for any search
- [Google Shopping scraper](https://apify.com/unseenuser/google-shopping-scraper) - Google Shopping prices from every seller, for product images you identify here
- [Keyword search volume tool](https://apify.com/unseenuser/keyword-search-volume) - search volume, CPC and competition for the keywords around an image or brand
- [Google Trends scraper](https://apify.com/unseenuser/google-trends-scraper) - interest over time and related queries for a brand, artwork or place

***

## Apify Actor - Terms of Service

**Version:** 4.0
**Effective Date:** May 5, 2026

***

### 0. ACCEPTANCE BY USE - IMPORTANT

**Read this section first.**

These Terms of Service ("Terms") form a binding legal agreement between you ("User," "you," "your") and UnseenUser, the Publisher of this Apify actor ("UnseenUser," "the Publisher," "we," "us," "our").

#### 0.1 How You Accept These Terms

You accept these Terms by **any of the following actions**, each of which constitutes a clear, affirmative act of acceptance:

- (a) **Running the Actor** - Initiating any execution of the Actor on the Apify platform
- (b) **Using any output** returned by the Actor for any purpose
- (c) **Continuing to access** the Actor's listing or documentation after these Terms are visible

#### 0.2 Continuing Acceptance

Each time you run the Actor or use its outputs, you reaffirm your acceptance of the then-current Terms. If you do not agree to these Terms or any subsequent update, you must stop using the Actor immediately.

#### 0.3 No Anonymous Acceptance

You cannot disclaim acceptance by:

- Failing to read these Terms before running the Actor
- Running the Actor through automated systems
- Sharing your Apify account with others who may not have read these Terms

By the act of running the Actor on Apify, you bind yourself, your organization (if applicable), and any individuals or systems acting on your behalf or under your authority.

#### 0.4 If You Do Not Accept

**If you do not agree to these Terms, you must not run the Actor.** No use is authorized without acceptance.

***

### PREAMBLE - UNDERSTANDING THE ARCHITECTURE

Before using the Actor, please understand the technical architecture of the service:

#### The Data Flow

```
You (User) → Apify Platform → Actor (software) → Third-Party API → Source Platform
                                                       ↓
You (User) ← Apify Platform ← Actor (software) ← Third-Party API
```

#### What Each Party Does

- **You (the User):** Run the Actor on the Apify platform with input parameters you choose
- **Apify:** Operates the cloud infrastructure that hosts and executes Actors. Apify is a Czech-incorporated company (Apify Technologies s.r.o.) governed by its own Terms of Service.
- **The Publisher (us):** Publishes software code (the Actor) on Apify's platform. The Actor is a thin wrapper that translates your input into requests to a third-party API and returns the API's responses to you. **The Publisher does not operate scraping infrastructure. The Publisher does not store or retain data returned by the Actor. Because requests are made under the Publisher's provider accounts, copies of results may remain temporarily in those accounts for the retention periods listed in the Addendum, after which the provider deletes them. The Publisher does not access these copies except where needed to troubleshoot a run at the User's request. The Publisher does not see, log, or process the personal data of any individuals returned in the Actor's outputs beyond what is incidental to passing the data through.**
- **Third-Party API Provider:** DataForSEO (https://dataforseo.com). This is an independent third-party company that operates data infrastructure that retrieves public search engine result pages and returns them as structured data.
- **Source Platform:** Google (public Google Lens and search result pages). This is the platform whose publicly visible data is accessed by the Third-Party API Provider.

#### Why This Matters

Your relationship with the Publisher is that of a **software user** to a **software vendor**. The Publisher has the responsibilities of a software vendor (functional code, accurate documentation) and the limits of one (the Publisher is not responsible for how you use the data you obtain).

***

These Terms operate alongside but do not replace:

- Apify's Terms of Service and Acceptable Use Policy (governing your relationship with Apify)
- DataForSEO (https://dataforseo.com) Terms of Service (governing the underlying data infrastructure)
- Source Platform terms (Google) governing the public data accessed
- Applicable law in your jurisdiction and the jurisdictions of data subjects

These Terms incorporate the actor-specific addendum published in each Actor's individual listing ("Addendum"). In the event of a conflict, the more restrictive provision applies.

***

### 1. NATURE OF THE SERVICE

#### 1.1 What the Actor Is

The Actor is a software program published on the Apify platform. Each Actor:

- (a) Accepts structured input from you on the Apify platform
- (b) Translates that input into HTTP requests to a third-party API operated by DataForSEO (https://dataforseo.com)
- (c) Receives HTTP responses from that third-party API
- (d) Returns the response data to you in a structured format on the Apify platform

The Actor's source code is hosted on Apify's infrastructure. The Actor runs in Apify's cloud, not on the Publisher's servers. The Publisher operates no servers running the Actor.

#### 1.2 What the Actor Is Not

The Actor is **not**:

- (a) A scraping tool - the Publisher does not operate scraping infrastructure, proxies, headless browsers, or fake accounts
- (b) A direct connection to any source platform - connections to source platforms are made by DataForSEO (https://dataforseo.com)
- (c) A data storage or data retention service - the Publisher does not maintain a database of any data the Actor returns. Because requests are made under the Publisher's provider accounts, copies of results may remain temporarily in those accounts for the retention periods listed in the Addendum, after which the provider deletes them. The Publisher does not access these copies except where needed to troubleshoot a run at the User's request.
- (d) A licensed access channel to Google (public Google Lens and search result pages) or any other source platform
- (e) Affiliated with, endorsed by, sponsored by, or authorized by any source platform

#### 1.3 The Publisher's Limited Role

The Publisher's role is limited to:

- (a) Designing and writing the Actor's source code
- (b) Publishing the Actor on the Apify Store
- (c) Maintaining the Actor (updating it when API providers change schemas)
- (d) Providing documentation and customer support via Apify's contact mechanism

The Publisher is a software vendor, similar to a developer who publishes an app on the Apple App Store or Google Play Store. The Publisher is not a data provider, data broker, data processor, or data controller for purposes of GDPR, CCPA, Israel's Privacy Protection Law, or equivalent.

#### 1.4 The Third-Party API Provider's Role

DataForSEO (https://dataforseo.com) is an independent third-party company. It:

- (a) Operates the data infrastructure that retrieves public search engine result pages
- (b) Maintains relationships with source platforms (or accepts the operational risk of accessing public data without such relationships)
- (c) Provides its own Terms of Service governing its operations
- (d) Is responsible for compliance obligations relating to the data collection itself

The Publisher is a customer of this provider. The Publisher is not its agent, partner, or representative.

***

### 2. WHO MAY USE THE ACTOR

#### 2.1 Eligibility

You may use the Actor only if:

- (a) You are at least 18 years old or the age of majority in your jurisdiction
- (b) You have legal capacity to enter into binding contracts
- (c) You are not located in or resident of a country subject to comprehensive sanctions by the United States, European Union, United Kingdom, or Israel
- (d) You are not on any prohibited persons list

#### 2.2 User Representations

By using any Actor, you represent and warrant that:

- (a) **Truthful identity:** Information you provide about your identity and intended use is accurate
- (b) **Lawful intent:** Your intended use complies with applicable law in your jurisdiction
- (c) **Source platform compliance:** You will independently comply with the Terms of Service of any source platform whose data you obtain through the Actor
- (d) **Data subject rights:** Where Actor outputs include personal data, you will respect data subject rights under applicable law
- (e) **No prohibited use:** You will not use the Actor for any of the purposes prohibited in Section 4

These representations are continuous - they must remain true throughout your use.

***

### 3. PERMITTED USES

The Actor may be used for any lawful purpose, including:

- Market research and competitive analysis
- Academic research
- Journalism and investigative reporting
- Internal business intelligence
- Brand monitoring
- Recruitment research where consistent with applicable employment law
- Building products that further process publicly available information lawfully

Specific permitted uses for each Actor are described in that Actor's individual listing and Addendum.

***

### 4. PROHIBITED USES

You may not use the Actor for any of the following:

#### 4.1 Illegal Activity

Activity illegal under the law of your jurisdiction, the User's jurisdiction, or the jurisdiction of any data subjects.

#### 4.2 Harassment, Stalking, and Personal Targeting

- Compiling profiles for harassment, stalking, or doxxing
- Tracking individuals' movements or activities without their knowledge
- Building profiles of journalists, activists, dissidents, or vulnerable populations for retaliatory purposes

#### 4.3 Discrimination

- Using outputs for discriminatory employment, lending, housing, or insurance decisions based on protected characteristics
- Building lists for discriminatory purposes

#### 4.4 Spam and Unsolicited Commercial Communication

- Sending unsolicited marketing in violation of CAN-SPAM, CASL, GDPR, PECR, Israeli Anti-Spam Law (סעיף 30א לחוק התקשורת), or equivalent laws
- Building "lead lists" from scraped contacts without proper consent infrastructure
- Reselling contact data for spam purposes

#### 4.5 Fraud and Deception

- Identity theft or impersonation
- Generation of fake reviews, testimonials, or coordinated inauthentic behavior
- Election interference or political disinformation
- Securities fraud

#### 4.6 Source Platform Abuse

- Using outputs to circumvent technical protection measures of source platforms
- Creating fake accounts on source platforms based on Actor outputs
- Vote manipulation, engagement manipulation, or platform algorithm gaming
- Building services that competitively substitute for source platforms

#### 4.7 Reselling the Actor's Service

- Reselling raw Actor outputs as your own data product or scraping-as-a-service
- Sharing your Apify credentials to provide third parties indirect access
- Building competing API services using Actor outputs

#### 4.8 AI Training Without Authorization

- Using Actor outputs as training data for commercial AI/ML models without separate licensing authority from the source platform

#### 4.9 Sensitive Targeting

- Specifically targeting or profiling based on health conditions, sexual orientation, religious beliefs, political opinions, or other sensitive characteristics
- Targeting children under 16 (or local age of consent for data processing)

#### 4.10 Privacy Law Violations

- Processing personal data of EU/UK/California/Israeli residents without complying with applicable privacy law
- Failing to honor data subject access, deletion, or objection requests
- Processing data for purposes incompatible with its publication context

***

### 5. SOURCE PLATFORM TERMS - YOUR RESPONSIBILITY

#### 5.1 Acknowledgment

The Actor accesses publicly visible data on third-party platforms ("Source Platforms") through the Third-Party API Provider, DataForSEO (https://dataforseo.com). The Source Platform is Google (public Google Lens and search result pages).

#### 5.2 Your Sole Responsibility

You acknowledge:

- (a) **You are solely responsible for ensuring your downstream use of data obtained through the Actor complies with the Source Platform's Terms of Service**
- (b) The Publisher makes no representation that any specific use is permitted under any Source Platform's terms
- (c) The Third-Party API Provider, not the Publisher, bears responsibility for the lawfulness of the data collection itself
- (d) You should review Source Platform terms before commercial use:
  - Google: https://policies.google.com/terms
  - DataForSEO: https://dataforseo.com/terms-of-service

#### 5.3 Cease-and-Desist Compliance

If you receive a cease-and-desist letter or other legal demand from a Source Platform regarding your use of Actor outputs, you must:

- (a) Cease the contested use immediately
- (b) Notify UnseenUser within 48 hours via UnseenUser's Apify profile contact form (https://apify.com/UnseenUser)
- (c) Cooperate with the Publisher as needed to mitigate
- (d) Not assert against the Publisher any claim arising from your inability to use the Actor for that Source Platform

***

### 6. DATA PROTECTION - REFLECTING ACTUAL ARCHITECTURE

#### 6.1 Roles Under Privacy Law

For purposes of GDPR, UK GDPR, CCPA, Israel's Privacy Protection Law (PPL) including Amendment 13, and equivalents:

- **You (the User) are the Data Controller** of any personal data you obtain through the Actor and subsequently process for your own purposes
- **DataForSEO (https://dataforseo.com)** is the entity that collects data from Google (public Google Lens and search result pages) - it bears the responsibilities of data processors or controllers (depending on context) for the collection itself
- **The Publisher acts solely as a software vendor**, not as a data controller or processor, because the Publisher does not store, retain, or substantively process personal data - the Actor merely passes API responses through. Because requests are made under the Publisher's provider accounts, copies of results may remain temporarily in those accounts for the retention periods listed in the Addendum, after which the provider deletes them. The Publisher does not access these copies except where needed to troubleshoot a run at the User's request.

#### 6.2 No Data Retention by the Publisher

The Publisher confirms:

- (a) The Publisher does not maintain a database of personal data obtained through the Actor. Because requests are made under the Publisher's provider accounts, copies of results may remain temporarily in those accounts for the retention periods listed in the Addendum, after which the provider deletes them. The Publisher does not access these copies except where needed to troubleshoot a run at the User's request.
- (b) The Actor passes data from the Third-Party API directly to you on the Apify platform - data does not flow through the Publisher's infrastructure
- (c) Apify's standard execution and operational logging may include limited information about Actor runs (input parameters, run duration, data volume) - this is governed by Apify's own privacy practices
- (d) The Publisher does not access, view, or analyze your Actor outputs except as needed for technical support if you specifically share them with the Publisher

#### 6.3 Your Obligations as Data Controller

Where your use of the Actor involves processing personal data, you are responsible for:

- (a) Establishing a lawful basis for your processing (consent, legitimate interest with documented balancing test, contract, etc.)
- (b) Providing transparent notice to data subjects as required by applicable law
- (c) Honoring data subject access, rectification, erasure, restriction, and portability requests
- (d) Implementing appropriate security measures
- (e) Conducting Data Protection Impact Assessments where required
- (f) Appointing a Data Protection Officer if your operations require one
- (g) Registering databases with applicable supervisory authorities
- (h) Honoring opt-out requests for direct marketing
- (i) Cross-border transfer safeguards where data crosses borders

#### 6.4 Israel's Amendment 13 - User Compliance

If your use of the Actor involves Israeli residents' personal data, you must comply with the Privacy Protection Law as amended (Amendment 13, effective August 14, 2025). These obligations are yours as the data controller, not the Publisher's as the software vendor.

#### 6.5 Sensitive Data Targeting Restrictions

You will not use the Actor to specifically target, profile, or build datasets focused on:

- Health or medical conditions
- Religious beliefs
- Political opinions
- Sexual orientation or gender identity
- Genetic or biometric data
- Criminal history
- Children under 16

***

### 7. INTELLECTUAL PROPERTY

#### 7.1 Actor Code

The Actor's source code, schemas, documentation, and branding are owned by the Publisher. You receive a limited, non-exclusive, non-transferable, revocable license to use the Actor for permitted purposes during your active subscription/run with Apify.

#### 7.2 Output Data

The Publisher claims no ownership over the public data the Actor returns. Source Platforms may have copyright, database rights, or other rights in their data; data subjects may have copyright in user-generated content. Your use of output data must respect these rights independently.

#### 7.3 Restrictions

You may not reverse engineer, decompile, or reuse the Actor's code in a competing actor.

#### 7.4 Feedback

Feedback you provide may be used by the Publisher to improve products without compensation to you.

***

### 8. PRICING AND PAYMENT

#### 8.1 Apify Platform Billing

Pricing is administered through Apify's pricing models. Apify processes all payments. Apify's payment terms govern refunds and disputes.

#### 8.2 Pricing Changes

The Publisher may change Actor pricing with at least 14 days' notice via the Actor's Apify listing.

#### 8.3 No Refunds for Misuse

If your access is suspended or terminated for breach of these Terms, you forfeit any unused balance and are not entitled to refunds.

***

### 9. SERVICE AVAILABILITY AND CHANGES

#### 9.1 No Uptime Guarantee

The Actor depends on:

- (a) The Apify platform
- (b) Underlying API provider: DataForSEO (https://dataforseo.com)
- (c) Source Platforms' continued public accessibility

Any of these may change behavior, restrict access, or become unavailable without notice. The Publisher makes no uptime guarantees.

#### 9.2 Service Discontinuation

The Publisher may discontinue any Actor at any time. Reasonable notice will be provided when feasible.

***

### 10. DISCLAIMERS

#### 10.1 "AS IS" Service

THE ACTOR IS PROVIDED "AS IS" AND "AS AVAILABLE" WITHOUT WARRANTIES OF ANY KIND, INCLUDING WARRANTIES OF MERCHANTABILITY, FITNESS FOR PURPOSE, NON-INFRINGEMENT, OR ACCURACY OF DATA.

#### 10.2 No Representation of Lawfulness

The Publisher makes no representation that your specific use of the Actor or the data it returns is lawful in your jurisdiction or under any Source Platform's terms. The burden of determining lawfulness for your use case is yours.

#### 10.3 No Endorsement of Source Content

Content returned by the Actor was created by third parties. The Publisher does not endorse, verify, or take responsibility for it.

***

### 11. LIMITATION OF LIABILITY

#### 11.1 Aggregate Liability Cap

TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, IN NO EVENT SHALL THE AGGREGATE LIABILITY OF THE PUBLISHER FOR ALL CLAIMS RELATING TO THE ACTOR EXCEED THE GREATER OF:

- (a) ONE HUNDRED U.S. DOLLARS (US $100), OR
- (b) THE AMOUNTS YOU PAID THROUGH APIFY FOR USE OF THE ACTOR IN THE THREE (3) MONTHS IMMEDIATELY PRECEDING THE EVENT

#### 11.2 Excluded Damages

THE PUBLISHER IS NOT LIABLE FOR INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL, EXEMPLARY, OR PUNITIVE DAMAGES, OR FOR LOSS OF PROFITS, REVENUE, OR DATA, EVEN IF ADVISED OF THE POSSIBILITY.

#### 11.3 Time Limit

Any claim must be brought within one (1) year of the event.

***

### 12. INDEMNIFICATION

#### 12.1 Your Indemnification of the Publisher

You agree to defend, indemnify, and hold harmless the Publisher from any:

- Claims arising from your use of the Actor
- Claims arising from your violation of these Terms
- Claims arising from your violation of any law (including privacy law)
- Claims arising from your violation of any Source Platform's Terms of Service
- Claims arising from your processing of personal data obtained through the Actor
- Reasonable attorneys' fees and costs of defending such claims

#### 12.2 Defense

The Publisher may assume defense at your expense. You will cooperate with the Publisher's defense.

#### 12.3 Scope

The indemnification covers reasonable, foreseeable third-party claims arising from your use. It does not extend to:

- Claims arising from the Publisher's gross negligence or willful misconduct
- Claims regarding the Actor's source code itself (those are the Publisher's responsibility)
- Claims regarding the Third-Party API Provider's data collection (those are their responsibility)

***

### 13. SUSPENSION AND TERMINATION

#### 13.1 Termination by the Publisher

The Publisher may terminate your access for material breach, illegal use, breach of warranty, or upon credible legal demand.

#### 13.2 Effects of Termination

Your license ends, you must cease use, and applicable provisions survive.

#### 13.3 Termination by You

You may stop using the Actor at any time on Apify.

***

### 14. DISPUTE RESOLUTION

#### 14.1 Informal Resolution First

Send a detailed written description of the dispute via UnseenUser's Apify profile contact form (https://apify.com/UnseenUser) and wait 60 days for resolution attempt before any formal claim.

#### 14.2 Governing Law

These Terms are governed by the substantive laws of the State of Israel, without regard to conflict of law principles.

#### 14.3 Exclusive Jurisdiction

Any dispute shall be brought exclusively in the competent civil courts of Tel Aviv-Jaffa, Israel.

#### 14.4 No Class Actions

You agree to bring claims only in your individual capacity.

#### 14.5 Attorneys' Fees

The prevailing party recovers reasonable attorneys' fees.

***

### 15. MISCELLANEOUS

#### 15.1 Entire Agreement

These Terms (with Addendum and incorporated documents) are the entire agreement.

#### 15.2 Severability

Unenforceable provisions are reformed to the minimum extent or severed.

#### 15.3 Assignment

You may not assign without the Publisher's consent. The Publisher may assign to affiliates, successors, or acquirers.

#### 15.4 Force Majeure

Neither party is liable for failure due to events beyond reasonable control, including changes by Source Platforms or the Third-Party API Provider, or actions by Apify.

#### 15.5 Third-Party Beneficiaries

Apify and DataForSEO (https://dataforseo.com) are intended third-party beneficiaries of Sections 4 (Prohibited Uses), 5 (Source Platform Compliance), and 12 (Indemnification).

#### 15.6 Survival

Sections 0 (Acceptance), 4, 5, 6, 7, 10, 11, 12, 14, and 15 survive termination.

#### 15.7 Language

English controls. Translations are for convenience only.

#### 15.8 Publisher Identification for Legal Process

The Publisher operates on the Apify platform under the username **UnseenUser** (apify.com/UnseenUser). The Publisher is a registered legal entity. Upon receipt of valid legal process (subpoena, court order, or equivalent) directed through Apify's official channels, the Publisher's full legal identity may be disclosed as required by law. This Section ensures that you have a valid path to legal recourse if needed.

***

### 16. ACKNOWLEDGMENT

By using any Actor, you acknowledge that:

- (a) You have read these Terms
- (b) You understand the architecture: you are using software (the Actor) on Apify's platform that calls third-party APIs
- (c) You accept responsibility for your use, including for compliance with Source Platform terms
- (d) Your indemnification obligations cover third-party claims arising from your use
- (e) Disputes are resolved in Israeli courts
- (f) The Publisher's identity, while not publicly disclosed in this listing, can be obtained through valid legal process via Apify

For questions, use UnseenUser's Apify profile contact form (https://apify.com/UnseenUser) before running the Actor.

***

### APPENDIX - Document Version History

| Version | Date | Summary |
|---------|------|---------|
| 1.0 | May 5, 2026 | Initial publication |
| 2.0 | May 5, 2026 | Hardened (over-broad - treated User as data broker) |
| 3.0 | May 5, 2026 | Architecturally accurate - Publisher as software vendor |
| 4.0 | May 5, 2026 | **Anonymous Publisher.** All personally identifying information removed. Acceptance-by-Use mechanism formalized. |

***

*These Terms reflect best practices for anonymous Apify actor publishing as of May 2026. Not a substitute for legal advice. Consult qualified Israeli commercial counsel before deploying.*

***

### 🛡️ Actor-Specific ToS Addendum - 🔍 Reverse Image Search - Google Lens Visual Matches & Pages

This addendum supplements the Master Terms of Service V4.0. By running this Actor, you accept both the Master ToS and this addendum.

#### A. Architectural Disclosure

This Actor is a software wrapper. It accepts your input parameters, calls 1 DataForSEO (https://dataforseo.com) search function (/v3/serp/google/search_by_image/task_post, then /v3/serp/google/search_by_image/tasks_ready and /v3/serp/google/search_by_image/task_get/advanced), and returns the response data to you on the Apify platform. Before any search, each image you submit is downloaded, checked, and saved in your run's own Apify storage, shared with the search engine through a temporary signed link, and deleted as soon as its search finishes; UnseenUser never keeps a copy. UnseenUser does not store, log, or substantively process the data returned. Because requests are made under the Publisher's provider accounts, copies of results may remain temporarily in those accounts for the retention periods listed in the Addendum, after which the provider deletes them. The Publisher does not access these copies except where needed to troubleshoot a run at the User's request. The data flows from DataForSEO through Apify's runtime directly to you.

#### Data Retention

DataForSEO: Requests are made through the Publisher's DataForSEO account using its standard (queued) method. According to DataForSEO's help center, results of these tasks are kept for 30 days and can be retrieved again with the task ID during that period (https://dataforseo.com/help-center/how-long-do-you-keep-results). DataForSEO does not publish a separate retention period for its request, usage or billing records. The Publisher does not access these stored results except where needed to troubleshoot a run at the User's request.

Each image is sent to the search as a temporary link to a copy in the run's own storage. The copy is deleted when its search finishes, so the link recorded with the provider's task no longer opens.

#### B. Nature of Data Returned

This Actor returns, for each image you submit: up to ~60 visual matches (the URL and domain of each page where Google Lens found a visually similar image), up to ~9 web pages about the image (title, description, website name, a Google thumbnail and, when shown, a publish time), and up to 10 short videos (title, URL, domain and the creator's channel or account name), for the country and language you chose. Results can include public social media posts (for example Instagram, Facebook, Pinterest and YouTube) and the names of the accounts or creators behind them. The Actor does not return the matched image files, prices, a best-guess label or text read from the image, and it never searches for people or faces.

Where the Actor's output includes individual people's names, photos, contact details, or content authored by them, that data constitutes **personal data** subject to GDPR, CCPA, Israeli Privacy Protection Law (including Amendment 13), and equivalent privacy laws in your downstream processing - but **only in your hands as the data controller**, not in UnseenUser's hands as the software vendor.

#### C. Permitted Use Cases

You may use this Actor for the following purposes (non-exhaustive list):

- **Artwork and photo source-finding** - find the original page, artist or archive behind an image you found without credit, and see where else it is published.
- **Logo and brand-mark monitoring** - see which sites show your logo or a look-alike mark, then review them for authorized and unauthorized use.
- **Landmark and place identification** - find pages about the building, monument or place in a photo, in the country and language you choose.
- **Finding where an image is discussed** - get the news articles, encyclopedia entries, social posts and short videos that feature an image.
- **Telling your own sites apart from everyone else's** - list your domains in `yourDomains` and every result on them is marked `isYourDomain: true`, so third-party copies stand out.
- **Checking an image's origin before reuse** - editors and fact-checkers can see where an image appeared before using it or reporting on it.

#### D. Specifically Prohibited Uses

In addition to Master ToS Section 4 prohibitions, you may NOT:

- Submit photos of people, or use the results to identify, locate, or track any person
- Submit images you do not have the right to submit, including intimate or private images of anyone
- Collect the matched images or pages to republish them without permission from the rights holders
- Build an image-matching database or a "where is this photo" service to sell to others
- Use the results to harass, shame, or target the owners of the pages found
- Treat a visual match as proof of copying in public accusations without checking it first
- Use the results to get around a website's paywall or access controls

#### E. Platform Terms of Service Considerations

Google's Terms of Service (https://policies.google.com/terms) restrict automated access to Google's services, and they cover Google Lens. This Actor accesses publicly visible Google Lens result pages via the third-party API provider, which bears responsibility for the lawfulness of the data collection. Your downstream use must independently comply with Google's Terms of Service, and with the terms of every website whose pages appear in your results.

If Google issues a cease-and-desist regarding data obtained via this Actor, notify UnseenUser within 48 hours via the Apify profile contact form (apify.com/UnseenUser) and cease your use immediately.

#### F. No People Search - STRICT POLICY

This actor is for products, logos, artwork, places and finding where an image is published. Do not submit photos of people or use it to identify anyone. Runs that do may be blocked.

This policy appears in four places with the same wording: the input form, the README, this addendum, and the legal FAQ. It applies to every image you submit and to every person shown in an image, including people in the background of a photo of a place or product.

**How it is enforced:**

- The Actor does not run a face detector and does not analyze who is in your images. Responsibility for what you submit is yours alone.
- If an issue, report, or complaint shows that an account has used this Actor on images of people, UnseenUser may block that account from all future runs of this Actor without notice or refund (Master ToS Sections 8.3 and 13.1).
- Searching for a person is not made acceptable by consent claims, public-figure status, or the fact that the photo is already public.

| Use | Status |
|---|---|
| Finding where your company logo appears | ✅ Permitted |
| Finding the source page of an uncredited landscape or artwork image | ✅ Permitted |
| Identifying a building or monument in a holiday photo with no people in it | ✅ Permitted |
| Finding where a photo of a stranger was posted | ❌ People search - prohibited |
| Identifying a person from a dating profile, social post, or screenshot | ❌ People search - prohibited |
| Finding other accounts that use a person's profile picture | ❌ People search - prohibited, even to check for impersonation |

#### G. Your Images - Right to Submit, Storage and Deletion

**Right to submit.** By submitting an image link, you confirm that you have the right to submit it for this purpose, and that submitting it does not breach any copyright, licence, confidentiality duty, or privacy right. Do not submit images that are confidential, unreleased, private, or owned by someone who has not allowed this use.

**How your images are handled:**

- Each image is downloaded and checked inside your own Apify run. Images that fail the checks are never sent anywhere.
- Images that pass are stored only in your run's own Apify storage (the run's default key-value store), under a temporary name.
- The search engine receives only a temporary signed link to that stored copy, never your original link.
- Each stored copy is deleted as soon as its search finishes, and any remaining copies are deleted at the end of every batch, at the end of the run, and when a run is aborted or migrated.
- Large images may be resized and re-saved as JPEG before searching. Your original file is never changed.
- UnseenUser does not view, keep, or reuse your images.

Your original links do appear in the output (`sourceImage`), and Apify's own run logs and storage policies apply to your run as described in Master ToS Section 6.2(c).

#### H. Visual Similarity Is NOT Proof of Copying

Google Lens returns **visually similar** images. A match can be the same file, a crop, an edit, a different photo of the same subject, or simply a look-alike. The Actor does not compare files and cannot tell which of these a match is.

Before you send a takedown notice (for example under the DMCA), a cease-and-desist letter, a licence invoice, or a public accusation based on a result, you must:

- Open the page and confirm with your own eyes that it shows your work
- Check whether the page has a licence, a credit, or a fair-use or quotation basis
- Keep your own evidence (a dated screenshot or archive copy); results can change between runs

A false takedown or accusation can expose you to legal claims, and those claims are yours alone (Master ToS Section 12). UnseenUser makes no representation that any result is an infringing copy.

#### I. Image, Page and Video Copyright

Every result points to content created and owned by third parties: the pages, the images on them, the videos, and their text. Copyright in that content stays with its owners.

- The Actor returns links, titles, short descriptions, and Google thumbnails. It does not grant you any right to copy, download, or republish the matched images, pages, or videos.
- `thumbnailUrl` links are served by Google; use them for review, not as content in your own products.
- Titles and descriptions are short excerpts from third-party pages. Quote them only as the law in your jurisdiction allows.
- An image's appearance in the results does not mean it is free to use, licensed, or in the public domain.

#### J. Personal Data and Minors in Results

Although this Actor never searches for people, its results can include personal data: public social media posts, account and channel names in `websiteName` and `videoCreator`, and people shown in the thumbnails or pages found. You are the data controller for any personal data you keep (Master ToS Section 6), and you are responsible for handling it under the laws that apply to you.

- Keep only the results you need for your stated purpose, and delete the rest
- Do not combine creator or account names from the results with other data to build profiles of individuals
- Honor deletion and objection requests from people who appear in your stored results
- Do not route data subject requests to UnseenUser; UnseenUser is the software vendor, not the data controller

**Minors.** Social media results can come from accounts of users under 18, and some users do not disclose their age. You must NOT use data about users you know or suspect are minors, and you must delete any such data you find unless you have valid parental consent where the law requires it (COPPA in the US, GDPR Article 8 in the EU, and Israeli Privacy Law, which treats minors with heightened sensitivity). This restriction is non-negotiable.

#### K. AI Training - Special Notice

Google's Terms of Service and the terms of the websites in your results restrict reuse of their content. The images, pages, video titles, and descriptions found by this Actor belong to their owners, and creators retain copyright in their content. The Publisher (UnseenUser) does NOT authorize, and has no ability to authorize, AI training use.

Do not use the results, or the images and pages they link to, to train or fine-tune AI or machine learning models without licences from the rights holders. Recent litigation (NYT v. OpenAI, Andersen v. Stability AI, Getty Images v. Stability AI, Reddit v. Perplexity) shows that AI training on scraped images and web content is contested.

Your AI training use is your own legal exposure.

# Actor input Schema

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

Direct links to image files, one per line. Formats: JPEG, PNG, WebP, GIF, BMP, SVG (HEIC, AVIF and TIFF are not supported). This actor is for products, logos, artwork, places and finding where an image is published. Do not submit photos of people or use it to identify anyone. Runs that do may be blocked. Free Apify plan: up to 5 images per run; paid plans: no limit.

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

Results are shown as Google Lens shows them in this country.

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

Preferred language for results. Page titles and descriptions stay in each page's own language, so results can mix languages.

## `yourDomains` (type: `array`):

Results on these domains and their subdomains are marked with isYourDomain: true, so you can tell your own copies from everyone else's. Nothing is removed.

## Actor input object example

```json
{
  "imageUrls": [
    "https://upload.wikimedia.org/wikipedia/commons/thumb/e/ea/Van_Gogh_-_Starry_Night_-_Google_Art_Project.jpg/1280px-Van_Gogh_-_Starry_Night_-_Google_Art_Project.jpg"
  ],
  "country": "United States",
  "language": "English",
  "yourDomains": []
}
```

# Actor output Schema

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

One row per visual match, web page and short video, in the Results view.

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

Images without results, with the reason, in the Info and errors view.

# 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://upload.wikimedia.org/wikipedia/commons/thumb/e/ea/Van_Gogh_-_Starry_Night_-_Google_Art_Project.jpg/1280px-Van_Gogh_-_Starry_Night_-_Google_Art_Project.jpg"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("unseenuser/reverse-image-search").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://upload.wikimedia.org/wikipedia/commons/thumb/e/ea/Van_Gogh_-_Starry_Night_-_Google_Art_Project.jpg/1280px-Van_Gogh_-_Starry_Night_-_Google_Art_Project.jpg"] }

# Run the Actor and wait for it to finish
run = client.actor("unseenuser/reverse-image-search").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://upload.wikimedia.org/wikipedia/commons/thumb/e/ea/Van_Gogh_-_Starry_Night_-_Google_Art_Project.jpg/1280px-Van_Gogh_-_Starry_Night_-_Google_Art_Project.jpg"
  ]
}' |
apify call unseenuser/reverse-image-search --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,unseenuser/reverse-image-search"
        }
    }
}
```

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/JjWUVXS5uKXmEe7aQ/builds/g3uOK5OMtZx6vTjLY/openapi.json
