From f0b73e2d6000ccdb29ed6451142c01a36422e847 Mon Sep 17 00:00:00 2001 From: 0xGhostCasper <125361508+0xGhostCasper@users.noreply.github.com> Date: Mon, 5 Oct 2026 11:16:20 +0300 Subject: [PATCH] =?UTF-8?q?docs(lens):=20exact=5Fmatches=20works=20now=20?= =?UTF-8?q?=E2=80=94=20stop=20saying=20NOT=20YET=20SUPPORTED=20(SCR-180)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Shipped in scrape-badger/scrapebadger#2272. exact_matches=true returns just the pages hosting the image, flagged exact_match, instead of the ~58-tile grid. Measured 6-7/10 across a 10-image harness, most on the first attempt; when Google does not expose the set the grid comes back and warnings says the filter was not applied, so the wording promises availability rather than certainty. Hand-edited because generate.sh builds this facade from this repo's main and not from the OpenAPI spec, so the spec-generated SDKs got this for free and these two never do. Co-Authored-By: Claude Opus 5 --- src/scrapebadger/google/lens.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/scrapebadger/google/lens.py b/src/scrapebadger/google/lens.py index d47a3a1..6d2a138 100644 --- a/src/scrapebadger/google/lens.py +++ b/src/scrapebadger/google/lens.py @@ -64,12 +64,13 @@ async def search( visual_matches: Visual matches are the only surface this endpoint serves, so they are always returned. ``False`` is echoed in ``warnings``. - exact_matches: NOT YET SUPPORTED. Accepted for API - compatibility and echoed in ``warnings``. Google renders - its Exact-matches tab client-side and ScrapeBadger cannot - reach it yet, so the response is the full match grid — - it CONTAINS the pages hosting the same image, but Google - does not label which ones those are. + exact_matches: Return just the pages hosting this image, + each flagged ``exact_match``, instead of the broad visual + grid — what a copyright or provenance check needs. Google + exposes this set for most images but not all (6-7 of 10 + in our sampling); when it is unavailable the full grid is + returned and ``warnings`` says the filter was not + applied, so you never have to guess which you got. The response carries a ``warnings`` list naming every parameter that could not be applied. Check it rather than assuming a filter