Google Image Search Scraper & API Alternative
Pricing
from $1.50 / 1,000 unique image scrapeds
Google Image Search Scraper & API Alternative
Scrape images from Google Images by keyword. Extract direct image URLs, alt text, and source links, up to 30k results per query. A fast Google image search API alternative for JSON, CSV, or Python.
Pricing
from $1.50 / 1,000 unique image scrapeds
Rating
0.0
(0)
Developer
Thodor
Actor stats
0
Bookmarked
12
Total users
2
Monthly active users
5 days ago
Last modified
Categories
Share
Google Image Scraper & Search API
Scrape images from Google Images by keyword. Extract up to 30,000 full-size image URLs per query with this Google image search scraper, including source pages, alt text, and dimensions. A Google image search API alternative, no API key required.
Why use this Google image scraper
Most Google image scrapers return only the first 100 results and give you thumbnail URLs from encrypted-tbn0.gstatic.com instead of the actual images. This actor solves both problems. It follows Google's "related images" graph for every result, expanding a single keyword into up to 30,000 unique full-size image URLs, and resolves every URL back to the source webpage so you get the real image file, the page it came from, and the alt text.
Common use cases:
- Building image datasets for machine learning and computer vision training
- E-commerce product image research and competitor monitoring
- SEO and brand monitoring: tracking how your product images rank in Google Images across different countries
- Stock photo and creative reference collection
- Reverse image search source discovery
Google Image Search API alternative (no API key)
Google discontinued its official Image Search API in 2011. Since then, developers have relied on third-party APIs like SerpApi, Zenserp, and ScrapingBee, all of which require an API key, charge per request, and typically cap out around 100 results per query.
This actor is a Google Image Search API alternative that works differently:
- No API key to manage: authenticate with your Apify token, same as any other actor
- Pay per result, not per request: you only pay for unique results you actually receive
- Up to 30,000 results per query: by following Google's related-images graph instead of stopping at the first results page
- Full-size source URLs: resolved back to the origin webpage, not gstatic thumbnails
Features
- Full-size image URLs, not
encrypted-tbn0.gstatic.comthumbnails - Related images Automatically opens the related images page for every found image, massively expanding your results (up to 30,000 in my testing)
- Structured output Clean JSON with image URL, source page, title, and relationships
- Pay only for unique results: duplicates and nulls don't count, you only get charged for images with a resolved full-size URL
How to scrape Google Images by keyword
- Enter your search keyword in the
search_queryfield - Set
max_resultsto how many images you need (up to 30,000) - Enable
get_related_imagesto follow the related-images graph for maximum volume - Optionally set
countryandlanguagefor geo-targeted results - Run the actor and export results from the dataset
Two modes: fast or deep
With get_related_images disabled, the actor returns the first page of Google Images results, the same ~450 images you would see if you typed the keyword into Google Images yourself. This is fast, around 30 seconds, and ideal when you just need a representative sample.
With get_related_images enabled, the actor clicks into each of those initial images to open Google's "related images" panel (the visually similar images you see when you click a result), and resolves every one of those back to its full-size source URL. This is how it expands a single keyword into up to 30,000 unique images, but resolving that many URLs takes time, expect 45-50 minutes for a full 30k run. Enable it when volume and dataset diversity matter more than turnaround.
Input
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
search_query | string | Yes | Search term for Google Images | |
max_results | integer | No | 200 | Maximum total images to collect |
get_related_images | boolean | No | false | Follow visually similar image links to expand results (up to 30k) |
country | string | No | US | Country for search results and proxy geolocation (ISO 3166-1 alpha-2 code) |
language | string | No | en | Language for search results (ISO 639-1 code) |
Example input
{"search_query": "cat","max_results": 500,"get_related_images": true,"country": "US","language": "en"}
Use with Python
Call the actor from Python using the Apify SDK:
from apify_client import ApifyClientclient = ApifyClient("YOUR_API_TOKEN")run = client.actor("thodor/google-images-up-to-30k").call(run_input={"search_query": "cat","max_results": 500,"get_related_images": True,"country": "US","language": "en",})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["image_url"])
Run times
Actual run times using the keyword "cat". Your times may vary depending on the query and number of available results.
| Mode | Images | Time |
|---|---|---|
| Without related images | 438 | 0m 32s |
| With related images | 29,870 | 48m 33s |
Without related images, expect ~450 results in about 30 seconds. With related images enabled, expect up to 30,000 results in roughly 45-50 minutes. It's a trade-off between depth and speed, enable related images when volume matters more than turnaround.
Output
Each result contains:
| Field | Description |
|---|---|
image_url | Full-size image URL (the actual image, not thumbnail) |
thumbnail_url | Google's thumbnail URL |
width | Image width in pixels |
height | Image height in pixels |
page_url | URL of the webpage containing the image |
title | Image title/alt text |
related_link | Google link to visually similar images |
search_query | The search term used |
depth_level | 0 = main results, 1 = from related images |
Example output
[{"image_url": "https://upload.wikimedia.org/wikipedia/commons/thumb/example.jpg","thumbnail_url": "https://encrypted-tbn0.gstatic.com/images?q=tbn:...","width": 1920,"height": 1080,"page_url": "https://en.wikipedia.org/wiki/Example","title": "Example cat photo","related_link": "https://www.google.com/search?tbs=rimg:...","search_query": "cat","depth_level": 0},{"image_url": "https://example.com/similar-cat.jpg","thumbnail_url": "https://encrypted-tbn0.gstatic.com/images?q=tbn:...","width": 1600,"height": 900,"page_url": "https://example.com/gallery","title": "Similar cat photo","related_link": "https://www.google.com/search?tbs=rimg:...","search_query": "cat","depth_level": 1}]
FAQ
Is there an official Google Images API?
No. Google discontinued its official Image Search API in 2011. This actor works as a Google Image Search API alternative: you send a keyword, you get structured JSON back with full-size image URLs, source pages, and metadata.
How is this different from SerpApi or Zenserp?
SerpApi and Zenserp return the first ~100 results per query and charge per request. This actor follows the related-images graph to return up to 30,000 unique images from a single query, and charges per result so you only pay for what you get. No API key to manage either.
Can I scrape Google Images by country?
Yes. Set the country parameter (ISO 3166-1 alpha-2) and language parameter (ISO 639-1). The actor routes through a proxy in the target country so results match what a local user would see, which matters for branded queries, e-commerce, and SEO research.
Does it return full-size images or thumbnails?
Full-size original URLs from the source website. The thumbnail URL is included as a separate field if you need it, but the main image_url is always the actual image, not a gstatic.com thumbnail.
Can I export results to CSV or Excel?
Yes. All Apify datasets export to JSON, CSV, Excel, XML, RSS, and HTML from the console, or via the Dataset API.
Can I use this Google image scraper with Python?
Yes. Use the Apify Python SDK (apify-client) to call the actor, pass your input, and iterate the resulting dataset. See the Python example above.
What happens if Google rate-limits my run?
Google may rate-limit requests at very high volumes and abort the request early. The actor will save all results collected up to that point and restart. You only pay for unique results. For maximum reliability, run multiple smaller queries instead of one massive one.
Limitations
- Google may rate-limit requests for very high volumes, aborting the request early
- Platform migrations: If Apify migrates the run to a different server, the actor will stop and save all results collected so far. This actor cannot resume after migration because it relies on browser state that cannot be serialized. It will restart.
Support
Something not working as expected? Message me in the Issues tab and I'll look into it as quickly as possible. I'm a solo dev, so don't hesitate to reach out with any other questions.
- Thodor
P.S. If everything works well, please leave a review! And if it doesn't, you don't know me!


