Google Image Search API for Google Images and Google Lens Results as JSON
Google has no standalone image search API, and the Custom Search route ends on January 1, 2027. Send a Google Images or Google Lens URL to WebScrap and get the live results page back as JSON: thumbnail, image URL, title, source page and size. A flat 0.33 to 0.98 USD per 1,000 results pages, no search engine ID to set up.
- Status
- ...
- Elapsed
- ... ms
- Exit country
- ...
- Browser used
- ...
This console sends a real request and shows you the real response. Five live fetches per session, and the sample targets run as often as you like.
Why there is no official Google Images API you can sign up for
Google shut its original Image Search API in 2011. What replaced it was the Custom Search JSON API with searchType=image, which returns 10 images per call, never more than 100 per query, and is closed to new customers until it switches off on January 1, 2027. If you need Google Images results in your own product, you read the live results page through a SERP API.
That matters to more teams than you would expect. Ecommerce catalog teams look up how a product appears in Google Images before a launch. Brand protection firms search a logo or a product name and flag unauthorized sellers. Stock and licensing businesses check where their pictures show up. Dataset builders collect image URLs with the page context around them.
All of them used to have an official, if limited, option. The people signing up today do not, and the ones on Custom Search have a deadline. Google's own suggestion, Vertex AI Search, searches the sites you configure, which is useful for a site search box and no help at all when you need to know what Google Images shows for a query.
Google image search API options compared
Prices are the published entry rates, checked in September 2026. A Custom Search call returns 10 images; every other row returns a full results page.
| Option | Cost per 1,000 calls | Best for | Where it falls short |
|---|---|---|---|
| Custom Search JSON API | 5 USD after 100 free a day | Existing customers with a small, steady volume | Closed to new customers, ends January 1, 2027, 10 images per call, 10,000 calls a day cap |
| Cloud Vision Web Detection | 3.50 USD after 1,000 free a month | Finding pages and near duplicates for an image you already have | Starts from an image, not a keyword, and does not return the Google Images results page |
| SerpApi | 25 USD on the 25 USD plan, 10 USD on the 150 USD plan | A fixed Google Images schema with many search engines on one account | Priced per search in bundles, so volume gets expensive quickly |
| Oxylabs | 1.00 USD for Google results on the 49 USD plan | Teams already buying Oxylabs proxies who want one vendor | Rates differ by target and add up across plans. We do the arithmetic in our Oxylabs pricing breakdown |
| WebScrap | 0.98 USD on Starter, 0.60 on Growth, 0.33 on Scale | Google Images, Lens and any other public page on one key at a flat rate | You name the fields instead of getting a fixed images schema |
To be fair to Oxylabs: at 1.00 USD per 1,000 Google results it is level with our Starter plan, and it wins if you already run their proxies. Where we pull ahead is the paid-yearly price. Starter billed yearly works out at 24 USD a month, which is 0.48 USD per 1,000 pages, and Scale billed yearly comes to about 0.17.
Moving from Custom Search image parameters to a Google Images URL
Custom Search took your filters as named parameters. Google Images takes the same ideas in its own URL, mostly inside tbs. Build the URL, POST it to /v1/scrape with rendering on, and list the fields you want, as shown on the API docs page.
| Custom Search JSON API | Google Images URL | Notes |
|---|---|---|
searchType=image | udm=2 | Opens the Images tab for the query |
q, gl, hl | q, gl, hl | Same names. Set the request country too, so the search really comes from there |
imgSize=large | tbs=isz:l | Google's own Size filter under Tools |
imgColorType=gray | tbs=ic:gray | Black and white. Combine filters with commas inside tbs |
imgType=photo or clipart | tbs=itp:photo, itp:clipart | Type filter |
rights=cc_publicdomain and others | tbs=il:cl | Creative Commons licenses. Google Images groups them, it does not split them the way Custom Search did |
num and start | Next results page | No 10 image cap. One rendered page holds several dozen images, each page is one request |
items[].link, image.contextLink | Fields you name | Ask for image URL, thumbnail, title, source domain, source page, width and height |
If your code only used Custom Search for web results, not images, the Custom Search API alternative page covers that migration and its deadline in detail.
Google Lens API and reverse image search from a URL
There is no public Google Lens API. Lens does accept an image by address through its upload by URL link, so a reverse image search is one request: point Lens at a public image and read the visual matches and the pages that contain it.
This is the query brand protection and marketplace teams actually run. Take the hero photo of a product, ask Lens where else it appears, and list the domains that are not your authorized resellers. Run it weekly across a catalog and you have an unauthorized seller report without anyone searching by hand.
Two limits to plan around. The image must sit on a public URL, since a request cannot upload a file from your disk. And Lens results shift with location, so fix the country on every call if you compare runs over time. For reverse search on images you already host in Google Cloud, Web Detection in Cloud Vision is the official alternative at 3.50 USD per 1,000 images.
How to get Google Images results as JSON in four steps
01
Build the URL
google.com/search with your q, udm=2 for Images, gl and hl for market and language, and any tbs filters. For Lens, use the upload by URL link with your image address.
02
Turn rendering on
Google Images builds its grid with JavaScript. Set render to true and the country you want, and the page comes back the way a searcher there sees it.
03
Name your fields
Position, thumbnail, image URL, title, source domain, source page, width, height. You get typed JSON in the shape you described, ready for your database.
04
Schedule it
Growth and Scale run saved jobs on a schedule and post results to your webhook, so a weekly logo or product check needs no cron server of your own.
Who buys a Google Images API and what they run on it
Brand protection
Search a logo, product name or product photo and list every domain showing it. Unknown sellers and knockoff listings surface in the source column.
Ecommerce catalogs
Check which of your product images rank in Google Images for your category terms and which competitor pictures sit above them. Pair it with the Amazon scraper API for listing data.
Photo licensing
Stock libraries and photographers run their portfolio through Lens to find pages using their work, then check those against their license records.
SEO and AI teams
Track image pack positions next to web rankings with the rank tracking API, or collect image URLs with their page context for a dataset.
What an image monitoring job costs per month
One results page per query per run, monthly billing, 30 day months. A Custom Search equivalent would need several calls per query to cover the same number of images, which the table leaves out to stay conservative.
| Job | Requests per month | WebScrap plan | Custom Search at 5 USD per 1,000 |
|---|---|---|---|
| 500 products checked daily in Lens | 15,000 | 49 USD, Starter | 75 USD, if you still have access |
| 2,000 brand terms checked daily | 60,000 | 149 USD, Growth | 300 USD |
| 10,000 catalog terms, two pages, weekly | about 87,000 | 149 USD, Growth | only if spread over two days, the cap is 10,000 calls a day |
| 30,000 terms checked daily | 900,000 | 499 USD, Scale | not possible, 10,000 a day cap |
Three mistakes that break an image search integration
Fetching without rendering. A plain HTTP request to Google Images returns a shell with few or no image results. The grid is assembled in the browser. Turn rendering on, or your parser will report an empty page as zero results.
Storing thumbnails as if they were the image. The small encrypted thumbnails Google serves are Google's copies. Keep the original image URL and the source page as your record, and treat the thumbnail as a preview only.
Querying from one server address. Image searches in volume from a single address get challenged fast, then return pages that look normal and hold nothing. A managed API rotates the exit address through a proxy pool and treats an empty page as a failed fetch, which is never billed.
Google Image Search API questions
Does Google have an image search API?
Not a standalone one. Google retired its original Image Search API in 2011. The only official route left is the Custom Search JSON API with searchType=image, which is closed to new customers and shuts down on January 1, 2027. Everything else on the market reads the live Google Images page.
Is the Google Image Search API free?
The Custom Search JSON API gives existing customers 100 queries a day free, then 5 USD per 1,000 queries up to 10,000 a day, and it only returns 10 images per call. New accounts cannot sign up. On WebScrap one Google Images results page costs 0.98 USD per 1,000 on Starter, 0.60 on Growth and 0.33 on Scale.
Is there a Google Lens API?
No public one. Google Lens has no official developer API. The closest official product is Web Detection in the Cloud Vision API, at 3.50 USD per 1,000 images after the first 1,000 a month, which returns matching pages and similar images from Google's index rather than the Lens results page.
How do I get Google Images results as JSON?
Send a Google Images URL such as google.com/search?q=your+query&udm=2&gl=us to the WebScrap scrape endpoint with JavaScript rendering on, and list the fields you want: position, thumbnail, image URL, title, source domain, source page and dimensions. You get the rendered results page back as typed JSON.
Can I do a reverse image search through an API?
Yes. Google Lens accepts a public image address through its upload by URL link, and WebScrap can fetch that results page and return visual matches and pages that contain the image as JSON. The image has to be reachable on a public URL, because the request cannot upload a file from your disk.
How many images do I get per request?
One request returns one rendered Google Images results page, which is typically several dozen images rather than the 10 the Custom Search API caps you at. The exact count varies by query. If you need more, request the next page, and each page is billed as one successful request.
Can I filter Google Images by size, color or usage rights?
Yes. Google Images keeps its filters in the tbs parameter of the URL, for example isz:l for large images, ic:gray for black and white, itp:photo for photos and il:cl for Creative Commons licenses. Put the same values in the URL you send and the results come back filtered.
What is the best Google Image Search API?
It depends on volume and schema. SerpApi gives a ready made images schema at about 10 to 25 USD per 1,000 searches on entry plans. Oxylabs lists Google results at 1.00 USD per 1,000 on its 49 USD plan. WebScrap is 0.33 to 0.98 USD per 1,000 pages flat, with fields you name yourself.
What should I use instead of Custom Search for images?
Anything that reads the live Google Images page, because the Custom Search JSON API ends on January 1, 2027 and Vertex AI Search only covers sites you choose, not the whole web. Map searchType=image to udm=2 in a Google URL, keep your q and gl values, and move your image filters into tbs.
Is it legal to use Google Images results through an API?
Reading public results pages is an established practice and SERP APIs are a mature product category. The images themselves stay under their owners' copyright, so store URLs and metadata for analysis, check licenses before reusing any picture, and get legal advice before building a product that republishes images.
Get Google Images results into your product
Send a Google Images or Lens URL and the fields you want, get the live results page as JSON. Flat 0.98 USD per 1,000 requests, falling to 0.33 on Scale, failed fetches never billed.