How to use it: 3 steps
- Make a free Apify accountApify is the cloud platform where our tools run. The free plan gives you $5 of usage every month, no credit card needed. You pay Apify, not us.
- Paste your input and press StartNo code needed: you fill in a form (the input). It already has a working example. For example:
red bicyclein Search queries. Each start is one run. - Download the resultsWhen the run ends, the results are in a table (the dataset). Open Output, press Export and pick Excel or CSV. JSON and the API are there too.
This tool is an Apify Actor: a small program that runs on Apify. You can also run it on a schedule, for example every Monday. New to it? Read how it works, step by step and the 8 words you need first.
What it does
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.
- Searches Google Images for each phrase in
queries, in the country and language you choose. - Applies the Google filters you set: SafeSearch, size, type, color, time period and usage rights.
- 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.
- Removes repeated images (the same image URL) inside one phrase and numbers the rest 1, 2, 3… in Google's order.
- Saves one Dataset row per image and stops a phrase when it has
maxImagesimages or when Google has no more.
Good for
- 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 good fit
- 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
usageRightsfilter 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.
Who uses it
Machine learning teams
Build image datasets from many search phrases.
SEO specialists
See which pages rank in Google Images for your keywords.
Designers and shops
Collect visual ideas or find where your product photos appear.
Price
Pay per event: you pay for each result the tool saves, plus a small start fee for each run. The price includes Apify platform costs. Apify bills you, not us. Prices below are for the Apify free plan.
| What you pay for | Price | When |
|---|---|---|
| Start fee | $0.005 | Charged once per run. This tool uses 1 GB of memory or less by default; more memory costs more. |
| Google result page | $0.01 | One Google Images result page read (about 100 images), also when Google has no images for the query. Pages that could not be read are free. |
| Image | $0.002 (from $0.0014 on paid Apify plans) | One saved image row with the image URL, size and source page. |
Examples
- One result: about $0.007.
- 1,000 results: about $2.00.
- Every day 100 results, for 30 days: about $6.15 a month.
Free to try: the Apify free plan gives you $5 of usage every month, no credit card needed. That is enough for about 2,400 results.
Prices checked on 24 October 2026. See the current price on Apify.
Questions
Does it download the image files?
No. It saves image links. You can download them later with your own tool.
Can I use the images for free?
Not always. The tool gives links, not a licence. Check the rights on the source page.
Why do two runs give different images?
Google changes results over time. In tests about 10% of images changed between runs.
How many phrases can I search at once?
From 1 to 100 phrases per run, with up to 300 images each.
Do I need a Google account or an API key?
No. The Actor reads public Google Images results. No login and no key.
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.
Details
Step by step on Apify
- Open the Input tab.
- Keep the prefilled phrase
red bicyclein Search queries (queries), or type your own, one per line. - Keep Images per query (
maxImages) at 20, or choose 1–300. - Click Start.
- 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.
Use cases
| Task | Input | You get | Key fields | Next step |
|---|---|---|---|---|
| ML image dataset | many queries, maxImages 300, size large | image row | imageUrl, width, height, query | download the URLs with your own tool, export CSV/JSON |
| SEO in Google Images | your keywords, countryCode | image row | position, sourceDomain, sourcePageUrl | schedule weekly, compare positions in a sheet |
| Visual references | a few phrases, type, color | image row | thumbnailUrl, imageUrl, sourcePageUrl | open the Images view, export to Google Sheets |
Tips for better results
- Use the size filter to skip small images.
- Use several similar phrases if you need more than 300 images.
- Check the usage rights on the source page before you reuse an image.
Limits and good to know
- 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
For developers
Sample result
One result from a real test run, in JSON. Real values change from run to run. In Excel or CSV each field is a column.
{
"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"
}Use it from code
Actor ID: cliqtomedia/google-images-scraper. You need your Apify API token from Apify Console → Settings → API & Integrations.
from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("cliqtomedia/google-images-scraper").call(run_input={
"queries": [
"red bicycle"
],
"maxImages": 20
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)curl -X POST "https://api.apify.com/v2/acts/cliqtomedia~google-images-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"queries": ["red bicycle"], "maxImages": 20}'# pip install langchain-apify
# set APIFY_TOKEN in your environment
from langchain_apify import ApifyActorsTool
tool = ApifyActorsTool("cliqtomedia/google-images-scraper")
result = tool.invoke({"run_input": {"queries": ["red bicycle"], "maxImages": 20}})
print(result)The cURL call waits for the results, up to 300 seconds. For longer runs, start a run (/runs) and get the results with a webhook or by checking the run. Apify API docs. LlamaIndex, MCP for AI agents and the JavaScript client: AI agents & MCP.
Data fields (17)
| Field | Type | Meaning |
|---|---|---|
query | string | The search query. |
position | integer | 1-based position in Google Images results for the query, after removing duplicate images. |
title | string | Title of the page the image comes from. |
imageUrl | string | Direct URL of the full-size image on the source site. |
width | integer | Full-size image width in pixels. |
height | integer | Full-size image height in pixels. |
thumbnailUrl | string | Google thumbnail URL (encrypted-tbn*.gstatic.com). |
thumbnailWidth | integer | Thumbnail width in pixels. |
thumbnailHeight | integer | Thumbnail height in pixels. |
sourcePageUrl | string | URL of the page that shows the image. |
sourceDomain | string | Domain of the source page, e.g. www.walmart.com. |
sourceName | string | Site name as Google shows it, e.g. Walmart. |
fileSize | string | File size as Google shows it, e.g. 80KB (text, not a number). |
dominantColor | string | Main color of the image as rgb(r,g,b). |
countryCode | string | Google country used for the search. |
languageCode | string | Google language used for the search. |
fetchedAt | string | When the Google results page was loaded (ISO 8601, UTC). |
Input settings (10)
The main fields of the input form. With the API you send them as JSON.
| Setting | Name in the API | Type | Example value |
|---|---|---|---|
| Search queries required | queries | array | ["red bicycle"] |
| Images per query | maxImages | integer | 20 |
| Country | countryCode | string | "us" |
| Language | languageCode | string | "en" |
| SafeSearch | safeSearch | boolean | true |
| Image size | size | string | "any" |
| Image type | type | string | "any" |
| Color | color | string | "any" |
| Time | timePeriod | string | "any" |
| Usage rights | usageRights | string | "any" |
Use cases with this tool
Each guide shows all the steps and the other tools.