Google Images Scraper With Metadata Enrichment avatar

Google Images Scraper With Metadata Enrichment

Pricing

from $4.99 / 1,000 results

Go to Apify Store
Google Images Scraper With Metadata Enrichment

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

API Empire

Maintained by Community

Actor stats

1

Bookmarked

17

Total users

0

Monthly active users

2 days ago

Last modified

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 TypeKey FieldsJSON Field Names
Imagesdirect URL, title, width, heightimageUrl, title, imageWidth, imageHeight
Thumbnailspreview URL, width, heightthumbnailUrl, thumbnailWidth, thumbnailHeight
Source & site metadatasource page URL, site domain, canonical URL, faviconcontentUrl, 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.

FeatureGoogle Custom Search JSON APIGoogle Images Scraper With Metadata Enrichment
AvailabilityClosed 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
SetupRequires an API key and a Programmable Search Engine (CSE) IDProvide keywords and run — no key or search-engine configuration
Free quota100 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 requestUp to 10 results per request (num parameter, max 10)Up to 100,000 images per query (maxImages schema maximum)
Max results per queryCapped 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 enrichmentRaw search-result JSON onlyAdds 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)

  1. Open Google Images Scraper With Metadata Enrichment on its Apify Store page and start a new run.
  2. Provide queries — at least one search phrase is required; add more, one per line, to process them in order.
  3. Set maxImages to cap unique images per keyword (1–100,000, default 10), and toggle includeFavicon / includeSourceDetails for the enrichment columns you want.
  4. Start the run — image rows stream into the dataset live as they're collected.
  5. 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:

ParameterRequiredTypeDescriptionExample Value
queriesYesarray of strings (stringList editor)List of search phrases (e.g. nature, product shots, logos). One query per line in the editor.["nature", "modern architecture"]
maxImagesNointegerCap how many unique images to keep for each keyword (1–100000). The log shows progress toward this goal in real time. Default: 1050
includeFaviconNobooleanAdd a favicon column — a 64px icon URL for the source site (from the row's origin domain). null when origin is unknown. Default: truetrue
includeSourceDetailsNobooleanAdd 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: truetrue
proxyConfigurationNoobject (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?

FeatureGoogle Images Scraper With Metadata EnrichmentGeneric alternative
Output formatTyped JSON with stable field names, streamed row-by-row during the runOften HTML or a flat CSV requiring a separate parsing step
EnrichmentAdds favicon, sourceDomain, and canonicalSourceUrl per row, computed locally with no extra requestsTypically returns the raw image URL only
Null handlingMissing source data is set to null explicitlyFrequently left blank or silently dropped
Keyword broadeningAutomatically widens a single keyword across facets (color, size, aspect ratio, related terms) to reach your maxImages targetUsually one fixed query per keyword, capped by whatever the first page returns
DeduplicationBuilt-in de-duplication by image URL across the whole runNot 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 ApifyClient
client = 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.

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.