# Yandex Reverse Image Search - FREE (`dz_omar/yandex-reverse-image-search`) Actor

Find where any image appears online. Search by picture instead of keywords: paste a link or upload a file and get matching pages, visually similar images, other resolutions, text read from the picture, and descriptive tags.

- **URL**: https://apify.com/dz\_omar/yandex-reverse-image-search.md
- **Developed by:** [FlowExtract API](https://apify.com/dz_omar) (community)
- **Categories:** SEO tools, Developer tools
- **Stats:** 2 total users, 2 monthly users, 100.0% runs succeeded, 2 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-usage

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

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

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

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

# README

## Yandex Reverse Image Search

Search the web **by picture instead of by keywords**. Give it an image  paste a link or
upload a file  and get back every page where that image appears online, visually similar
pictures, other resolutions of the same image, any text written inside it, and descriptive
tags.

Yandex is widely regarded as one of the strongest reverse-image engines available,
especially for faces, places, artwork, and content that Western engines miss.

***

### Why this one

| | |
|---|---|
| 📁 **Upload a picture, not just a link** | Most reverse-image tools require a publicly reachable URL. This one takes a file straight from your computer  screenshots, private photos, anything not already published online. |
| 🌍 **Several regional indexes at once** | The Turkish index is largely separate from the international one. Searching both returns roughly **75% more unique matches**, merged into one clean result set. |
| 🧹 **No duplicate spam** | The same picture usually sits on many pages. You get one row per image listing every page carrying it  about **40% fewer rows, nothing lost**. |
| 🔤 **Reads text inside the picture** | Optional. Returns the text and where each word sits. |
| ⚖️ **A fair results limit** | Your limit is shared across the result types you picked, so a small cap still returns a mix of everything instead of filling up with page matches. |

***

### Input

Paste an image link and press **Start**. Everything else has a working default.

```json
{
  "imageUrl": "https://example.com/photo.jpg"
}
```

A fuller run:

```json
{
  "imageUrl": "https://example.com/photo.jpg",
  "searchRegions": ["yandex.com", "yandex.com.tr"],
  "resultTypes": ["matchingPages", "similarImages", "ocrText"],
  "maxResults": 50,
  "deduplicate": true
}
```

| Field | Type | Default | What it does |
|---|---|---|---|
| `imageUrl` | string |  | Link to the picture. Right-click any image in your browser → *Copy image address*. |
| `imageFile` | file |  | Upload a picture instead. JPG, PNG, WebP, GIF, BMP, up to 10 MB. If you fill both, the upload wins. |
| `crop` | string | — | Search only part of the picture: `left;top;right;bottom` as fractions, e.g. `0.25;0.25;0.75;0.75` for the middle. Leave empty for the whole image. |
| `searchRegions` | array | `["yandex.com"]` | Which regional indexes to search. Adding **Turkey** gives the biggest gain. *All regions* searches every one. |
| `resultTypes` | array | pages + similar | Which kinds of results to return. |
| `maxResults` | integer | `50` | Largest number of rows to take **from each region**. With 3 regions and a limit of 11 you get up to 33, before duplicate removal. `0` returns everything found. Within each region's share, rows are split fairly across the selected result types. |
| `deduplicate` | boolean | `true` | Collapse repeats of the same image into one row listing every page carrying it. |

To search a picture from your own computer, use **Or upload an image file** and leave the
link empty.

***

### Output

One row per result, tagged with `resultType` so you can filter.

| `resultType` | What it is | On by default |
|---|---|:---:|
| `matching_page` | A page where this image appears  title, snippet, site, full-size image link | ✅ |
| `similar_image` | A visually similar picture from elsewhere on the web | ✅ |
| `image_size` | The same image at another resolution, grouped small / medium / large | |
| `image_tag` | A short phrase describing what is in the picture | |
| `ocr_text` | Text read out of the image, with per-word positions | |
| `classification` | What kind of picture the engine judges this to be | |
| `barcode` | Barcode or QR content, when the picture contains one | |
| `detected_object` | A region the engine spotted in the picture, with its category and a ready-to-use crop string | |

#### Example row

```json
{
  "resultType": "matching_page",
  "position": 1,
  "title": "Product page  Example Store",
  "snippet": "Available in three colours.",
  "link": "https://example-store.com/product/123",
  "source": "example-store.com",
  "thumbnail": "https://…/thumb.jpg",
  "original": "https://example-store.com/img/product-full.jpg",
  "originalWidth": 850,
  "originalHeight": 565,
  "searchRegions": ["yandex.com", "yandex.com.tr"],
  "pages": ["https://example-store.com/product/123", "https://blog.example.com/review"],
  "duplicateCount": 2,
  "scrapedAt": "2026-09-01T20:14:03Z"
}
```

`pages` and `duplicateCount` are what make duplicate removal additive: you see *more* per
row, not less.

#### Views

Four ready-made dataset views: **All results**, **Pages containing this image**,
**Visually similar images**, and **Text found in the image**  the last two omit columns
those result types never fill.

***

### What people use it for

- **Find where your images are used**  track unauthorised use of product photos, artwork, or brand assets.
- **Brand protection**  surface sites and marketplaces using your imagery.
- **Image provenance and fact-checking**  trace earlier and higher-resolution versions of a picture.
- **Find the original** uncompressed version of a cropped or low-quality image.
- **Build datasets** of visually similar images.
- **Read text out of screenshots** in bulk.

***

### Pricing

**This Actor is currently free to run.** You pay only Apify's normal platform usage for the
run itself  there is no per-result charge.

### Known issues

Being worked on. None of these stop the Actor returning results.

| Issue | Effect on you |
|---|---|
| **No shopping matches** | Matching a picture to purchasable products is not offered. The upstream section exists but has never returned data to us across ~50 attempts, so the option is deliberately absent rather than present-but-empty. |

### Limitations

- Set **Maximum results** to `0` to fetch everything: one image can return **3,000+ matches**
  from a single region. The default of 50 costs one request; larger limits fetch more pages,
  so a very large run takes proportionally longer.
- **Shopping matches, barcodes, and detected objects are empty for most pictures.** They are
  off by default for that reason  turn them on only if your images are likely to contain
  products or codes.
- Russia, Belarus, Kazakhstan, and Uzbekistan overlap almost entirely with the international
  index and add only a handful of extra results. **Turkey is the one that genuinely differs.**
- Very small images (under 1 KB  spacers and tracking pixels) cannot be searched.
- Maximum image size is 10 MB.
- Selecting more regions makes a run take longer. All six still finish in well under a minute.
- Results reflect what the engine has indexed; a brand-new image may not be found anywhere yet.
- If you supply something unusable, the run still finishes successfully and returns a single
  row explaining what to fix  it does not fail.

***

### Support

🌐 Website [flowextractapi.com](https://flowextractapi.com) · 📧 flowextractapi@outlook.com · 💬 GitHub [FlowExtractAPI](https://github.com/FlowExtractAPI) · 💼 LinkedIn [flowextract-api](https://www.linkedin.com/in/flowextract-api/) · 🐦 X [@FlowExtractAPI](https://x.com/FlowExtractAPI) · 📱 Facebook [flowextractapi](https://www.facebook.com/flowextractapi) · 🎵 TikTok [@flowextractapi](https://www.tiktok.com/@flowextractapi)

### Legal & compliance

Public data only · respects source rate limits and terms · no storage of personal
information · suitable for commercial use · No affiliation with or endorsement by Yandex is
implied.

*Yandex Reverse Image Search  by FlowExtract API. Turn any website into structured data.*

# Actor input Schema

## `imageUrl` (type: `string`):

The web address of the image you want to search for. Right-click any picture in your browser and choose 'Copy image address', then paste it here. The link must be publicly reachable — a private or password-protected link will not work. Leave this empty if you are uploading a file below.

## `imageFile` (type: `string`):

Upload a picture from your computer instead of pasting a link. Accepts JPG, PNG, WebP, GIF and BMP, up to about 10 MB. Use this for screenshots, photos, or any image that is not already published online.

## `crop` (type: `string`):

Optional. Search a rectangle inside the picture instead of the whole thing — useful when one object in a busy photo is what you care about. Four numbers between 0 and 1 separated by semicolons: left;top;right;bottom. For example 0.25;0.25;0.75;0.75 searches the middle. Leave empty to search the whole image.

## `searchRegions` (type: `array`):

Which regional Yandex indexes to search. Leave as-is for most uses. Adding Turkey is the single best way to find more results, because it searches a largely different index — expect roughly 75% more unique matches. The Russia, Belarus, Kazakhstan and Uzbekistan indexes overlap almost entirely with the International one, so adding them returns only a handful of extra results. Each extra region makes the run take a little longer. Picking 'All regions' searches every index and overrides the other choices.

## `resultTypes` (type: `array`):

What kind of results you want back. Every result is one row in the dataset, labelled with a 'resultType' column so you can filter them. 'Pages containing this image' and 'Visually similar images' are on by default and cover most needs.

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

The largest number of rows to take from EACH search region, not from the run as a whole. With 3 regions selected and a limit of 11, the run takes up to 11 from each, so up to 33 rows in total. Duplicate removal then runs across regions, so the final count is usually lower — the same picture found in two regions becomes one row. Set to 0 for everything found: a single region can return 3,000+ rows and takes correspondingly longer. Within each region's own limit, the rows are shared fairly between the result types you selected.

## `deduplicate` (type: `boolean`):

On (default): if the same picture is found on several pages, you get one row listing every page that carries it, in a 'pages' column. This removes roughly 40% of rows without losing any information. Off: one row per page, with the same image repeated many times.

## Actor input object example

```json
{
  "imageUrl": "https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png",
  "searchRegions": [
    "yandex.com",
    "yandex.com.tr"
  ],
  "resultTypes": [
    "matchingPages",
    "similarImages"
  ],
  "maxResults": 50,
  "deduplicate": true
}
```

# Actor output Schema

## `allResults` (type: `string`):

Every result row from this run, tagged with resultType.

## `matchingPages` (type: `string`):

Where the image appears online, with each page that carries it.

## `similarImages` (type: `string`):

Lookalike images, showing only the columns this result type fills.

## `textInImage` (type: `string`):

Any writing read out of the picture.

# 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 = {
    "imageUrl": "https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png",
    "searchRegions": [
        "yandex.com",
        "yandex.com.tr"
    ],
    "maxResults": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("dz_omar/yandex-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 = {
    "imageUrl": "https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png",
    "searchRegions": [
        "yandex.com",
        "yandex.com.tr",
    ],
    "maxResults": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("dz_omar/yandex-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 '{
  "imageUrl": "https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png",
  "searchRegions": [
    "yandex.com",
    "yandex.com.tr"
  ],
  "maxResults": 50
}' |
apify call dz_omar/yandex-reverse-image-search --silent --output-dataset

```

## MCP server setup

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