All scrapers

Search

Google Lens Scraper

lens.google.com

98.4% Success rate
9s Avg response
In-house anti-bot Protection
1,100 calls Measured over

Google Lens only works in a browser: it fetches your image, then loads its matches into the page a few seconds later and keeps every result in internal data blobs. A dedicated plugin endpoint takes a public image URL and returns the visual matches already parsed - for each one the page it is on (title, URL, domain, site name), the matching image with its Google thumbnail and pixel size, and for products the price and currency, the product name and brand, and the rating and review count as the result shows them - plus the entities Lens recognised (for example a landmark, with its Knowledge Graph id) and Google's own description of the image. Shopping matches follow the country the request comes from; no Google account or API key is involved.

What you can extract

  • Every visual match (usually about 60): page title, page URL, domain and site name
  • The matching image URL, a Google thumbnail and the pixel width and height
  • Product price and currency, product name, brand and description, when Google has them
  • Price as shown, rating and review count from the result
  • What Lens recognised in the image, with Knowledge Graph id and a search link
  • Google's own description of the image, when it is ready in time

Dedicated endpoints

/images/google-lens

Google Lens visual matches

Visual matches for a public image URL (url): visualMatches with position, title, url, domain, source, imageUrl, thumbnailUrl, width, height, price, currency, product (name, brand, description), priceText, rating and reviews; relatedSearches (query, kgmid, url); aiOverview (text, markdown, references) or null; plus imageUrl, proxyCountry and resultsCollected. proxy_country picks the market; max_results caps the matches (1-100). An image URL that is gone or is a web page answers 400; no matches answers 502 and is not billed.

How to scrape it

curl -X POST \
  -H "X-ScrapeUnblocker-Key: $SU_API_KEY" \
  "https://api.scrapeunblocker.com/images/google-lens?url=https%3A%2F%2Fm.media-amazon.com%2Fimages%2FI%2F61QYCC1rbsL._AC_SL1000_.jpg&max_results=20"
import requests

resp = requests.post(
    "https://api.scrapeunblocker.com/images/google-lens",
    headers={"X-ScrapeUnblocker-Key": SU_API_KEY},
    params={"url": "https://m.media-amazon.com/images/I/61QYCC1rbsL._AC_SL1000_.jpg", "max_results": "20"},
)
print(resp.text)
import { ScrapeUnblockerClient } from 'scrapeunblocker';

const su = new ScrapeUnblockerClient({ apiKey: process.env.SU_API_KEY });

const matches = await su.googleLens('https://m.media-amazon.com/images/I/61QYCC1rbsL._AC_SL1000_.jpg', {
  maxResults: 20,
});
console.log(matches);

Requests are POST and take their parameters in the query string. Browser rendering always happens - there is no flag to enable.

Example response

{
  "imageUrl": "https://m.media-amazon.com/images/I/61QYCC1rbsL._AC_SL1000_.jpg",
  "hl": "en",
  "gl": "gb",
  "proxyCountry": "GB",
  "resultsCollected": 10,
  "visualMatches": [
    {
      "title": "Certified Refurbished Echo Dot (3rd generation) | Smart ...",
      "url": "https://www.amazon.co.uk/Certified-Refurbished-generation-speaker-Sandstone/dp/B07P2B6VLL",
      "domain": "amazon.co.uk",
      "source": "Amazon UK",
      "imageUrl": "https://m.media-amazon.com/images/G/02/kindle/dp/2019/090790/8387/p8_mb1_uk_v1._CB452490981_.jpg",
      "thumbnailUrl": "https://encrypted-tbn1.gstatic.com/images?q=tbn:ANd9GcQji1VwScpo19bVckuySAjxnvXCyEeP6bG0wEG3jA9sprfHkOI6",
      "width": 1035,
      "height": 874,
      "price": null,
      "currency": null,
      "product": null,
      "priceText": null,
      "rating": null,
      "reviews": null,
      "position": 1
    },
    {
      "title": "Amazon Echo Dot 3rd Gen (36EBT3) with Clock -White, C - CeX ...",
      "url": "https://uk.webuy.com/product-detail/?id=810014001029C",
      "domain": "uk.webuy.com",
      "source": "CeX",
      "imageUrl": "https://uk.static.webuy.com/product_images/Electronics/Smart%20Assistant/810014001029C_l.jpg",
      "thumbnailUrl": "https://encrypted-tbn2.gstatic.com/images?q=tbn:ANd9GcRnIUrZls_-mxjlf_YN9v5zzw6HiurdKu4rwETbcV3cTHy3uV4R",
      "width": 480,
      "height": 346,
      "price": 38,
      "currency": "GBP",
      "product": {
        "name": "Amazon Echo Dot 3rd Gen (36EBT3) with Clock -White, C",
        "brand": "Amazon",
        "description": "The Amazon Echo Dot 3rd Gen with Clock brings Alexa's smart assistance into your home with an integrated LED display for easy time viewing. This ..."
      },
      "priceText": "£38",
      "rating": null,
      "reviews": null,
      "position": 3
    }
  ],
  "relatedSearches": [],
  "aiOverview": {
    "text": "The image shows an Amazon Echo Dot (3rd Gen) smart speaker displaying a red light ring and a muted microphone indicator when the mic-off button is pre...",
    "markdown": "...",
    "references": []
  }
}

Read the API docs

Frequently asked questions

Is it legal to scrape Google Lens?

Collecting publicly available visual-match results - page URLs, titles, sites and prices - is lawful in many jurisdictions, but the rules depend on your country, the data you collect and how you use it. The images remain the property of their owners. ScrapeUnblocker returns the public results; what you collect and how you use it is your decision.

Can I upload an image file?

Pass a public http(s) URL of the image instead: Google fetches the image itself. An image that is gone (404) or a URL that is a web page rather than an image is rejected with a 400 before any search runs.

How do I scrape Google Lens without getting blocked?

ScrapeUnblocker opens Lens in a real browser on dedicated Google infrastructure, rotates clean exits, solves challenges and waits for the matches to load, then returns them parsed. In our benchmark of 1,100 different images it returned visual matches on 98.4% of calls, in about 9.0s.

Do I get product prices?

For product matches Google shows with a price, yes: price and currency, the product name and brand, plus the price, rating and review count as the result displays them. Prices follow the country the request comes from, so set proxy_country for the market you want.

How much does it cost to scrape Google Lens?

Each image searched is one request: EUR 1.00 per 1,000 on pay as you go, down to about EUR 0.55 per 1,000 at volume. Rejected image URLs, blocks and timeouts are not billed.

Related scrapers

Google Lens and other names and marks of lens.google.com belong to their owner and are used here only to identify the website this API works with. ScrapeUnblocker is an independent service, not affiliated with, endorsed by or sponsored by the owner of lens.google.com.

Start scraping this site today

Free tier included. No credit card required to test it.