Google Images Scraper With Metadata Enrichment
Pricing
from $4.99 / 1,000 results
Google Images Scraper With Metadata Enrichment
Scrape Google Images with enriched metadata including titles, URLs, source domains, image dimensions, file types, and related details. Ideal for image research, SEO, visual search, competitor analysis, content discovery, and media intelligence.
Pricing
from $4.99 / 1,000 results
Rating
0.0
(0)
Developer
API Empire
Maintained by CommunityActor stats
1
Bookmarked
17
Total users
0
Monthly active users
2 days ago
Last modified
Categories
Share
Google Images Scraper — Extract Images, Thumbnails and Source Data
Google Images Scraper With Metadata Enrichment collects image results from Google Images for any keyword you supply, returning direct image URLs, thumbnails, and source-page details as structured JSON — no HTML, no selectors, no manual parsing. Every row is deduplicated and, on request, enriched with a source favicon, source domain, and canonical (query-stripped) source URL, computed locally so nothing is fabricated. Results stream into your dataset row by row as they're found, so a run is watchable live instead of a black box. Once you've read this, you'll know exactly which fields you get, how the enrichment columns behave, and how to wire results into your own pipeline.
🖼️ What is Google Images Scraper With Metadata Enrichment?
Google Images Scraper With Metadata Enrichment is an Apify Actor that runs keyword searches against Google Images and returns every matching image as a typed JSON row — the image itself, its thumbnail, and the page and site it came from. No Google account, API key, or login is required; the Actor sends its own search requests the same way a browser does.
- 🖼️ Scrape images — direct URL, title, and pixel dimensions
- 🌠 Scrape thumbnails — preview URL and pixel dimensions
- 🔗 Scrape source and site metadata — source page URL, site domain, canonical URL, and favicon
- 📤 Export as JSON, CSV, or any other Apify dataset format
- 🌍 No proxy management required — Apify Proxy is applied by default
📊 What data does Google Images Scraper With Metadata Enrichment collect?
Every run returns three kinds of data per image: the image itself, its thumbnail, and metadata about where it was found.
| Data Type | Key Fields | JSON Field Names |
|---|---|---|
| Images | direct URL, title, width, height | imageUrl, title, imageWidth, imageHeight |
| Thumbnails | preview URL, width, height | thumbnailUrl, thumbnailWidth, thumbnailHeight |
| Source & site metadata | source page URL, site domain, canonical URL, favicon | contentUrl, origin, sourceDomain, canonicalSourceUrl, favicon |
🆚 How does Google Images Scraper With Metadata Enrichment differ from the official Google API?
Google's own image-search API is the Custom Search JSON API (used with searchType=image). As of its current developer documentation (checked 2026-07-30), it is closed to new customers, and existing customers have until January 1, 2027 to migrate to an alternative. Google Images Scraper With Metadata Enrichment, by contrast, can be run immediately from the Apify Store with no signup review.
| Feature | Google Custom Search JSON API | Google Images Scraper With Metadata Enrichment |
|---|---|---|
| Availability | Closed to new customers; existing customers must migrate by Jan 1, 2027 (developers.google.com, checked 2026-07-30) | Available now — run directly from the Apify Store |
| Setup | Requires an API key and a Programmable Search Engine (CSE) ID | Provide keywords and run — no key or search-engine configuration |
| Free quota | 100 queries/day free (developers.google.com, checked 2026-07-30) | No daily query cap set by the Actor; billed per collected row, not per query |
| Results per request | Up to 10 results per request (num parameter, max 10) | Up to 100,000 images per query (maxImages schema maximum) |
| Max results per query | Capped at 100 results total (start + num ≤ 100) | Bound by maxImages and by how many unique images Google's index actually returns for that keyword |
| Pricing beyond free tier | $5 per 1,000 queries, up to 10,000 queries/day (developers.google.com, checked 2026-07-30) | Apify pay-per-event pricing set on the Actor's Store page |
| Output enrichment | Raw search-result JSON only | Adds favicon, sourceDomain, canonicalSourceUrl to every row, computed locally |
The official API is the right choice if you already operate inside Google Cloud and only need a handful of queries a day within the free tier. For keyword-driven, higher-volume image collection — or if a new API key isn't obtainable at all — Google Images Scraper With Metadata Enrichment is the practical route.
🎯 Why do developers and teams scrape Google Images?
🤖 For AI engineers and agent builders
Building an image dataset for a computer-vision or multimodal-LLM pipeline starts with keyword coverage: feed a list of concepts into queries, cap volume per concept with maxImages, and get back deduplicated imageUrl values plus imageWidth/imageHeight for filtering by resolution before download. Because rows stream into the dataset as they're found, a downstream job can start processing before the run finishes. sourceDomain and canonicalSourceUrl let you group or exclude images by source site without a second pass.
📈 For marketers and brand teams
Tracking how a brand, product, or logo actually appears across the web starts with the same keyword search a customer would run. origin and sourceDomain show which sites are ranking images for a term, title captures how the surrounding page describes the image, and favicon gives a quick visual cue for the type of site publishing it — useful for a visual-presence sweep across a list of brand or product keywords.
🔬 For researchers and analysts
Media and visual-culture researchers treat image search results as a public record of what content ranks for a topic at a point in time. Every field is public search-result metadata — imageUrl, contentUrl, title, dimensions — so a researcher can build a keyword-to-imagery dataset for content analysis without scraping the source pages directly, and canonicalSourceUrl gives a stable citation URL stripped of tracking parameters.
🛠️ For developers building data products
Teams building a catalog, mood-board tool, or visual-search feature can drive collection entirely off a keyword list and cache the resulting imageUrl/thumbnailUrl pairs plus sourceDomain for attribution links. Output is one flat JSON row per image with stable field names, so it drops into an existing ETL job or vector-store ingestion pipeline without a custom parser.
🚀 How to scrape Google Images (step by step)
- Open Google Images Scraper With Metadata Enrichment on its Apify Store page and start a new run.
- Provide
queries— at least one search phrase is required; add more, one per line, to process them in order. - Set
maxImagesto cap unique images per keyword (1–100,000, default 10), and toggleincludeFavicon/includeSourceDetailsfor the enrichment columns you want. - Start the run — image rows stream into the dataset live as they're collected.
- Download results as JSON, CSV, or another Apify dataset export format once the run finishes, or read them mid-run through the API.
🔧 What to do when Google changes its image-search markup
Google periodically changes how it renders search-result pages. Google Images Scraper With Metadata Enrichment is maintained to track those changes, and the output schema — field names and types — stays stable on your end, so integrations built against it keep working without changes on your side.
⬇️ Input
Google Images Scraper With Metadata Enrichment accepts five input parameters, defined in .actor/input_schema.json:
| Parameter | Required | Type | Description | Example Value |
|---|---|---|---|---|
queries | Yes | array of strings (stringList editor) | List of search phrases (e.g. nature, product shots, logos). One query per line in the editor. | ["nature", "modern architecture"] |
maxImages | No | integer | Cap how many unique images to keep for each keyword (1–100000). The log shows progress toward this goal in real time. Default: 10 | 50 |
includeFavicon | No | boolean | Add a favicon column — a 64px icon URL for the source site (from the row's origin domain). null when origin is unknown. Default: true | true |
includeSourceDetails | No | boolean | Add sourceDomain (host of the source page) and canonicalSourceUrl (source page URL stripped of query string and fragment). null when the source page URL is unknown. Default: true | true |
proxyConfiguration | No | object (proxy editor) | Pick proxy groups/countries in the picker. When enabled, the actor uses your selection for the collection session. | {"useApifyProxy": true, "apifyProxyGroups": ["GOOGLE_SERP"]} |
Example JSON input
{"queries": ["nature", "modern architecture", "product packaging"],"maxImages": 50,"includeFavicon": true,"includeSourceDetails": true,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["GOOGLE_SERP"]}}
⚠️ Common pitfall: setting maxImages to a very high number for a narrow or uncommon keyword won't force Google to surface more unique images than actually exist. The Actor stops collecting for a keyword once 14 consecutive fetch attempts add no new unique image, so the final row count can land below your requested maxImages.
⬆️ Output
Every field is typed JSON, pushed to the dataset row by row as each image is found — no CSV munging or HTML to parse. Standard Apify dataset export formats (JSON, CSV, Excel, XML, RSS, HTML table) are available on every run.
Scraped image record
{"query": "technology","imageUrl": "https://globalfocusmagazine.com/wp-content/uploads/2020/02/Engaging_with_technology-scaled.jpg","imageWidth": 2048,"imageHeight": 1366,"thumbnailUrl": "https://encrypted-tbn0.gstatic.com/images?q=tbn:EZcByeA3Rde0vM","thumbnailWidth": 2048,"thumbnailHeight": 1366,"origin": "globalfocusmagazine.com","contentUrl": "https://globalfocusmagazine.com/engaging-with-technology/","title": "Engaging with technology","favicon": "https://www.google.com/s2/favicons?sz=64&domain=globalfocusmagazine.com","sourceDomain": "globalfocusmagazine.com","canonicalSourceUrl": "https://globalfocusmagazine.com/engaging-with-technology/"}
favicon, sourceDomain, and canonicalSourceUrl are only added when includeFavicon / includeSourceDetails are enabled (both default to true), and are set to null — never guessed — when the underlying source URL is unknown.
Every pushed row is billed as one row_result charged event. The Actor only pushes a row once it successfully parses an image, so pages Google blocks (CAPTCHA / "unusual traffic" interstitials) never reach your dataset and are never charged.
🔍 How does Google Images Scraper With Metadata Enrichment compare to other Google Images scrapers?
| Feature | Google Images Scraper With Metadata Enrichment | Generic alternative |
|---|---|---|
| Output format | Typed JSON with stable field names, streamed row-by-row during the run | Often HTML or a flat CSV requiring a separate parsing step |
| Enrichment | Adds favicon, sourceDomain, and canonicalSourceUrl per row, computed locally with no extra requests | Typically returns the raw image URL only |
| Null handling | Missing source data is set to null explicitly | Frequently left blank or silently dropped |
| Keyword broadening | Automatically widens a single keyword across facets (color, size, aspect ratio, related terms) to reach your maxImages target | Usually one fixed query per keyword, capped by whatever the first page returns |
| Deduplication | Built-in de-duplication by image URL across the whole run | Not always guaranteed across paginated or faceted requests |
If you're building an AI agent or RAG pipeline, the output format row is the decision-maker — parsing HTML inside an agent loop is a reliability failure mode, not a feature.
📈 How many images can you scrape with Google Images Scraper With Metadata Enrichment?
The real ceiling is the maxImages input: 1 to 100,000 unique images per keyword, with a default of 10. There's no hard cap on how many keywords you put in queries — cost scales with the number of rows actually collected, since billing is per row_result event, not per query.
To reach a high maxImages target, the Actor automatically broadens a keyword — trying related autocomplete terms and search facets (color, size, aspect ratio, and more) — until it hits your target or 14 consecutive fetches in a row add no new unique image, whichever comes first. That second condition means the actual result count for a niche keyword can be lower than maxImages if Google's index simply doesn't have that many distinct images for it. No benchmark run time is published — actual duration depends on your maxImages target, the number of queries, and Google's response behavior at the time of the run.
🔌 Integrate Google Images Scraper With Metadata Enrichment and automate your workflow
Google Images Scraper With Metadata Enrichment works with any language or tool that can send an HTTP request.
REST API integration
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("<your-username>/google-images-scraper-with-metadata-enrichment").call(run_input={"queries": ["nature", "modern architecture"],"maxImages": 25,})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["imageUrl"], item["sourceDomain"])
Works in Python, Node.js, Go, Ruby, cURL.
MCP for AI agents
Add this Actor as a callable tool through Apify's hosted MCP server by listing it in the tools query parameter: https://mcp.apify.com?tools=<your-username>/google-images-scraper-with-metadata-enrichment. Point Claude Desktop, Cursor, or another MCP-compatible client at that URL to call it as a tool — no custom server to run.
Automation platforms (n8n, Make, LangChain)
In Make, the official Apify app's Run an Actor module can call Google Images Scraper With Metadata Enrichment directly with your queries and maxImages values, and Get Dataset Items pulls the resulting rows into the rest of your scenario. In n8n, the official Apify node (built and verified by Apify) runs the same Actor and dataset lookup inside a workflow, so results can flow straight into a spreadsheet, database, or downstream LLM call.
⚖️ Is it legal to scrape Google Images?
Yes. Google Images Scraper With Metadata Enrichment only collects metadata that Google's own image search already displays to any visitor: image URLs, thumbnails, dimensions, and the page each image is hosted on. This is search-result and source-page metadata, not personal profile data, so it falls under standard web-scraping and terms-of-service considerations rather than GDPR or CCPA. Google's Terms of Service govern automated access to its search properties, and the images themselves may still be protected by copyright even though their metadata is public — downloading or reusing the actual image files commercially is a separate question from collecting their metadata. Consult legal counsel for commercial use cases involving bulk data collection or image reuse.
❓ Frequently asked questions
Does Google Images Scraper With Metadata Enrichment work without a Google account?
Yes. The Actor sends search requests directly to Google Images the same way a browser does — no login, API key, or Google account is required.
How often is the scraped data updated?
Every run fetches results live from Google Images at the moment it executes. Nothing is cached or served from a previous run.
What happens if a keyword has fewer than maxImages unique images available?
The Actor returns however many unique images it actually finds. It broadens a keyword automatically — trying related terms and facets like color, size, and aspect ratio — but stops that keyword once 14 consecutive fetches in a row add no new unique image, so the row count can land below your requested maxImages.
Can I scrape private or login-gated images?
No. Only images and pages that Google's public image-search index already surfaces to any visitor are returned. There's no way to reach content behind a login wall through this Actor.
How much does a run cost?
Each collected image row is billed once as a row_result charged event. Blocked or CAPTCHA-interstitial pages are never pushed to the dataset, so they're never charged. Exact per-event pricing is set on the Actor's Store page.
Does Google Images Scraper With Metadata Enrichment work for AI agent workflows and LLM pipelines?
Yes. Call it as an HTTP endpoint from any agent framework via apify_client, or add it as a tool through Apify's hosted MCP server (https://mcp.apify.com?tools=<actor-id>). Every response is typed JSON — no HTML or selectors to parse before passing it to an LLM.
How does Google Images Scraper With Metadata Enrichment handle Google's anti-bot defenses?
It rotates requests through Apify Proxy (the GOOGLE_SERP proxy group by default), impersonates a Chrome browser at the HTTP layer, retries a blocked or failed fetch up to 3 times with a short backoff between attempts, and detects Google's "unusual traffic" / /sorry/ interstitial pages so they're discarded rather than parsed as results.
How does Google Images Scraper With Metadata Enrichment compare to other Google Images scrapers?
It streams typed JSON rows during the run rather than a flat batch at the end, and each row can carry three enrichment fields — favicon, sourceDomain, canonicalSourceUrl — computed locally and set to null rather than guessed when the source is unknown. Many simpler scrapers return only the raw image URL.
Does it return data in a format LLMs can use directly?
Yes. Typed, normalized JSON with stable field names — pass it directly into an LLM context window, index it into a vector store, or route it through an agent tool without a parsing step.
Can I use it without managing proxies?
Yes. Apify Proxy (GOOGLE_SERP group) is applied automatically even if you don't set proxyConfiguration — the Actor falls back to that default internally.
What happens when Google changes its search-result markup or blocks the scraper?
Google Images Scraper With Metadata Enrichment is maintained to track structural changes on Google's side, and the output schema — field names and types — stays stable on your end, so integrations built against it keep working without a numeric turnaround guarantee.
💬 Your feedback
Found a bug, or a field that doesn't match what you see on Google Images? We want to know. Report it through the Issues tab on this Actor's Apify Store page so it can be tracked and fixed.