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
- Open the Yandex Reverse Image Search API and click Try for free.
- Paste a public
image_urland pick the result sections you want. - 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 }'
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)
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)