# Reverse Image Search & Image Usage Finder (`rainminer/reverse-image-search-scraper`) Actor

Find every web page that uses your image. Paste image URLs to get pages, domains, and titles where the photo appears, exact and cropped copies, similar images, and AI page types with commercial-use flags. For copyright checks, brand protection, and product image monitoring.

- **URL**: https://apify.com/rainminer/reverse-image-search-scraper.md
- **Developed by:** [rainminer](https://apify.com/rainminer) (community)
- **Categories:** SEO tools, Lead generation, AI
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $6.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.
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

### What does Reverse Image Search & Image Usage Finder do?

**Reverse Image Search & Image Usage Finder** shows you **every web page that uses your image**. Paste one or more image URLs and get back the pages, domains, and titles where the photo appears, **exact copies**, **cropped or edited copies**, and **visually similar images**. Each image also gets an **AI analysis** that sorts the matching pages by type (shop, marketplace, news, blog, social, stock site...), flags **commercial use**, and sums up in plain words where the image is used.

It works like a **reverse image search API**: no browser, no manual searching one photo at a time, and results come back as clean JSON, CSV, or Excel.

### Why use a reverse image search tool?

- 🛡️ **Copyright and image theft checks**: find sites that republish your photos, illustrations, or product shots without permission.
- 🏷️ **Brand protection**: spot marketplaces and shops that sell with your product images or logo.
- 🛒 **E-commerce monitoring**: see which resellers and dropshippers reuse your catalog photos.
- 📰 **Fact-checking and OSINT**: trace where a viral image was published and how it spread.
- 📸 **Photographers and agencies**: track where licensed and unlicensed copies of your work appear.
- 🔎 **Content research**: find higher-resolution versions, related images, and the pages that discuss them.

Run it on the Apify platform to get **API access**, **scheduling** (for example, weekly checks of your whole catalog), **monitoring**, and **integrations** with spreadsheets, Slack, Zapier, Make, and webhooks.

### What data can you get?

| Data | Description |
| --- | --- |
| 🌐 Matching pages | URL, domain, and clean page title of every page that shows the image |
| 🎯 Match type | `full` for an exact copy, `partial` for a crop or edit |
| 🖼️ Exact and partial copies | Direct URLs of every copy of the image found online |
| 👀 Similar images | Images that look alike but are not copies |
| 🏷️ Best guess label and entities | What the image shows, e.g. `Eiffel Tower`, `Espresso` |
| 🤖 Page type (AI) | Shop product, marketplace listing, news, blog, social media, stock site, portfolio, wallpaper site, forum, company site... |
| 💰 Commercial use (AI) | Whether a business uses the image on the page to sell or promote itself (shops, marketplaces, ads, company websites) |
| 📝 AI summary | Two or three sentences on what the image shows and where it is used |
| 📊 Top domains | The domains that use the image most |

### How to find where an image is used online

1. Create a free [Apify account](https://console.apify.com/sign-up).
2. Open **Reverse Image Search & Image Usage Finder** and go to the **Input** tab.
3. Paste one or more **image URLs** (direct links to JPG, PNG, WebP, GIF, BMP, TIFF, or ICO files).
4. Optional: add your own website to **Exclude domains** so only other sites remain.
5. Click **Start** and open the **Output** tab. Use the **Matching pages** view for one row per page, ready to export.

### Input

Click the **Input** tab for all options. The most important ones:

| Field | Default | Description |
| --- | --- | --- |
| `imageUrls` | — | **Required.** Direct image links. Up to 1,000 per run. |
| `maxResults` | `50` | Max matching pages per image (1–500). The price per image does not change. |
| `excludeDomains` | `[]` | Domains to drop from the results, e.g. your own site. Subdomains are dropped too. |
| `includeVisuallySimilar` | `true` | Also return look-alike images. |
| `aiAnalysis` | `true` | Classify pages, flag commercial use, and write a summary. |
| `proxyConfiguration` | off | Only needed if your image host blocks downloads. |

```json
{
  "imageUrls": ["https://images.unsplash.com/photo-1511920170033-f8396924c348?w=800"],
  "maxResults": 50,
  "excludeDomains": ["unsplash.com"],
  "aiAnalysis": true
}
```

### Output

Each image produces **one dataset row**. The **Overview** view shows one line per image; the **Matching pages** view expands it into one line per web page. You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.

```json
{
  "imageUrl": "https://images.unsplash.com/photo-1511920170033-f8396924c348?w=800",
  "bestGuessLabel": "barista wallpaper hd",
  "matchingPagesCount": 46,
  "fullMatchPagesCount": 19,
  "partialMatchPagesCount": 23,
  "commercialUsePagesCount": 27,
  "topDomains": ["coffeekingdirect.com", "roasthq.com", "facebook.com", "instagram.com", "kimbo.co.uk"],
  "aiSummary": "The image displays three portafilters, one filled with coffee beans, another with ground coffee, and the third with a latte featuring latte art. This image is widely used across various platforms, including e-commerce sites, social media, and wallpaper websites, often in contexts related to coffee, cafes, and barista skills.",
  "matchingPages": [
    {
      "url": "https://www.etsy.com/uk/market/barista_wallpaper",
      "domain": "etsy.com",
      "pageTitle": "Barista Wallpaper - Etsy UK",
      "matchType": null,
      "matchedImageUrl": null,
      "pageType": "ecommerce_product",
      "isCommercialUse": true
    },
    {
      "url": "https://wallpapercave.com/barista-wallpapers",
      "domain": "wallpapercave.com",
      "pageTitle": "Barista Wallpapers",
      "matchType": "full",
      "matchedImageUrl": "https://wallpapercave.com/wp/wp7132528.jpg",
      "pageType": "wallpaper_site",
      "isCommercialUse": false
    }
  ],
  "fullMatchingImageUrls": [
    "https://stories.cnnbrasil.com.br/wp-content/uploads/sites/9/2025/04/nathan-dumlao-Y3AqmbmtLQI-unsplash.jpg"
  ],
  "partialMatchingImageUrls": [
    "https://64.media.tumblr.com/0ecb54504f990b7bb2256a4736c010c6/a0199391473cbfa5-d0/s500x750/ce9eabf638b93f38d63972190553325e2b766b86.jpg"
  ],
  "visuallySimilarImageUrls": ["https://i.pinimg.com/originals/e8/54/ec/e854ec6316e0184dfe19da6e428a5c4b.jpg"],
  "webEntities": [
    { "name": "Coffee", "entityId": "/m/02vqfm", "score": 1.1113 },
    { "name": "Espresso", "entityId": "/m/0ctfk", "score": 1.0572 }
  ],
  "error": null,
  "searchedAt": "2026-09-28T19:40:00.000Z"
}
```

`matchType` is `null` when a page shows the image but no single copy on that page could be pinned down. AI analysis classifies the first 100 matching pages of each image; any pages after that have `pageType` and `isCommercialUse` set to `null`. Rows for images that could not be processed have an `error` message and empty results.

### How much does reverse image search cost?

The Actor uses **pay-per-event** pricing, so you pay only for what you use:

- **Image searched**: charged once per image that was searched. The price is the same whether you ask for 10 or 500 matching pages.
- **AI analysis**: charged once per image whose matches were analyzed by AI. Turn off `aiAnalysis` to skip it. Images with no matching pages are never charged for AI analysis.

Invalid links, web pages that are not images, and images that could not be downloaded are **not charged**. See the **Pricing** tab for current rates. Set a maximum cost per run in the run options and the Actor stops cleanly when it is reached.

### Tips

- Use **direct image links** (ending in `.jpg`, `.png`, `.webp`...), not the web page that shows the image. Right-click the image and choose **Copy image address**.
- Add your own domain to **Exclude domains** to get a clean list of third-party sites for takedown requests.
- Schedule a weekly run over your product or portfolio images and send new matches to a spreadsheet or Slack.
- Larger, original-resolution images usually find more exact copies than small thumbnails.

### FAQ

#### How is this different from searching images by hand?

Browser reverse image search handles one photo at a time and gives you a page of thumbnails. This Actor searches up to 1,000 images per run, returns structured data you can filter and export, and adds AI page classification and commercial-use flags.

#### Is it a TinEye alternative?

Yes, if your goal is finding where an image is used. It returns matching pages, exact and partial copies, and similar images, with API access and scheduling included through Apify.

#### Can I upload image files instead of URLs?

The Actor takes image URLs. To check local files, upload them to any public file host or an Apify key-value store and pass the links.

#### Is it legal to use reverse image search?

The Actor only looks up publicly available web pages and does not log into any website. Results can contain personal data, such as photos of people on social media. Personal data is protected by the GDPR in the European Union and by other regulations around the world. Only process personal data when you have a legitimate reason, and consult your lawyers if unsure.

#### Something is missing or wrong

Open the **Issues** tab and describe the problem with the image URL you used. Feedback and feature requests are welcome, and custom versions are available on request.

### Other Actors by rainminer

- [EU AI Act Image Labeler](https://apify.com/rainminer/eu-ai-image-labeler): add official AI-generated content labels to images.
- [Instagram Reel Text Extractor](https://apify.com/rainminer/instagram-reel-text-extractor): read the on-screen text of Instagram Reels.
- [TikTok Fact Checker](https://apify.com/rainminer/tiktok-fact-checker): check the claims made in TikTok videos.

# Actor input Schema

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

Direct links to the images you want to look up (JPG, PNG, WebP, GIF, BMP, TIFF or ICO). One row is saved per image. Up to 1,000 images per run.

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

Upper limit of web pages returned for each image. Widely shared images can match a few hundred pages; the price per image is the same regardless of this value.

## `excludeDomains` (type: `array`):

Drop pages and copies on these domains, e.g. your own website, so only other sites that use the image remain. Subdomains are excluded too.

## `includeVisuallySimilar` (type: `boolean`):

Also return images that look similar but are not copies of your image.

## `aiAnalysis` (type: `boolean`):

Classify each matching page (shop, marketplace, news, blog, social, stock site...), flag commercial use, and write a short summary. Covers the first 100 matching pages per image. Charged as a separate event per image.

## `proxyConfiguration` (type: `object`):

Proxy used to download your images. Not needed for most public image links; enable it only if your image host blocks downloads.

## Actor input object example

```json
{
  "imageUrls": [
    "https://images.unsplash.com/photo-1506744038136-46273834b3fb?w=800"
  ],
  "maxResults": 50,
  "excludeDomains": [
    "unsplash.com"
  ],
  "includeVisuallySimilar": true,
  "aiAnalysis": true,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

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

No description

## `matchingPages` (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 = {
    "imageUrls": [
        "https://images.unsplash.com/photo-1506744038136-46273834b3fb?w=800"
    ],
    "excludeDomains": [
        "unsplash.com"
    ],
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("rainminer/reverse-image-search-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://images.unsplash.com/photo-1506744038136-46273834b3fb?w=800"],
    "excludeDomains": ["unsplash.com"],
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("rainminer/reverse-image-search-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://images.unsplash.com/photo-1506744038136-46273834b3fb?w=800"
  ],
  "excludeDomains": [
    "unsplash.com"
  ],
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call rainminer/reverse-image-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,rainminer/reverse-image-search-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/M2yr1gZvNCFLcvVBw/builds/8wyECUa60pVzslk4N/openapi.json
