Google Images Scraper avatar

Google Images Scraper

Pricing

$19.99/month + usage

Go to Apify Store
Google Images Scraper

Google Images Scraper

Google Images Scraper collects image URLs, alt text, source pages, and metadata from Google Images. Use it as an API, with Python or Node.js, or via npm. Ideal for datasets, AI training, research, and automation. Exports in JSON, CSV, or Excel.

Pricing

$19.99/month + usage

Rating

5.0

(10)

Developer

Scraper Engine

Scraper Engine

Maintained by Community

Actor stats

1

Bookmarked

365

Total users

4

Monthly active users

14 days ago

Last modified

Share

Google Images Scraper — Image URLs, Thumbnails and Source Pages

Google Images Scraper collects Google Images search results for any keyword and returns each image's full-size URL, thumbnail, dimensions, source page, and site of origin as structured JSON — no browser, no HTML parsing, no manual copy-pasting. Give it a list of queries and a target count, and every image row streams into your Output table in real time as it's found. Run it now on Apify and watch rows land as they're collected.

What is Google Images Scraper?

Google Images Scraper is an Apify Actor that queries Google Images for one or more keywords and extracts structured metadata for every image result — direct image link, thumbnail, dimensions, title, source page, and domain. It returns typed JSON rows with no login, no API key, and no Google account required. It's built for developers, market and brand researchers, and teams assembling image datasets for computer vision or AI training who need image metadata at scale without scripting a scraper themselves.

What Google Images data is publicly available to scrape?

Everything Google Images shows an anonymous visitor is publicly accessible — no sign-in gates the search results page itself.

Data CategoryPublicly AvailableRestricted
Full-size image URL
Thumbnail URL and dimensions
Image title / caption text
Source page URL (contentUrl)
Source domain (origin)
Region- and language-specific resultsFixed by the scraper's request configuration
SafeSearch filteringNot applied by the scraper's requests
The underlying image file itselfScraper returns links, not downloaded image bytes

Google Images Scraper only returns publicly visible data — what any visitor sees on a Google Images results page. Nothing behind a login wall.

What data can I extract with Google Images Scraper?

Each run returns descriptive fields that identify the image and its source, plus quantitative fields describing its dimensions.

Field NameDescription
queryThe keyword this image was found for
titleTitle or caption text associated with the source page
imageUrlDirect URL of the full-size image
thumbnailUrlURL of the preview thumbnail Google generated
contentUrlThe web page that hosts the image
originThe source site / domain the image was found on
imageWidthPixel width of the full-size image
imageHeightPixel height of the full-size image
thumbnailWidthPixel width of the thumbnail
thumbnailHeightPixel height of the thumbnail

Identity and source fields

query, title, imageUrl, thumbnailUrl, contentUrl, and origin describe what the image is, where it came from, and which keyword surfaced it.

Dimension fields

imageWidth, imageHeight, thumbnailWidth, and thumbnailHeight are numeric pixel values, useful for filtering results by resolution or aspect ratio before downstream use.

🤖 Add-on: Need additional visual-content data?

If your project spans more than Google Images, pair this Actor with Airbnb Images Scraper for listing photo galleries or Instagram Posts Scraper for post media and captions. Both return the same kind of structured, per-item JSON rows so you can combine datasets from multiple platforms in one pipeline.

How does Google Images Scraper differ from the official Google API?

Google's own Custom Search JSON API can return image results, but it is scoped, quota-limited, and requires setup that Google Images Scraper skips entirely. As of 2026-07-30, Google's documentation states the API is free for 100 queries per day, then billed at $5 per 1,000 queries up to 10,000 queries per day, and caps every query at 100 results total (10 per request, with start + num capped at 100). Google has also discontinued the Custom Search JSON API for new customers and requires existing customers to migrate to an alternative by January 1, 2027.

FeatureGoogle Custom Search JSON APIGoogle Images Scraper
SetupRequires creating a Programmable Search Engine (cx) plus an API keyProvide keywords and run — no engine or key setup
Results per queryCapped at 100 documents per queryUp to maxImages (schema max 100,000; actual yield depends on how many unique images Google has for the keyword)
Free quota100 queries/day free (Google docs, checked 2026-07-30)No separate query quota — billed per image row returned
Pricing beyond free tier$5 per 1,000 queries, up to 10,000/day (Google docs, checked 2026-07-30)Apify pay-per-event pricing on the row_result event
New customer availabilityDiscontinued for new customers; existing customers must migrate by 2027-01-01 (Google docs, checked 2026-07-30)Available now, no migration deadline
Output deliveryJSON response per request, paginated by the callerRows streamed into an Apify dataset in real time as they're found

Use the official API if you already operate inside Google Cloud billing and 100 results per query is enough. Use Google Images Scraper when you need higher per-keyword volume, real-time streaming into a dataset, or you'd rather not manage a Programmable Search Engine and API key.

How to use Google Images Scraper

Google Images Scraper runs entirely inside Apify — there's no separate signup or API key to request before your first run.

  1. Open the Actor's page on the Apify Store and click Try for free (or Run, if you've already added it to your account).
  2. Provide the required input: queries, a list of one or more search phrases.
  3. Optionally set maxImages to cap how many unique images to keep per keyword, and leave proxyConfiguration on its default.
  4. Start the run.
  5. Watch rows land in the Output table in real time, then export the dataset as JSON, CSV, Excel, or HTML.

How to scale to bulk image extraction

queries accepts an array, so a single run processes any number of keywords — each is searched in turn and every image is tagged with the query it came from in the output row. There's no per-run keyword limit in the input schema; to run keyword batches on a schedule instead of one large run, use Apify's built-in Scheduler to trigger repeat runs with different input.

What can you do with Google Images data?

  • 🏢 Brand and market researchers use origin and contentUrl to see which sites and domains surface most often for a product or brand keyword.
  • 🤖 Computer vision teams use imageUrl, imageWidth, and imageHeight to build filtered image datasets at a target resolution for model training.
  • 📊 Content and SEO analysts use title and contentUrl to audit which pages rank with strong image metadata for a given search term.
  • 🎨 Catalog and moodboard builders use thumbnailUrl and title to quickly assemble visual references without opening each source page.
  • 🧠 AI engineers feed title, origin, and contentUrl into a RAG pipeline or agent tool call to ground an LLM's answers in real, source-linked image metadata rather than hallucinated URLs.

How does Google Images Scraper handle rate limits and blocking?

Every request routes through Apify Proxy, defaulting to the GOOGLE_SERP proxy group built for search-engine traffic, and rotates to a new proxy URL on each retry. Requests are sent with a Chrome-impersonated HTTP client rather than a full browser. If a response comes back short and contains Google's /sorry/ interstitial or "unusual traffic" wording, it's treated as blocked and retried — up to 3 attempts per fetch, with a short increasing delay between them, on a fresh proxy each time. If all attempts for a given fetch fail, that fetch is skipped and the scraper moves on rather than failing the whole run. To reach the requested maxImages count, the scraper automatically broadens a keyword across related autocomplete terms and Google's own image search filters (color, type, size, aspect ratio, date range) and stops broadening a keyword early once 14 consecutive fetches add no new unique images — so very high maxImages values on narrow keywords may return fewer images than requested once Google's available results are exhausted.

⬇️ Input

ParameterRequiredTypeDescriptionExample Value
queriesYesarrayList of search phrases. One query per line in the editor; each is processed in order.["nature", "product shots"]
maxImagesNointegerCap how many unique images to keep for each keyword. Minimum 1, maximum 100000, default 10.25
proxyConfigurationNoobjectApify Proxy configuration. Defaults to {"useApifyProxy": true, "apifyProxyGroups": ["GOOGLE_SERP"]} — keep the default for best results.{"useApifyProxy": true, "apifyProxyGroups": ["GOOGLE_SERP"]}

Example input

{
"queries": ["golden retriever", "mountain lake"],
"maxImages": 25,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["GOOGLE_SERP"]
}
}

⬆️ Output

Every image is pushed to the dataset as a typed JSON row the moment it's collected, with the same 10 keys on every row — no nested objects, no schema drift between runs. Export the dataset as JSON, CSV, Excel, or HTML directly from the Apify Console.

Example output

{
"query": "mountain lake",
"imageUrl": "https://example.com/photos/mountain-lake.jpg",
"imageWidth": 1459,
"imageHeight": 1945,
"thumbnailUrl": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ...",
"thumbnailWidth": 480,
"thumbnailHeight": 638,
"contentUrl": "https://example.com/blog/best-mountain-lakes",
"origin": "example.com",
"title": "The Best Mountain Lakes to Visit"
}

How does it work?

Google Images Scraper sends search requests to Google's image search endpoint through Apify Proxy's GOOGLE_SERP group, impersonating a Chrome browser at the HTTP level rather than launching one. Each response's embedded image data is parsed directly out of the page rather than rendered, then de-duplicated by image URL. To collect more than a single page's worth of results for a keyword, the scraper layers in related autocomplete terms and Google's own image filters (color, photo type, size, aspect ratio, date range) until the requested count is reached or Google has no more unique images to offer. Only publicly visible search results are returned — nothing behind a login — and every row keeps the same field names and structure regardless of how Google's results page happens to be laid out on a given day.

Integrations

Google Images Scraper runs as a standard Apify Actor, so it works with anything that can call the Apify API.

Calling Google Images Scraper programmatically

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_API_TOKEN>")
run = client.actor("your-username/google-images-scraper").call(run_input={
"queries": ["mountain lake", "golden retriever"],
"maxImages": 25,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["imageUrl"])

Works in Go, Ruby, Node.js, cURL — any language that can make an HTTP request.

No-code tools (n8n, Make, LangChain)

In n8n, use the HTTP Request node against the Actor's run-sync-get-dataset-items endpoint, authenticated with your Apify API token, to trigger a run and receive the resulting image rows in one call. In Make, the Apify app's "Run Actor and Get Dataset Items" module does the same without writing any code. In a LangChain or similar agent framework, wrap the same endpoint as a tool so an agent can request image metadata for a keyword mid-conversation.

Scraping publicly available search results is generally legal in most jurisdictions, and Google Images Scraper returns only data any visitor can already see on a public search results page — image links, thumbnails, dimensions, titles, and source pages, not the image files themselves. This is content and metadata data, not personal data about identifiable individuals, so GDPR and CCPA's personal-data rules don't govern the scraping itself; Google's Terms of Service and the copyright held by whoever owns each linked image are the relevant framing instead. The scraper extracts metadata about where an image lives, not the image content — reusing or redistributing the linked images themselves is a separate copyright question from scraping their metadata. Consult legal counsel if your use case involves bulk storage or redistribution of copyrighted image content.

❓ Frequently asked questions

What Google Images fields does Google Images Scraper return?

Every row includes imageUrl, thumbnailUrl, title, contentUrl, and origin, plus dimension fields for both the full image and thumbnail. See "What data can I extract with Google Images Scraper?" above for the full field list.

Does Google Images Scraper require a Google account or login?

No. The scraper sends unauthenticated search requests through Apify Proxy and never signs in to a Google account — no credentials are requested or required as input.

How many images can I extract in one run?

Up to maxImages per keyword, which accepts any value from 1 to 100,000, across as many keywords as you list in queries. Actual results per keyword depend on how many unique images Google actually has for that search term — the scraper stops broadening a keyword once it runs out of new unique images to find.

What happens if a query returns few or zero images?

The scraper broadens the search using related autocomplete terms and Google's own image filters before giving up on a keyword. If Google genuinely has no more unique images to return, the run logs that the keyword finished early and moves to the next one — no error is raised, and since billing is per image row (row_result), a keyword that returns zero images doesn't get charged.

Can I scrape multiple keywords at once?

Yes. queries is an array — list as many search phrases as you need and each is processed in its own turn within the same run, with every output row tagged with the query it came from.

Does Google Images Scraper work with Claude, ChatGPT, and other AI agent tools?

It isn't exposed through a dedicated MCP server, but any agent framework that can call an HTTP endpoint can trigger a run and read back results through the Apify API, the same way the Python example above does.

How does Google Images Scraper broaden results beyond a single search page?

Rather than returning just the first page Google shows for a keyword, the scraper layers in related autocomplete terms and Google's own image search filters — color, photo type, size, aspect ratio, date range — searching each combination and de-duplicating by image URL until it reaches the requested maxImages count or exhausts what Google has for that keyword.

Does Google Images Scraper return data in a format LLMs can use directly?

Yes. Every row is typed, normalized JSON with consistent field names across runs — no HTML to parse, no selectors to write. Pass it directly to an LLM, index it into a vector store, or feed it to an agent tool.

What happens when Google changes its layout or anti-bot system?

The scraper is maintained, and the output schema — the same 10 fields on every row — stays stable across updates even when Google's page structure changes. No specific update turnaround time is published.

Can I use Google Images Scraper without managing proxies or browser infrastructure?

Yes. Apify Proxy (defaulting to the GOOGLE_SERP group) and retry/rotation on blocked responses are handled automatically — you don't configure or maintain any proxy or browser infrastructure yourself.

Which fields work best for AI training data and RAG indexing?

For RAG, title, origin, and contentUrl carry the most descriptive text and are the fields worth embedding for retrieval. For training or filtering pipelines, imageWidth, imageHeight, and imageUrl give consistent, typed structure across every record regardless of keyword.

Scraper NameWhat it extracts
Airbnb Images ScraperListing photo galleries and image metadata from Airbnb
Instagram Posts ScraperPost media, captions, and creator profile data from Instagram
Instagram Story Details ScraperStory media and metadata from Instagram accounts
TikTok User Profile ScraperProfile stats and video metadata from TikTok
Snapchat User Stories ScraperPublic story content and metadata from Snapchat

💬 Your feedback

Found a bug or missing a field? Let us know through the Issues tab on this Actor's Apify Store page — reports are how the field list and parsing logic stay current as Google's results page evolves.