Reverse Image Search: Yandex and Bing Image Matches avatar

Reverse Image Search: Yandex and Bing Image Matches

Pricing

from $5.85 / 1,000 matches

Go to Apify Store
Reverse Image Search: Yandex and Bing Image Matches

Reverse Image Search: Yandex and Bing Image Matches

Reverse image search by image URL on Yandex and Bing: one row per match with the page that carries the image, its domain, the matched image and its size, other sizes, similar images and shopping offers with price. Find copies of your photos and products. No login.

Pricing

from $5.85 / 1,000 matches

Rating

0.0

(0)

Developer

The Mine Works

The Mine Works

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

4 days ago

Last modified

Share

400 image matches from Yandex and Bing for 10 photos in 74 seconds

From The Mine Works, makers of Amazon Product Scraper and B2B Leads Finder, with over 140,000 runs across 170+ public actors.

Updated 21 Oct 2026: first release. Yandex and Bing reverse image search by image link, one flat row per match: the page that carries the image, its domain, the matched image file and its pixel size, other sizes, look-alike images and shopping offers with price. Bookmark this Actor on its Store page so it is one click away next time.

Why choose this actor?

  • Where your image is used, as a list you can sort. Each row is one page that carries the picture, with the page title, the page link, the domain and a direct link to the copy on that site with its width and height. In our test on 21 October 2026, Yandex knew of 87 to 447 places for each of 10 stock photos, and Bing of up to 40 pages each.
  • Two engines in one run. Yandex is the strongest engine for exact copies and other sizes of a photo; Bing adds its own pages with this image, visual matches, what it thinks the image shows (engine_label, for example "Nike Free 4.0 Flyknit Bright Crimson") and shopping offers with price, seller and rating. Same columns for both, so you can merge or compare them.
  • Pay per match, nothing for errors. Links that are not images, images an engine cannot load, the summary, info and error rows and anything an engine refuses are never charged. No account, cookies, API key or proxy to set up.

Run it on Apify

Part of The Mine Works Marketing, SEO and reviews family: Facebook Ad Library Scraper, Google Ads Transparency Scraper, Similarweb Scraper, Google News Scraper, Trustpilot Reviews Scraper, Google Trends Scraper.

Try it in one minute

Paste this into the input (JSON view) and press Start. It returns the first 10 matches from Yandex and the first 10 from Bing for one landscape photo:

{
"imageUrls": ["https://images.unsplash.com/photo-1506744038136-46273834b3fb?w=800"],
"engines": ["yandex", "bing"],
"maxResults": 10
}

Put several image links on separate lines to search them all in one run. Each link must open the image itself (a .jpg, .png or .webp address, or a CDN image link), not a web page that shows it.

Apify's free plan includes $5 of credit every month, which covers about 850 matches at this actor's price.

Copy to your AI assistant

themineworks/reverse-image-search on Apify. Reverse image search by image URL on Yandex and Bing, with no login: one flat row per match (a page that carries the image, the same image in another size, a look-alike image or a shopping offer). Call ApifyClient("TOKEN").actor("themineworks/reverse-image-search").call(run_input={"imageUrls": ["https://images.unsplash.com/photo-1506744038136-46273834b3fb?w=800"], "engines": ["yandex", "bing"], "maxResults": 20}), then client.dataset(run["defaultDatasetId"]).list_items().items. Input: imageUrls (list of public image links, up to 1000), engines (any of "yandex", "bing", "google_lens"; default yandex and bing; google_lens is checked once and skipped because Google walls plain requests), matchTypes (any of "exact", "product", "visual", "similar"; default all), maxResults (default 20, 1 to 500, per image per engine). Match rows have no _type field and carry source_image_url, engine, match_type, match_source (pages_with_image, other_sizes, similar_images, visual_matches, shopping_offers, shopping_ads, products), position, position_in_type, page_title, page_description, page_url, domain, thumbnail_url, matched_image_url, matched_image_width, matched_image_height, price, price_currency, price_text, original_price, store, rating, reviews_count, is_sponsored, engine_label, engine_results_url, scraped_at. Each run also writes one row with _type "summary", info rows (_type "info") for engines that were skipped, and error rows (_type "error") for images that could not be searched; none of these is charged. Full spec: GET https://api.apify.com/v2/acts/themineworks~reverse-image-search/builds/default (Bearer TOKEN), which returns inputSchema and readme. Token: https://console.apify.com/account/integrations?fpr=ymnoit&utm_source=apify-readme&utm_medium=referral

Key features

  • Pages with this image. Yandex lists every page it knows that carries the picture, 87 to 447 per image in our test, each with title, text snippet, page link, domain and the copy's own file link and size. Bing adds up to 40 of its own.
  • Other sizes. Yandex's list of the same image hosted elsewhere in other resolutions (match_source: other_sizes), with the direct file link and its width and height. Useful to find the largest or original copy.
  • Look-alike images. Bing's visual matches (match_type: visual) and Yandex's similar images (match_type: similar), for when you want related pictures rather than copies.
  • Shopping offers with price. For product photos Bing shows offers for what it recognised: title, price, price before discount, store and rating. Organic offers have is_sponsored: false; the paid shopping ads Bing puts beside the matches have is_sponsored: true and always come after the real matches.
  • What the engine thinks it is. engine_label carries Bing's name for the image, for example "Yosemite National Park" or "White Smartwatch Mockup", on every Bing row.
  • Clean links. utm_, gclid and msclkid tracking tags are removed from page links; Bing's redirect links are unwrapped to the real address.
  • Stops cleanly. An engine that refuses 4 images in a row is switched off for the rest of the run with a note, instead of filling your dataset with empty rows. The run stops before its time limit and keeps every row. The summary row says what happened per engine.

How to use it

Basic: where is my photo used?

{
"imageUrls": ["https://your-site.com/images/hero-photo.jpg"],
"engines": ["yandex", "bing"],
"matchTypes": ["exact"],
"maxResults": 200
}

Only copies of the image: pages that carry it and the same file in other sizes. Sort on domain to see who uses it, and open page_url to check each use.

Put your product or campaign images in imageUrls, set matchTypes to ["exact"] and save it as a task with a weekly schedule. Compare runs on page_url to see new sites that picked up your images.

Find the original or largest copy

{
"imageUrls": ["https://images.unsplash.com/photo-1542291026-7eec264c27ff?w=800"],
"engines": ["yandex"],
"matchTypes": ["exact"],
"maxResults": 100
}

Sort on matched_image_width to find the highest resolution copy and the site that hosts it.

Price research from a product photo

{
"imageUrls": ["https://images.unsplash.com/photo-1505740420928-5e560c06d30e?w=800"],
"engines": ["bing"],
"matchTypes": ["product"],
"maxResults": 40
}

Shopping offers for what Bing recognised in the photo, with price, original_price, store and rating. Filter is_sponsored to keep only organic offers.

Many images at once

Paste up to 1,000 image links. Images are searched five at a time. In our tests, 10 images with both engines and maxResults 20 took 74 to 115 seconds and returned 400 rows.

Input parameters

ParameterTypeDefaultWhat it does
imageUrlsarray of stringsemptyPublic image links, one per line. Up to 1,000 per run.
enginesarray["yandex", "bing"]yandex, bing.
matchTypesarrayall fourexact, product, visual, similar. Empty means all.
maxResultsinteger20Most rows per image from each engine, 1 to 500. With 2 engines and 20, one image gives up to 40 rows.

Rows for each image and engine come in this order: exact matches, product offers, visual matches, similar images, then sponsored product ads.

What data do you get?

One row per match. Match rows have no _type field; the summary, info and error rows do, so a filter on _type separates them.

FieldWhat it is
source_image_urlThe image you searched
engineyandex or bing
match_typeexact, product, visual or similar
match_sourceThe engine section: pages_with_image, other_sizes, similar_images, visual_matches, shopping_offers, shopping_ads, products
position, position_in_typePlace in this image's results from this engine, overall and within its match type
page_title, page_descriptionTitle of the page and, from Yandex, a text snippet
page_url, domainThe page that carries the image (or the product page), and its host
thumbnail_urlThe engine's preview picture of the match
matched_image_url, matched_image_width, matched_image_heightDirect link to the copy on that site and its size in pixels
price, price_currency, price_text, original_priceProduct matches: price as a number, currency, as shown, and before discount
store, rating, reviews_countProduct matches: seller, rating out of 5, number of reviews
is_sponsoredTrue for Bing's paid shopping ads
engine_labelWhat the engine says the image shows (Bing)
engine_results_urlThe engine's results page for this image, to open in a browser
scraped_atWhen the row was written

Summary row (_type: "summary", never charged): images_requested, images_done, images_not_started, invalid_inputs, matches_delivered, charged_for, per_engine (for each engine: images searched, with matches, without matches, unreadable, failed, matches found and delivered, attempts, captcha pages met, and why it was skipped if it was), per_image (status and rows per engine for each image), http_requests, http_megabytes, ended_on_deadline, stopped_by_max_cost and shortfall_reason when fewer matches came back than asked. The same summary is saved as the OUTPUT record of the run.

Info rows (_type: "info", never charged): one per engine that was skipped for the run, with info_type and message.

Error rows (_type: "error", never charged): one per image and engine that could not be searched, with error_type (invalid_url, image_unreadable, blocked, fetch_error), engine, identifier and reason.

Stable fields for automations

These were present in every match row of our test runs (420 rows from 5 images, then twice 400 rows from 10 images), and their names will not change:

FieldWhat it is
source_image_urlThe key to group rows by image
engineWhich engine
match_typeexact, product, visual or similar
match_sourceEngine section
positionPlace in the results
page_titleTitle
page_urlPage link (Yandex other sizes and similar images have only matched_image_url)
domainHost
is_sponsoredPaid ad or not
engine_results_urlResults page
scraped_atTime

Optional, present only when the engine shows a value: matched_image_url and its size (408 of 420 rows in our first test), thumbnail_url (401 of 420), page_description (Yandex rows), engine_label (Bing rows), and the price fields (product rows only).

Output examples

A Yandex exact match for a sneaker photo (test run, 21 Oct 2026):

{
"source_image_url": "https://images.unsplash.com/photo-1542291026-7eec264c27ff?w=800",
"engine": "yandex",
"match_type": "exact",
"match_source": "pages_with_image",
"position": 1,
"position_in_type": 1,
"page_title": "Tags: Nike",
"page_description": "Nike: Elliott Hill is back - 09/20/2024 at 2:28 p.m.",
"page_url": "https://gettotext.com/tag/nike",
"domain": "gettotext.com",
"thumbnail_url": "https://avatars.mds.yandex.net/i?id=f77384d60c7c987309cdf4d041799c8f5bde7597-7089948-images-thumbs&n=13&w=296&h=180",
"matched_image_url": "https://nvts-gb-ldn-gettotext.gettotext.com/wp-content/uploads/2024/09/Nike-Elliott-Hill-is-back-09202024-at-228-pm.jpg",
"matched_image_width": 1280,
"matched_image_height": 853,
"is_sponsored": false,
"engine_results_url": "https://yandex.com.tr/gorsel/search?rpt=imageview&url=https%3A%2F%2Fimages.unsplash.com%2Fphoto-1542291026-7eec264c27ff%3Fw%3D800"
}

A Bing exact match for the same photo:

{
"engine": "bing",
"match_type": "exact",
"match_source": "pages_with_image",
"page_title": "Remove the background of product by Nandu_vibes | Fiverr",
"page_url": "https://www.fiverr.com/nandu_vibes/removal-of-product-background",
"domain": "fiverr.com",
"matched_image_url": "https://fiverr-res.cloudinary.com/images/t_main1,q_auto,f_auto,q_auto,f_auto/gigs/161596982/original/58182e04a781ac6832bdeefa312dd689f51c9faf/removal-of-product-background.jpg",
"matched_image_width": 680,
"matched_image_height": 454,
"engine_label": "Nike Free 4.0 Flyknit Bright Crimson"
}

A Bing shopping offer for a headphones photo (trimmed):

{
"engine": "bing",
"match_type": "product",
"match_source": "shopping_offers",
"page_title": "Sony - Professional Studio Headphones - Black | Best Buy",
"price": 114.99,
"price_currency": "USD",
"price_text": "$114.99",
"store": "DoorDash",
"rating": 4.7,
"is_sponsored": false,
"engine_label": "Over-Ear Headphones"
}

An error row for an image the engine could not load (nothing charged):

{ "_type": "error", "error_type": "image_unreadable", "engine": "yandex", "identifier": "https://example.com/photo.jpg", "reason": "Yandex could not load this image (the host may block it, or it is not a public image)." }

Pricing

Pay per event: you pay for the matches you receive, plus a flat $0.003 per run, whatever memory you choose.

EventWhen it is chargedFree planBronze (Starter)Silver (Scale)Gold (Business)
match-foundOnce per match row stored in your dataset$5.85 per 1,000$5.85 per 1,000$5.85 per 1,000$5.85 per 1,000
run-startOnce per run, after the first engine answer produced matches$0.003$0.003$0.003$0.003

The price of one match is the price per 1,000 divided by 1,000: $0.00585.

Never charged:

  • links that are not image links (each gets an error row);
  • images an engine could not load or refused (each gets an error row);
  • matches past your maxResults;
  • the summary, info and error rows;
  • a run with no valid input, or one where no engine returned a match: the start fee is charged only once matches are ready to deliver;
  • anything past your "Max cost per run". The actor checks the budget before each batch of rows and stops while the total is still below your limit, so the run ends SUCCEEDED with a partial result and a status message saying so.

Run it on a schedule

  1. Open the actor in Apify Console, set your input and click Save as a new task.
  2. In the task, open Schedules, click Add schedule and pick how often (every day, every Monday at 08:00 and so on).
  3. Compare runs on page_url to see new pages that use your images.
  4. Optional: add an integration (Google Sheets, Slack, a webhook) so each run lands where your team works.

FAQ

What does this actor read?

The public "search by image" results of Yandex and Bing, as anyone sees them without logging in. Each engine fetches your image from its link and returns the pages and images it matched. The actor does not log in, upload files from your computer or solve captchas.

Why is there no Google Lens?

Google answers plain requests for Lens results with a "turn on JavaScript" check page, and sends automated browsers to its "unusual traffic" captcha. This actor does not solve captchas, so when you choose google_lens it checks once at the start of the run, writes one info row with Google's answer, and carries on with the other engines. Nothing is charged for it.

Why did an image return nothing?

Most often the engine could not load the image: the link opens a web page instead of the picture, the image needs a login, or the host blocks outside access (Wikimedia, for example, refuses both engines' fetchers). Each such image gets an image_unreadable error row and is not charged. A new or private image can also simply have no copies online yet.

How many matches can I get per image?

Yandex knew 87 to 447 pages for each of the 10 well known photos in our test, plus up to 18 other sizes and 40 similar images, all from one results page. Bing returns up to 40 pages with the image and up to 40 visual matches, plus shopping offers for product photos. Set maxResults up to 500 per image per engine.

Which engine should I use?

Yandex for exact copies, other sizes and the widest list of pages. Bing for its own list of pages, visual matches, a name for what the image shows and shopping prices. Both together give the widest coverage; overlapping pages appear once per engine.

How long does a run take?

In our tests: 15 to 37 seconds for the one image "Try it" input (20 rows), and 74 to 115 seconds for 10 images with both engines and maxResults 20 (400 rows). The default time limit is 3,600 seconds; the actor stops before it and keeps every row.

Do I need an account, cookies or a proxy?

No. The actor uses Apify Proxy, which is included. Nothing to set up.

Which formats can I download?

JSON, CSV, Excel, XML, RSS and HTML from the run's Storage tab or through the API. The dataset has three ready views: Matches, Products and prices, and Where it appears.

Can I use it from Claude, ChatGPT or Cursor (MCP)?

Yes, through Apify's MCP server. Connector URL: https://mcp.apify.com/?tools=themineworks/reverse-image-search

  • Claude: Settings > Connectors > Add custom connector, paste the URL, sign in with Apify.
  • ChatGPT: turn on developer mode, add an MCP connector with the URL, sign in with Apify.
  • Cursor or VS Code: add it as an HTTP MCP server with that URL.
  • Claude Code: claude mcp add -t http reverse-image-search "https://mcp.apify.com/?tools=themineworks/reverse-image-search"

The actor reads public search results that anyone can see without logging in. You are responsible for how you use the data and the images it points to, including the engines' terms, copyright and data protection law such as GDPR and CCPA. This is general information, not legal advice.

Integrations

  • Google Sheets: send each run's matches to a sheet with Apify's Google Sheets integration; one row per match fits a sheet as is.
  • Make, Zapier and n8n: start a run and read its dataset with the Apify apps and nodes, for example "new sites using our product photos every Monday to Slack".
  • Webhooks: have Apify call your URL when a run succeeds, then fetch the dataset.
  • API and SDKs: run it from Python or JavaScript with the Apify client, or with a plain HTTP call (see "Copy to your AI assistant" above).
  • MCP clients: Claude, ChatGPT, Cursor and VS Code can run it as a tool through the connector URL in the FAQ.

More from The Mine Works

Marketing, SEO and reviews

Social media and video

Leads and business directories

LinkedIn

Real estate

Science, health and government data

Jobs and hiring

Company and business data

E-commerce and marketplaces

Food and local services

Developer and AI tools

More tools