Google Images Scraper - Image URLs, Sizes & Source Pages avatar

Google Images Scraper - Image URLs, Sizes & Source Pages

Pricing

from $1.40 / 1,000 images

Go to Apify Store
Google Images Scraper - Image URLs, Sizes & Source Pages

Google Images Scraper - Image URLs, Sizes & Source Pages

Scrape Google Images by keyword: full-size image URLs, width and height, thumbnails, titles, source pages and domains in Google's order. Country, language, size, type and color filters. Up to 300 images per query. No login or API key.

Pricing

from $1.40 / 1,000 images

Rating

0.0

(0)

Developer

Cliqto Media

Cliqto Media

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

Type a search phrase and get the Google Images results as a table: direct image URL, width and height, thumbnail, title, source page and domain, in Google's order. No login and no API key. A run with the prefilled query red bicycle and 20 images takes about a minute and costs about $0.06 on the Free plan.

Use it to collect image links for ML datasets, to check which sites rank in Google Images for a keyword, or to find visual references. The Actor saves links only: it does not download the images.

Google Images Scraper: a search phrase in, a table of image URLs, sizes and source pages out

Table of contents

What it does

  1. Searches Google Images for each phrase in queries, in the country and language you choose.
  2. Applies the Google filters you set: SafeSearch, size, type, color, time period and usage rights.
  3. Reads up to 3 Google result pages per phrase. One page has about 100 images, so Google gives about 300 images per phrase at most.
  4. Removes repeated images (the same image URL) inside one phrase and numbers the rest 1, 2, 3… in Google's order.
  5. Saves one Dataset row per image and stops a phrase when it has maxImages images or when Google has no more.

What data you get

For every image: the search phrase, position, page title, full-size image URL, width and height in pixels, Google thumbnail URL and size, source page URL, domain and site name, file size, main color, the country and language used, and the time Google's page was loaded.

Good fit

  • Build an image dataset for machine learning: many phrases, up to about 300 image links each, with sizes to filter small images.
  • SEO: see which pages and domains show up in Google Images for your keywords, and at which position.
  • Design and e-commerce: collect visual references, or check where your product photos appear.

Not a fit / limits

  • It does not download or store images. You get links; the image files stay on the source sites and can disappear.
  • It does not give image licences. The usageRights filter is Google's label, not a licence. Check the rights on the source page before you use an image.
  • About 300 images per phrase at most, because Google shows no more. For more images, use more phrases (for example red bicycle vintage, red bicycle kids).
  • No reverse image search (search by picture) and no Google Lens.
  • Google results change over time and between runs. Two runs of the same phrase can differ by about 10% of images.

Quick start

  1. Open the Input tab.
  2. Keep the prefilled phrase red bicycle in Search queries (queries), or type your own, one per line.
  3. Keep Images per query (maxImages) at 20, or choose 1–300.
  4. Click Start.
  5. Open the Output tab and look at the Images view: a preview, the title, the image URL, the size and the source page for each image.

Expected result: 20 rows for red bicycle in about a minute, positions 1 to 20.

Input

Input fields

Only queries is required. Every other field has a default.

FieldPlain nameTypeRequiredDefault / prefillAllowed valuesEffectRecommendation
queriesSearch queriesarray of stringsyesprefill ["red bicycle"]1–100 phrases, up to 500 characters eachOne Google Images search per phraseEmpty lines are ignored; repeated phrases (case-insensitive) run once. Google operators such as site: and quotes work.
maxImagesImages per queryintegernodefault 20, prefill 201–300How many images to save for each phraseUp to 100 needs one Google page per phrase; 101–300 needs up to 3.
countryCodeCountrystringnoustwo-letter code from the list, e.g. us, gb, de, fr, jpGoogle ranks results for searchers in this countryUse your target market.
languageCodeLanguagestringnoencode from the list, e.g. en, de, fr, ja, pt-BRGoogle interface language; changes ranking and the language of titlesMatch the language of your phrases.
safeSearchSafeSearchbooleannotruetrue, falsetrue hides explicit imagesKeep true unless you need unfiltered results.
sizeImage sizestringnoanyany, large, medium, iconGoogle's size filterlarge for datasets that need big images.
typeImage typestringnoanyany, photo, clipart, lineart, animated, faceGoogle's type filterphoto removes most drawings and logos.
colorColorstringnoanyany, color, gray, transparent, red, orange, yellow, green, teal, blue, purple, pink, white, black, brownGoogle's color filtertransparent for PNG cut-outs.
timePeriodTime periodstringnoanyany, day, week, month, yearOnly images Google indexed in this periodUse for fresh images on a news topic.
usageRightsUsage rightsstringnoanyany, creativeCommons, commercialGoogle's usage-rights filterIt is a Google label, not a licence.

If queries is missing or has only empty lines, the run fails at once with Invalid input; only the run start ($0.005) is charged.

Interacting settings

WhenInput AInput BEffective behaviorCost/result effect
Many phrasesqueriesmaxImagesmaxImages is per phrase, not per run10 phrases × 20 images = up to 200 rows
Strict filterssize, type, color, timePeriod, usageRightsmaxImagesAll filters are combined; Google can have fewer images than maxImagesThe phrase ends as exhausted or not_found; you pay for pages read
Phrase in another languagequeriescountryCode, languageCodeGoogle uses all threeTitles come in the language Google picks for that page

Input examples

Prefill: one phrase, 20 images

{
"queries": ["red bicycle"],
"maxImages": 20
}

Expected behavior: one Google page is read, 20 images are saved. Expected output: 20 rows with position 1–20, imageUrl, width, height, sourceDomain. Cost note: 1 start + 1 page + 20 images.

Dataset: several phrases, large photos, Germany

{
"queries": ["Fahrrad rot", "Fahrrad Kinder", "Rennrad"],
"maxImages": 300,
"countryCode": "de",
"languageCode": "de",
"size": "large",
"type": "photo"
}

Expected behavior: up to 3 Google pages per phrase, about 280–300 images per phrase. Expected output: up to 900 rows; each phrase has its own positions from 1. Cost note: 1 start + up to 9 pages + one charge per saved image.

Output

One Dataset row = one image. The Images view shows a short table with a preview; the All fields view shows every field. A run summary is saved as RUN_SUMMARY in the key-value store.

Output fields

FieldMeaningTypeCan be empty?Example
queryThe search phrasestringnored bicycle
positionPosition in Google Images for this phrase, from 1, after repeated images are removedintegerno1
titleTitle of the page the image comes fromstringyes24 in. Red 21-Speed … Mountain Bike … - The Home Depot
imageUrlDirect URL of the full-size image on the source sitestringnohttps://images.thdstatic.com/…_600.jpg
widthFull-size image width, pxintegeryes600
heightFull-size image height, pxintegeryes600
thumbnailUrlGoogle thumbnail URL (encrypted-tbn*.gstatic.com)stringyeshttps://encrypted-tbn0.gstatic.com/images?q=tbn:…
thumbnailWidthThumbnail width, pxintegeryes554
thumbnailHeightThumbnail height, pxintegeryes554
sourcePageUrlPage that shows the imagestringyeshttps://www.homedepot.com/p/…/325010151
sourceDomainDomain of the source pagestringyeswww.homedepot.com
sourceNameSite name as Google shows itstringyesThe Home Depot
fileSizeFile size as Google shows it (text, not a number)stringyes39KB
dominantColorMain color of the imagestringyesrgb(216,66,69)
countryCodeGoogle country usedstringnous
languageCodeGoogle language usedstringnoen
fetchedAtWhen the Google page was loaded (ISO 8601, UTC)stringno2026-10-15T04:51:03.022Z

null means Google did not show this value for the image. It is never replaced with 0 or an empty string.

Output example

One real row from the prefill run (red bicycle, 20 images), with long URLs shortened:

{
"query": "red bicycle",
"position": 1,
"title": "24 in. Red 21-Speed Mechanical Disc Brake Mountain Bike for Teenagers outwyadironch43 - The Home Depot",
"imageUrl": "https://images.thdstatic.com/productImages/ee2aa086-bc34-4653-8fda-ab7879d28920/svn/reds-pinks-bikes-outwyadironch43-64_600.jpg",
"width": 600,
"height": 600,
"thumbnailUrl": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcT5OkkXYwisrBprY_ohTFjwk4QbVwfWv62tA9h93MKQGg&s=10",
"thumbnailWidth": 554,
"thumbnailHeight": 554,
"sourcePageUrl": "https://www.homedepot.com/p/24-in-Red-21-Speed-Mechanical-Disc-Brake-Mountain-Bike-for-Teenagers-outwyadironch43/325010151",
"sourceDomain": "www.homedepot.com",
"sourceName": "The Home Depot",
"fileSize": "39KB",
"dominantColor": "rgb(216,66,69)",
"countryCode": "us",
"languageCode": "en",
"fetchedAt": "2026-10-15T04:51:03.022Z"
}

Run summary and statuses

RUN_SUMMARY has the run status, a message, and one entry per phrase with its own status, the number of images and pages.

Phrase statusMeaningRows in Dataset
completeGot maxImages imagesmaxImages
exhaustedGoogle had fewer images than maxImagesall Google had
not_foundGoogle has no images for this phrasenone
errorGoogle could not be read after 3 triesrows saved before the error
stoppedThe run reached your spending limit or timeout while this phrase was runningrows saved before the stop
skippedThe run stopped before this phrase startednone
Run statusWhenRun result
completeEvery phrase is complete, exhausted or not_foundSucceeded
partialSpending limit, timeout or abort stopped the run; or some phrases had errorSucceeded at a limit; Failed when a phrase had error (saved rows stay)
errorGoogle could not be read for any phraseFailed
invalid_inputInput is wrongFailed, only the run start is charged

Pricing and limits

Pricing unit

The Actor uses pay-per-event pricing. You pay only for these events; platform usage is included.

EventWhen it is chargedFree planBronzeSilverGold+
apify-actor-startonce per run$0.005$0.005$0.005$0.005
search-pageper Google result page read (about 100 images), also when Google shows no images$0.01$0.01$0.01$0.01
imageper saved image row$0.002$0.0018$0.0016$0.0014

A phrase that Google has no images for costs one search-page and saves no rows. A Google page that could not be read after 3 tries is not charged. Invalid input costs only the run start ($0.005). If your spending limit is reached, the run stops as partial and keeps only the rows you paid for.

Cost examples

Free-plan prices:

ScenarioInput scopeEventsChargeStop/cap behavior
Prefill1 phrase × 201 start + 1 page + 20 images$0.055stops at 20
10 images1 phrase × 101 start + 1 page + 10 images$0.035stops at 10
100 images1 phrase × 1001 start + 1–2 pages + 100 images$0.215–0.225stops at 100
Full phrase1 phrase × 3001 start + 3 pages + about 290 imagesabout $0.62Google gives no more
1,000 images10 phrases × 1001 start + 10–20 pages + 1,000 images$2.11–2.21stops at 100 per phrase
No images1 phrase that Google does not know1 start + 1 page$0.015phrase not_found

Limits

  • 1–100 search phrases per run, 1–300 images per phrase. Google shows about 280–295 unique images per phrase, so a phrase can end with fewer than you asked for (status exhausted).
  • Measured on the cloud (256 MB): 20 images ≈ 45–70 s; 10 phrases × 100 images ≈ 2–3 min; 30 phrases × 300 ≈ 11 min; 100 phrases × 300 (28,568 images) ≈ 34 min.
  • The default timeout is 1 hour, which fits the largest input. Memory is fixed at 256 MB; peak use was about 80 MB.
  • Each Google page gets up to 3 attempts and up to 120 seconds. A phrase whose pages keep failing gets status error; you are not charged for failed pages.
  • If Google cannot be read on the first phrase, the run stops there and does not start the other phrases (status skipped). Later in a run, 3 failed pages in a row also stop new phrases.
  • The Actor saves image links, not image files.

Use cases

Buyer jobInput pathOutput entityKey fieldsNext integration
ML image datasetmany queries, maxImages 300, size largeimage rowimageUrl, width, height, querydownload the URLs with your own tool, export CSV/JSON
SEO in Google Imagesyour keywords, countryCodeimage rowposition, sourceDomain, sourcePageUrlschedule weekly, compare positions in a sheet
Visual referencesa few phrases, type, colorimage rowthumbnailUrl, imageUrl, sourcePageUrlopen the Images view, export to Google Sheets

Scheduling and monitoring

Create a schedule in Apify Console (for example weekly) with the same input. Each run is a full new snapshot; the Actor does not compare runs. To see changes, compare position and sourceDomain between two Datasets.

API, export and integrations

  • API: start the run with POST https://api.apify.com/v2/acts/cliqtomedia~google-images-scraper/runs and the input JSON; read rows from the run's default Dataset. See the Apify API reference.
  • Export: JSON, CSV, Excel, XML or HTML from the Output tab or the Dataset API.
  • Scheduling: Apify schedules with the same input.
  • Webhooks / no-code: Apify integrations, Make, Zapier or n8n run the Actor and read the Dataset rows.

Use with AI agents (MCP)

  • MCP server URL with only this Actor: https://mcp.apify.com?tools=cliqtomedia/google-images-scraper (Apify MCP server docs).
  • Smallest useful input: {"queries": ["red bicycle"], "maxImages": 20}.
  • Key output fields: imageUrl (full-size image link), width and height (pixels), sourcePageUrl (page with the image), position (rank in Google Images), title (page title).
  • A run with 1 phrase and 20 images takes about a minute and costs $0.055 on the Free plan. Up to 100 phrases and 300 images per phrase in one run. One Google page takes 20–70 seconds, so keep maxImages small when you need a fast answer.

Troubleshooting

Fewer images than maxImages

Symptom: a phrase has fewer rows than you asked for, status exhausted. Likely reason: Google shows only about 300 images per phrase, fewer with strict filters or rare phrases. Action: remove a filter, or add more phrases with different words.

A phrase has no rows

Symptom: the phrase is not_found in RUN_SUMMARY. Likely reason: Google Images has no results for this phrase with these filters. Quotes and operators like site: make results narrower. Action: check the same phrase in Google Images in a browser, remove quotes or filters.

The run failed with "Google could not be read"

Symptom: run status error or partial with SOURCE_ERROR, phrases with error. Likely reason: Google did not answer after 3 tries. Rows saved before the error stay in the Dataset and are charged; failed pages are not charged. Action: run the failed phrases again later.

The run stopped as partial

Symptom: message "stopped at your spending limit" or "stopped at the run timeout". Action: raise the maximum cost per run, or the timeout, or split phrases into several runs.

FAQ

Do I need a Google account or an API key?

No. The Actor reads public Google Images results. No login and no key.

Are the images free to use?

Not always. The Actor gives links and does not give a licence. The usageRights filter is Google's label. Check the rights on the source page.

Why do two runs give different images?

Google changes results over time and between requests. In our tests the same phrase had about 10% different images between runs. Titles can also change with the language Google picks.

Can I get more than 300 images for one phrase?

No, Google does not show more. Use several similar phrases; repeated images are removed only inside one phrase, so check imageUrl across phrases yourself.

Support

For a bug, question or feature request, use the Issues tab of this Actor. Include the run ID, your input and the message from the run. Never send tokens or passwords.