# Reverse Image Search - Find Every Site Using a Photo (`tenfoldfleet/reverse-image-search`) Actor

Find every website that uses a photo: paste image URLs, get each page where the image appears with title, description, URL, domain and the matching copy's size, plus other sizes. Monitor mode flags new pages. $6 per 1,000 images; failed and empty searches are free.

- **URL**: https://apify.com/tenfoldfleet/reverse-image-search.md
- **Developed by:** [Tenfold Fleet](https://apify.com/tenfoldfleet) (community)
- **Categories:** SEO tools, Agents, MCP servers
- **Security:** Limited permissions
- **Stats:** 1 total users, 0 monthly users, 0.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.

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 do?

**Reverse Image Search** takes the URL of a photo and returns **every web page that uses it**: the page title, description, URL and domain, plus the copy of the image found on that page with its width and height. It also lists other sizes of the same image and the topic tags the engine attached to it. Results come from the public Yandex Images "sites" view, which is strong at finding exact and near-exact copies of a picture.

Not affiliated with Yandex. This actor reads public search result pages only, with no login.

Use it as a **reverse image search API**: send a list of image URLs, get back one row per image with all pages found, in JSON, CSV or Excel. Run it from the Apify Console, the [Apify API](https://docs.apify.com/api/v2), a schedule, or an AI agent through the Apify MCP server.

### Why use it?

- **Find stolen photos.** Photographers, artists and stock contributors can see which sites republish their pictures without a licence.
- **Protect a brand.** Check where your product shots, logo or team photos appear, including resellers and copycat stores.
- **Spot fake profiles and scams.** See whether a profile picture or listing photo is taken from somewhere else.
- **Check sources.** Journalists and researchers can trace where an image was published before.
- **Watch for new copies.** Turn on monitor mode and schedule the actor; each run returns only the pages that are new since the last one.

### What data can it extract?

| Field | Example |
|---|---|
| `imageUrl` | The image you searched |
| `pageCount` / `totalPageCount` | Pages returned / all pages found |
| `newPageCount` | Monitor mode: pages not seen in earlier runs |
| `domains` | Unique domains of the pages |
| `pages[].title` | Title of the page that uses the image |
| `pages[].description` | Text snippet from that page |
| `pages[].pageUrl` | Link to the page |
| `pages[].domain` | Site domain |
| `pages[].matchedImageUrl`, `matchedImageWidth`, `matchedImageHeight` | The copy found on that page and its size |
| `pages[].thumbnailUrl` | Small preview of the match |
| `pages[].isNew` | Monitor mode only |
| `otherSizes[]` | Other resolutions of the same image (url, width, height) |
| `tags[]` | Topic tags for the image |
| `shareUrl` | Link to the same results in a browser |

### How to find every site using a photo

1. Copy the **direct link to the image** (right-click the picture, then "Copy image address"). A link to the web page that holds the image will not work.
2. Paste one or more links into **Image URLs**.
3. Optional: set **Max pages per image**, or turn on **Monitor mode** to get only new pages on later runs.
4. Click **Start**. Each image takes a few seconds.
5. Open the **Pages using each image** view, or download the dataset.

### How much does it cost?

You pay **$6 per 1,000 images searched** ($0.006 per image), however many pages each image returns (often 100 to 400). These are **free**:

- images the engine cannot download (`imageExpired`),
- searches that hit a bot check (`captcha`),
- unreachable or invalid image URLs and web-page links (`unreachable`, `invalidUrl`),
- searches with no pages found (`noResults`).

There is also a tiny actor start fee of $0.00005 per run. The Apify free plan's $5 of monthly credit covers about 800 image searches. You can set a maximum cost per run, and the actor stops when it is reached.

### Input

```json
{
    "imageUrls": [
        "https://images.unsplash.com/photo-1506744038136-46273834b3fb?w=800",
        "https://avatars.githubusercontent.com/u/9919?s=400"
    ],
    "maxPagesPerImage": 0,
    "monitor": false
}
```

### Output

One row per image. Download it as JSON, CSV, Excel, XML or HTML.

```json
{
    "imageUrl": "https://images.unsplash.com/photo-1506744038136-46273834b3fb?w=800",
    "totalPageCount": 325,
    "pageCount": 325,
    "domains": ["quicktravels.com", "seedance2-5.co", "..."],
    "pages": [
        {
            "title": "QuickTravels - Flights, Hotels & More",
            "description": "Mountains meet the ocean.",
            "pageUrl": "https://www.quicktravels.com/",
            "domain": "quicktravels.com",
            "matchedImageUrl": "https://images.unsplash.com/photo-1506744038136-46273834b3fb?w=600&q=80",
            "matchedImageWidth": 600,
            "matchedImageHeight": 400,
            "thumbnailUrl": "..."
        }
    ],
    "otherSizes": [{ "url": "...", "width": 800, "height": 400 }],
    "tags": ["..."],
    "searchedAt": "2026-11-04T09:00:00.000Z"
}
```

A failed image looks like `{ "imageUrl": "...", "errorType": "imageExpired", "error": "..." }` and is not charged.

### Tips

- **Some hosts block the search engine's image fetcher.** Images on Wikimedia Commons, Pexels and some news CDNs often come back as `imageExpired` (free). Upload a copy of the picture to another host and search that link instead.
- Short links and links that redirect to the real file are followed first, and the final image address is searched.
- Use the largest version of the image you have; tiny thumbnails find fewer matches.
- A run handles about 25 images a minute, so roughly 1,500 images fit in the default 1-hour timeout. Raise the run timeout for bigger lists.
- Page titles and snippets are in the language of each site, so expect a mix of languages.
- Monitor mode remembers pages in a key-value store in your account (name set in the input). Use a different name per project.

### FAQ

#### Is it a Google Lens alternative?

It answers the same question, "where else is this picture?", but uses a different engine. Yandex tends to find more exact copies of a photo on smaller sites, so the two often complement each other.

#### Can I upload a file instead of a URL?

Not yet. The image must be reachable at a public URL. Put files in an Apify key-value store or any public host and pass the link.

#### Why did an image return no pages?

Either the engine could not download it (`imageExpired`, see Tips) or no copies are indexed (`noResults`). Neither is charged.

#### Does monitor mode charge for runs with no new pages?

Yes, each image searched is one charge, because the search still runs. Runs with failed images stay free.

### Disclaimer

The actor collects publicly available search results. You are responsible for how you use them, including copyright and privacy rules in your country.

### More tools from Tenfold Fleet

| Actor | Output |
|---|---|
| [ALDI Australia Scraper - AU Products, Unit Prices & Catalogue](https://apify.com/tenfoldfleet/aldi-australia-scraper) | product |
| [Alibaba Image Search - Reverse Lookup of Suppliers by Photo](https://apify.com/tenfoldfleet/alibaba-image-search) | matched product |
| [Alibaba Products Scraper: Wholesale Suppliers, MOQ, Price Tiers](https://apify.com/tenfoldfleet/alibaba-products-scraper) | product |
| [AliExpress Reviews Scraper: Product Feedback & Photos Monitor](https://apify.com/tenfoldfleet/aliexpress-reviews-scraper) | review |
| [AliExpress Keyword Scraper - Exact Sold Counts by Search Term](https://apify.com/tenfoldfleet/aliexpress-search-scraper) | product |
| [Amazon Bestsellers Tracker: New Releases & Rank Changes](https://apify.com/tenfoldfleet/amazon-bestsellers-tracker) | ranked product |
| [Amazon Product Scraper - Details, Prices & Search by ASIN](https://apify.com/tenfoldfleet/amazon-product-scraper) | product |
| [Applicant Tracking Jobs Scraper - Greenhouse, Lever & 6 More](https://apify.com/tenfoldfleet/ats-jobs-scraper) | job posting |
| [Audio Transcription: MP3 & Video Files to Text, SRT, VTT](https://apify.com/tenfoldfleet/audio-transcription) | audio minute transcribed |
| [Backlinks Checker - Referring Domains, Anchors & Domain Rank](https://apify.com/tenfoldfleet/backlinks-checker) | backlink |
| [BBB Scraper: Business Leads, Ratings & New Reviews](https://apify.com/tenfoldfleet/bbb-scraper-leads-reviews) | business |
| [Bilibili Scraper - Videos, Comments, Danmaku & Search](https://apify.com/tenfoldfleet/bilibili-scraper) | video or comment |
| [Businesses Without Websites - Local Leads with Phone & Rating](https://apify.com/tenfoldfleet/businesses-without-websites) | lead |
| [Coles Product Scraper - Australian Supermarket Prices & Deals](https://apify.com/tenfoldfleet/coles-product-scraper) | product |
| [Contact Details Scraper - One Lead Record per Company Website](https://apify.com/tenfoldfleet/company-contact-finder) | website with contacts |
| [Contact Form Finder: Form Fields, Embed Type & Captcha Flag](https://apify.com/tenfoldfleet/contact-form-finder) | website with contact page or form |
| [CutShort Jobs Scraper - Startup Roles with INR Salary Ranges](https://apify.com/tenfoldfleet/cutshort-jobs-scraper) | job listing |
| [Facebook Ads Library Scraper for Marketers](https://apify.com/tenfoldfleet/facebook-ads-library-scraper) | ad |
| [Facebook Page Contact Finder - Business Leads from Page Links](https://apify.com/tenfoldfleet/facebook-page-contact-finder) | page with contact details |
| [Facebook Reels Scraper: Views & Captions Monitor for Any Page](https://apify.com/tenfoldfleet/facebook-reels-scraper) | reel |
| [Foundit Jobs Monitor: India, Singapore & Malaysia Jobs Scraper](https://apify.com/tenfoldfleet/foundit-jobs-monitor) | job listing |
| [Funding Rounds Scraper - Recently Funded Companies & Investors](https://apify.com/tenfoldfleet/funding-rounds-scraper) | funding round |
| [Google Ads Transparency Center Scraper - Competitor Ads by Site](https://apify.com/tenfoldfleet/google-ads-transparency-scraper) | ad |
| [Google AI Overviews Checker - Citations & Domain Tracker](https://apify.com/tenfoldfleet/google-ai-overviews-checker) | keyword checked |
| [Google Flights Scraper - All Fares per Route & Date (API)](https://apify.com/tenfoldfleet/google-flights-scraper) | route search |
| [Google Hotels Scraper - Nightly Prices, Stars & Booking Sites](https://apify.com/tenfoldfleet/google-hotels-scraper) | hotel |
| [Google for Jobs Scraper - Openings by City, Pay & Job Board](https://apify.com/tenfoldfleet/google-jobs-scraper) | job listing |
| [Google Keyword Planner Alternative - Ideas, Bids & Volume](https://apify.com/tenfoldfleet/google-keyword-planner) | keyword idea |
| [Google Maps Extractor - Business Leads, Phones & Websites](https://apify.com/tenfoldfleet/google-maps-extractor) | place |
| [Google News Scraper - Articles, Real URLs & Full Text](https://apify.com/tenfoldfleet/google-news-scraper) | article |
| [Google Travel Hotel Rate Tracker - OTA Prices for Every Night](https://apify.com/tenfoldfleet/google-travel-hotel-rate-tracker) | offer |
| [Search Trends by Region & Time - Google Trends Data Scraper](https://apify.com/tenfoldfleet/google-trends-scraper) | keyword |
| [Hirist Jobs Scraper: India Tech Jobs with New-Job Monitor](https://apify.com/tenfoldfleet/hirist-jobs-scraper) | job listing |
| [IIMJobs Jobs Scraper: Search & Monitor Management Roles](https://apify.com/tenfoldfleet/iimjobs-jobs-scraper) | job listing |
| [India Jobs Feed: Hirist, IIMJobs, Foundit, Instahyre & Cutshort](https://apify.com/tenfoldfleet/india-jobs-feed) | job listing |
| [Instagram Reels Analytics - Profile Reel Plays, Likes, Comments](https://apify.com/tenfoldfleet/instagram-reels-analytics) | reel |
| [Instagram Reels Search - Keyword to Top Reels, Plays & Creators](https://apify.com/tenfoldfleet/instagram-reels-search) | reel |
| [Instagram Reels Transcript - Speech to Text for Public Reels](https://apify.com/tenfoldfleet/instagram-reels-transcript) | reel transcript |
| [Instahyre Jobs Monitor: New Tech Jobs in India by Skill](https://apify.com/tenfoldfleet/instahyre-jobs-monitor) | job listing |
| [Keyword Ideas & Related Keywords - Difficulty, Volume & CPC](https://apify.com/tenfoldfleet/keyword-ideas) | keyword idea |
| [Keyword Search Volume, CPC & Difficulty Checker (Bulk)](https://apify.com/tenfoldfleet/keyword-search-volume) | keyword with data |
| [Likee Scraper - Creators by Country, Video Views & Likes](https://apify.com/tenfoldfleet/likee-scraper) | video |
| [LinkedIn Ads Library Scraper - Competitor Ad Copy & Targeting](https://apify.com/tenfoldfleet/linkedin-ad-library-scraper) | ad |
| [LinkedIn Company Posts Monitor: New Posts, No Login](https://apify.com/tenfoldfleet/linkedin-company-posts-monitor) | post |
| [LinkedIn Company Scraper: Firmographics & Recent Posts](https://apify.com/tenfoldfleet/linkedin-company-scraper) | company |
| [Naver Shopping Scraper - Keyword Rank, Prices, Ads & Malls](https://apify.com/tenfoldfleet/naver-shopping-scraper) | product |
| [Pinterest Search Scraper: Pins, Promoted Ads & Shop Trends](https://apify.com/tenfoldfleet/pinterest-search-scraper) | pin |
| [Podcast Transcription: Episodes to Text, SRT & Monitor](https://apify.com/tenfoldfleet/podcast-transcription) | audio minute transcribed |
| [Reddit Brand Monitoring - Keyword Alerts for Posts & Comments](https://apify.com/tenfoldfleet/reddit-brand-monitoring) | mention |
| [Reddit Post Comments Export: Threads to JSON & CSV](https://apify.com/tenfoldfleet/reddit-post-comments-export) | comment |
| [Remote Job Board Scraper - Remote Jobs Aggregator, 7 Sites](https://apify.com/tenfoldfleet/remote-jobs-aggregator) | unique remote job |
| [SEEK Jobs Scraper - Salaries & Hiring Across 8 APAC Job Boards](https://apify.com/tenfoldfleet/seek-job-scraper) | job listing |
| [Semrush API Domain Traffic: Visits, Authority Score, AI Traffic](https://apify.com/tenfoldfleet/semrush-api-domain-traffic) | domain |
| [SEO Agent - AI Keyword Research & Competitor Reports](https://apify.com/tenfoldfleet/seo-agent) | research report |
| [SEO Crawler - Technical SEO Audit Tool & On-Page Checker](https://apify.com/tenfoldfleet/seo-audit-tool) | page audit |
| [SEO Competitor Keywords - Domain Ranked Keywords & Keyword Gap](https://apify.com/tenfoldfleet/seo-competitor-keywords) | keyword |
| [Shopify Inventory Scraper - SKUs, Variants & In-Stock Status](https://apify.com/tenfoldfleet/shopify-products-scraper) | product |
| [Shopify App & Theme Detector - Store Analyzer & Contacts](https://apify.com/tenfoldfleet/shopify-store-analyzer) | shopify store |
| [Sitemap URL Extractor - All URLs from sitemap.xml & robots.txt](https://apify.com/tenfoldfleet/sitemap-url-extractor) | url |
| [Stock Photos & Videos Scraper for Pexels](https://apify.com/tenfoldfleet/stock-photos-scraper) | media item |
| [Website Built With Checker - Find Any Site's CMS & Tech Stack](https://apify.com/tenfoldfleet/tech-stack-detector) | website |
| [Telegram Keyword Search Monitor - New Mentions in Channels](https://apify.com/tenfoldfleet/telegram-keyword-search-monitor) | matching message |
| [Threads Search - Keyword & Profile Posts Scraper (No Login)](https://apify.com/tenfoldfleet/threads-search) | post |
| [TikTok Ads Library Scraper: Competitor Ads in Europe](https://apify.com/tenfoldfleet/tiktok-ads-library-scraper) | ad |
| [TikTok Transcripts - Captions or Speech to Text for Any Video](https://apify.com/tenfoldfleet/tiktok-transcripts) | video transcript |
| [HTML to Text & URL to Markdown - LLM Ready Web Content](https://apify.com/tenfoldfleet/url-to-markdown) | page |
| [Website Traffic Checker - Bulk Domain Traffic Estimate](https://apify.com/tenfoldfleet/website-traffic-checker) | domain with traffic data |
| [WeChat Official Account Articles - Keyword Search to Markdown](https://apify.com/tenfoldfleet/wechat-official-account-articles) | article found |
| [Weibo Scraper - Comment Threads, Hot Search Ranks & User Stats](https://apify.com/tenfoldfleet/weibo-scraper) | comment |
| [Woolworths Product Scraper - AU Shelf Prices, Specials & GTINs](https://apify.com/tenfoldfleet/woolworths-product-scraper) | product |
| [Workday Jobs Scraper - myworkdayjobs.com API with Salary](https://apify.com/tenfoldfleet/workday-jobs-scraper) | job posting |
| [Yahoo Finance Scraper - Quotes, History, Fundamentals & News](https://apify.com/tenfoldfleet/yahoo-finance-scraper) | ticker row |
| [YouTube Channel Email Scraper - Creator Contact Extractor](https://apify.com/tenfoldfleet/youtube-channel-email-scraper) | channel with email |
| [YouTube Livestream & Channel Scraper - Videos, Likes & Stats](https://apify.com/tenfoldfleet/youtube-channel-scraper) | video |
| [YouTube Comments Scraper - Replies, Likes & Sort by Newest](https://apify.com/tenfoldfleet/youtube-comments-scraper) | comment |
| [YouTube Search Scraper: Keyword Video & Shorts Monitor](https://apify.com/tenfoldfleet/youtube-search-scraper) | search result |
| [YouTube Shorts Analytics Scraper - Views, Likes & Hashtags](https://apify.com/tenfoldfleet/youtube-shorts-scraper) | short |
| [YouTube Captions Downloader - Transcript & Subtitles Scraper](https://apify.com/tenfoldfleet/youtube-transcript-scraper) | transcript |

# Actor input Schema

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

Direct links to public images (JPG, PNG, WebP or GIF), not web pages. One image = one result row with every page found. Some hosts (often Wikimedia Commons and Pexels) block the search engine's image fetcher; those images come back as a free 'imageExpired' error. On the Apify free plan, keep runs to a few hundred images a month ($5 of credit covers about 800 searches).

## `maxPagesPerImage` (type: `integer`):

Keep only the first N pages for each image. 0 = keep every page found (often 100-400). The price per image is the same either way.

## `monitor` (type: `boolean`):

Remember the pages found for each image and, on later runs, return only pages that were not there before (newPageCount tells you how many). Schedule the actor daily or weekly to get alerts when your photo shows up somewhere new. Each image searched is still charged once.

## `monitorStoreName` (type: `string`):

Name of the key-value store in your account that remembers pages already seen. Use a different name per project to keep separate histories.

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

Apify Proxy (datacenter) is used by default and spreads requests over many IPs. Residential groups are not supported and fall back to datacenter.

## Actor input object example

```json
{
  "imageUrls": [
    "https://images.unsplash.com/photo-1506744038136-46273834b3fb?w=800",
    "https://avatars.githubusercontent.com/u/9919?s=400"
  ],
  "maxPagesPerImage": 0,
  "monitor": false,
  "monitorStoreName": "reverse-image-search-monitor",
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `results` (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",
        "https://avatars.githubusercontent.com/u/9919?s=400"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("tenfoldfleet/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://images.unsplash.com/photo-1506744038136-46273834b3fb?w=800",
        "https://avatars.githubusercontent.com/u/9919?s=400",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("tenfoldfleet/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://images.unsplash.com/photo-1506744038136-46273834b3fb?w=800",
    "https://avatars.githubusercontent.com/u/9919?s=400"
  ]
}' |
apify call tenfoldfleet/reverse-image-search --silent --output-dataset

```

## MCP server setup

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