Reverse Image Search Monitor: Discover, Verify & Track Matches
Pricing
from $1.87 / 1,000 candidate records
Reverse Image Search Monitor: Discover, Verify & Track Matches
Automatically discovers every site hosting your image via reverse image search, then verifies each candidate with CLIP similarity and perceptual hashing for duplicate and near-duplicate verdicts, not just one score. Monitor mode flags only new copies on repeat scans. From $0.0025 per candidate.
Pricing
from $1.87 / 1,000 candidate records
Rating
0.0
(0)
Developer
GetAScraper
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
🔍 What does Reverse Image Search Monitor do?
Give it one image, a URL or an upload, and it searches the open web for every place that image (or a close visual match) shows up. Every candidate it finds gets verified two independent ways: a visual-similarity score and a structural fingerprint check, so a "duplicate" call is backed by two signals agreeing, not one noisy number. Turn on monitor mode and it remembers what it saw last time, so a later scheduled run only reports genuinely new hosting sites, not everything all over again.
Already have your own list of candidate images to check instead? Skip discovery and score that list directly, with the same two-signal verification.
Run it on demand from the Apify Console, on a schedule for ongoing monitoring, or through the Apify API and integrations like Zapier or Make.
💡 Why use Reverse Image Search Monitor?
Photographers and illustrators can find out who's using their work without permission, not just check the handful of sites they already suspect.
Brands and sellers can catch counterfeit listings and copied product photos before they cost a sale.
E-commerce and catalog teams can dedupe a product catalog against the open web, not just against itself.
Content and marketing teams can confirm an image is actually original before publishing it under their own name.
🧭 How to use Reverse Image Search Monitor
- Click Try for free and open the Input tab.
- Paste a direct image URL or upload the image you want to check.
- Pick a mode: automatic discovery, your own target list, or both.
- Optionally turn on Incremental Monitor Mode and give it a name, then schedule the Actor to run periodically. Later runs will only report new appearances.
- Click Start and review results in the Output tab, or export them as JSON, CSV, or Excel.
⚙️ Input
Configure the run from the Input tab in Apify Console, or pass JSON directly through the API.
| Field | Type | Required | Description |
|---|---|---|---|
sourceImage | string | Yes | Direct image URL or an uploaded image to search for. |
mode | enum | No | discover (default), compareTargets, or both. |
targetImages | array of URLs | No | Explicit candidate image URLs to score, used with compareTargets or both. Up to 20. |
comparisonMode | enum | No | embedding, phash, or both (default). Which verification signals to run. |
similarityThreshold | number | No | Visual-similarity cutoff (0 to 1) for a duplicate verdict. Default 0.85. |
phashThreshold | integer | No | Structural fingerprint distance cutoff (0 to 64) for a duplicate verdict. Default 8. |
proxyConfiguration | object | No | Proxy settings. Defaults to Apify's standard proxy. |
maxCandidates | integer | No | Maximum candidates to discover, download, and score per run. Default 12. |
incrementalMonitorMode | boolean | No | When on, only reports candidates that are new or changed since the last run with this monitor state name. |
monitorStateName | string | No | Name for the saved monitor state. Use a different name per image tracked on its own schedule. |
customId | string | No | Your own identifier, echoed back on every output row. |
📊 Data table
| Field | Type | Description |
|---|---|---|
customId | string | Your own identifier, if you set one. |
candidateUrl | string | The matching image or hosting page URL. |
candidateSite | string | The hosting site's domain, when available. |
discoveryMethod | string | reverseSearch if found automatically, explicitTarget if you supplied it. |
similarityScore | number | Visual-similarity score from 0 to 1, when embedding verification ran. |
phashDistance | number | Structural fingerprint distance, when hash verification ran. |
dhashDistance | number | A second, independent structural fingerprint distance. |
isDuplicate | boolean | True when the verification signals confirm a match. |
isNearDuplicate | boolean | True when one signal suggests a match but it falls short of a confirmed duplicate. |
verdict | string | duplicate, near_duplicate, related, or unverified. |
changeType | string | NEW or UPDATED, only present in monitor mode. |
scrapedAt | string | When this row was produced. |
Example output
{"candidateUrl": "https://example.com/gallery/photo-42.jpg","candidateSite": "example.com","discoveryMethod": "reverseSearch","similarityScore": 0.94,"phashDistance": 3,"dhashDistance": 2,"isDuplicate": true,"isNearDuplicate": false,"verdict": "duplicate","scrapedAt": "2026-09-11T09:00:00.000Z"}
You can download results as JSON, CSV, Excel, or HTML from the Output tab, or pull them through the API.
💰 Pricing
This Actor is pay per event. You only pay for what it actually finds and scores, and an empty run costs nothing. There are no subscriptions or minimum monthly fees.
⭐ Enjoying Reverse Image Search Monitor?
| ⭐ ⭐ ⭐ ⭐ ⭐ If it caught a match you would have otherwise missed, that's worth a rating. It helps other photographers, sellers, and content teams find it too. |
| ★ Rate this Actor on Apify |
❓ FAQ
Does it need my image to already be indexed anywhere? No. Give it any direct, publicly reachable image URL or upload a file, and it searches from there.
What if I already know which images to compare against?
Set mode to compareTargets and list them directly. You get the same two-signal verification without the discovery step.
How does monitor mode decide what's "new"? It remembers what it found under a given monitor state name and only reports candidates that are genuinely new or changed the next time that same state name runs.
Why do I sometimes see "near duplicate" instead of "duplicate"? That means one verification signal found a strong match but the other did not agree. It is still worth a look, just flagged with the right amount of confidence instead of an overconfident guess.
🔗 Other actors
- Mercari Japan Scraper: メルカリ listings, prices and changes ↗ - Scrape live listings and sold comps from Mercari Japan.
- Wildberries Product Scraper: Поиск товаров Вайлдберриз ↗ - Pull product, pricing, and seller data from Wildberries.
- Google Maps List Scraper: Curated Places & Leads ↗ - Extract places from any Google Maps list or search.
- Betano Odds Scraper: Full Match Odds & Price-Move Monitor ↗ - Pull upcoming fixtures and market odds from Betano.
- Indeed Flex Shift Monitor: Pay Rates & Shift Alerts ↗ - Track shift listings and pay rates on Indeed Flex.