DEV Community

Cover image for Reverse Image Search API: Trace Any Image Across the Web in 2026
Truffle Pig Data
Truffle Pig Data

Posted on

Reverse Image Search API: Trace Any Image Across the Web in 2026

Ask anyone who does image investigations and they will tell you the same quiet truth: Yandex Images is the strongest reverse image engine on the open web, especially for finding re-uses and earlier versions of a picture. The catch is that it only works one image at a time, in a browser. The Yandex Reverse Image Search API on Apify removes the catch: give it an image URL, get everything Yandex knows about that image as structured JSON.

Disclosure: the Apify links in this post are affiliate links. If you run the Actor, I may earn a referral commission at no extra cost to you.

Is there a reverse image search API?

Not from the engines themselves. The reverse image tools people actually rely on are browser interfaces, and Yandex has never shipped a public API for its image engine. Cloud vision products will label an image for you, but "what is in this picture" is a different question from "where does this picture appear online," and the second one is what usage tracking, fact-checking, and brand protection need. So a reverse image search API in practice means a scraper you call like an API: image URL in, typed result rows out.

What the Yandex Reverse Image Search API returns

The Yandex Reverse Image Search API returns typed JSON rows for one image: matching pages, visually similar images, other sizes, product matches, descriptive tags, and an entity card when the subject is recognizable.

result_type What you get Notes
matching_page page title, link, snippet Every page where the image appears
similar_image thumbnail and source link Visually similar content
image_size other resolutions Large, medium, small versions
shopping_result product match with price E-commerce listings that match
image_tag descriptive search terms What Yandex thinks is in the image
knowledge_graph entity card For recognizable people, places, brands

Every row carries the query image reference, the source domain, and a search timestamp, and section toggles control which types a run returns.

Who this is for

Photographers and brands tracking unauthorized use of their images, fact-checkers and OSINT researchers tracing a photo back to its first appearance, and e-commerce teams hunting marketplace listings that look suspiciously like their products.

The manual way, and where it breaks

The manual loop is uploading an image to Yandex, scrolling the sections, and copying links into a sheet, then doing it again for the next 200 product photos. Automating that interface yourself means driving a JavaScript-heavy page through regional domains and parsing several visually distinct result sections. It is exactly the kind of scraper that works on Tuesday and not on Friday. I would rather write the analysis code than babysit the collection code.

The faster way: run the Yandex Reverse Image Search API

Apify Console

  1. Open the Yandex Reverse Image Search API and click Try for free.
  2. Paste a public image_url and pick the result sections you want.
  3. Run it and download the dataset as JSON, CSV, or Excel.

REST

curl -X POST "https://api.apify.com/v2/acts/johnvc~yandex-reverse-image-search/runs?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "image_url": "https://substack-post-media.s3.amazonaws.com/public/images/edbfb2cd-ebcb-4527-bec7-5315c182278f_445x445.png", "max_results": 20 }'
Enter fullscreen mode Exit fullscreen mode

Run endpoint reference: the Apify API docs. The task Reverse image search with Yandex, results as JSON is this call saved and runnable.

Reverse image search in Python

from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")

run = client.actor("johnvc/yandex-reverse-image-search").call(
    run_input={
        "image_url": "https://substack-post-media.s3.amazonaws.com/public/images/edbfb2cd-ebcb-4527-bec7-5315c182278f_445x445.png",
        "include_matching_pages": True,
        "include_similar_images": True,
        "max_results": 50,
    }
)

for row in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(row["result_type"], "|", row.get("source_domain") or row)
Enter fullscreen mode Exit fullscreen mode

Filter on result_type and each section becomes its own dataset: pages for usage tracking, similar images for dataset building, shopping rows for brand protection.

Find where an image appears online

The core move for usage tracking: matching pages with title, link, and context per appearance. The task Find where an image appears online with Yandex runs it in one click.

Trace an image to its original source

For provenance work, other sizes and earlier appearances are the trail. Trace an image to its original source with Yandex is tuned for exactly that fact-checking workflow.

Find visually similar images

Similarity search feeds ML datasets and content curation. Find visually similar images from an image URL returns the lookalikes with thumbnails and source links.

Find products from an image

Turn on shopping matches and the Actor becomes a counterfeit detector: listings that match your product photo, with prices. Find products from an image with Yandex shows it working.

Use it from Claude and other MCP clients

Over MCP, Claude, Claude Code, and Cursor can run reverse image searches as a tool call: paste an image URL into a conversation and ask "where else does this appear online." The task Reverse image search in Claude via MCP has the config, and you can read more about Claude and Claude Code at claude.ai.

FAQ about scraping reverse image results

Is there a free reverse image search scraper?

This one bills per result row, and max_results puts a hard cap on a run before it starts, so a 20-row test run costs very little. New Apify accounts include free platform credit, which covers your first investigations.

Can an AI like Grok or Claude do reverse image search, or do I need a scraper?

Chat AIs can describe an image, but describing is not indexing; they cannot tell you which pages host that exact file. The scraper queries a real reverse-image index, and over MCP an AI can call it, which gets you both halves: retrieval from Yandex, reasoning from the model.

How does the scraper help with source hunting?

Source hunting is working backward from a compressed, cropped copy to the original. The other-sizes rows surface higher-resolution versions, and matching pages show every appearance with context, so you can follow the trail to the earliest, cleanest instance.

Does the scraper work in Claude via MCP?

Yes, and there is a saved task demonstrating it linked above. The Actor shows up as a callable tool once the Apify MCP server is connected.

Can I schedule the scraper to monitor image use?

Yes. Save a task per image set, attach an Apify schedule, and diff the matching-page domains between runs to catch new unauthorized uses early. Start from the Yandex Reverse Image Search API.

What are the limits of this reverse image scraper?

The image must be publicly reachable over http(s), since Yandex fetches it; localhost and private links will not work. Results reflect Yandex's index and can differ across the six regional domains. And its face-matching strength deserves the obvious caveat: use it responsibly and lawfully.

More from Truffle Pig Data

Two related Actors from the same shelf: the Yandex Search Scraper for Yandex's text SERPs, and the Google Images API for keyword-driven image search on the Google side.

Wrapping up

Reverse image search was the last search vertical without an API. The Yandex Reverse Image Search API fixes that with typed JSON rows you can filter, schedule, and build on.

Top comments (0)