Nimbryxo Studio

Google Image Search Results & Metadata Scraper

Run a Google Images search and get back full-resolution image URLs with dimensions, thumbnails, source page titles, and the web page each image came from.

Input schema

Input fields, types, required flags, descriptions, defaults, and prefills come from the published definition. Prefill examples are distinct from defaults.

FieldTypeRequiredDescription
queriesarrayoptionalOne or more image search queries. Each query is searched independently. Google operators such as site:, quoted phrases and -exclusions are passed through. The legacy single `query` key is still accepted by the actor code.
maxResultsintegeroptionalMaximum number of image rows to return for each query. Google Images usually runs out around 300-400 results for a query; this is a ceiling, not a guarantee.
minWidthintegeroptionalDrop images narrower than this many pixels. Rows without published dimensions are dropped when this is set. 0 disables the filter.
Show all input fields
FieldTypeRequiredDescription
queriesarrayoptionalOne or more image search queries. Each query is searched independently. Google operators such as site:, quoted phrases and -exclusions are passed through. The legacy single `query` key is still accepted by the actor code.
maxResultsintegeroptionalMaximum number of image rows to return for each query. Google Images usually runs out around 300-400 results for a query; this is a ceiling, not a guarantee.
minWidthintegeroptionalDrop images narrower than this many pixels. Rows without published dimensions are dropped when this is set. 0 disables the filter.
minHeightintegeroptionalDrop images shorter than this many pixels. Rows without published dimensions are dropped when this is set. 0 disables the filter.
countrystringoptionalTwo-letter country used for Google's gl parameter (and Bing's cc parameter). Local sites rank higher in local results.
languagestringoptionalInterface and result language used for Google's hl parameter (and Bing's setlang parameter).
safeSearchstringoptionalGoogle SafeSearch level. 'active' filters explicit images; 'off' does not.
imageSizestringoptionalGoogle Images size filter. The MP values are minimum megapixels. Bing fallback applies the nearest size category and enforces the exact MP floor locally when dimensions are known.
imageColorstringoptionalGoogle Images color filter. 'black_and_white' is grayscale; 'transparent' looks for a transparent background.
imageTypestringoptionalGoogle Images type filter: photographs, faces, clip art, line drawings or animated images.
fileTypestringoptionalOnly images in this format. Google applies this server-side; Bing fallback applies it to the image URL extension locally.
timeRangestringoptionalOnly images Google found within this period. Bing fallback maps 'hour' to its 24-hour window.
usageRightsstringoptionalGoogle's usage-rights labels. These are Google's labels, not a legal guarantee; check the licence on the source page before reuse.
googleOnlybooleanoptionalWhen true, a failed or empty Google search fails that query with a clear status instead of using another engine. The default is false so legacy saved tasks keep working; set this true for a strict Google-only contract.
enableFallbackbooleanoptionalWhen googleOnly is false, allow labelled Bing Images and then DuckDuckGo Images. Every fallback row carries engine, isFallback=true and fallbackReason.

Download the published input schema

View complete JSON
{
  "properties": {
    "country": {
      "default": "US",
      "description": "Two-letter country used for Google's gl parameter (and Bing's cc parameter). Local sites rank higher in local results.",
      "editor": "select",
      "enum": [
        "US",
        "GB",
        "CA",
        "AU",
        "DE",
        "FR",
        "ES",
        "IT",
        "NL",
        "BR",
        "MX",
        "IN",
        "JP",
        "KR",
        "CN",
        "SG",
        "AE",
        "ZA",
        "PL",
        "TR",
        "ID",
        "PK",
        "PH",
        "MY",
        "TH",
        "VN",
        "SE",
        "NO",
        "DK",
        "FI",
        "IE",
        "NZ",
        "CH",
        "AT",
        "BE",
        "PT",
        "GR",
        "CZ",
        "RO",
        "HU",
        "UA",
        "RU",
        "SA",
        "EG",
        "NG",
        "KE",
        "AR",
        "CL",
        "CO",
        "PE",
        "IL",
        "AF",
        "AL",
        "DZ",
        "AS",
        "AD",
        "AO",
        "AI",
        "AQ",
        "AG",
        "AM",
        "AW",
        "AC",
        "AZ",
        "BS",
        "BH",
        "BD",
        "BB",
        "BY",
        "BZ",
        "BJ",
        "BM",
        "BT",
        "BO",
        "BA",
        "BW",
        "BV",
        "IO",
        "VG",
        "BN",
        "BG",
        "BF",
        "BI",
        "KH",
        "CM",
        "IC",
        "CV",
        "BQ",
        "KY",
        "CF",
        "EA",
        "TD",
        "CX",
        "CP",
        "CC",
        "KM",
        "CG",
        "CD",
        "CK",
        "CR",
        "HR",
        "CU",
        "CW",
        "CY",
        "CI",
        "DG",
        "DJ",
        "DM",
        "DO",
        "EC",
        "SV",
        "GQ",
        "ER",
        "EE",
        "SZ",
        "ET",
        "EU",
        "EZ",
        "FK",
        "FO",
        "FJ",
        "GF",
        "PF",
        "TF",
        "GA",
        "GM",
        "GE",
        "GH",
        "GI",
        "GL",
        "GD",
        "GP",
        "GU",
        "GT",
        "GG",
        "GN",
        "GW",
        "GY",
        "HT",
        "HM",
        "HN",
        "HK",
        "IS",
        "IR",
        "IQ",
        "IM",
        "JM",
        "JE",
        "JO",
        "KZ",
        "KI",
        "XK",
        "KW",
        "KG",
        "LA",
        "LV",
        "LB",
        "LS",
        "LR",
        "LY",
        "LI",
        "LT",
        "LU",
        "MO",
        "MG",
        "MW",
        "MV",
        "ML",
        "MT",
        "MH",
        "MQ",
        "MR",
        "MU",
        "YT",
        "FM",
        "MD",
        "MC",
        "MN",
        "ME",
        "MS",
        "MA",
        "MZ",
        "MM",
        "NA",
        "NR",
        "NP",
        "NC",
        "NI",
        "NE",
        "NU",
        "NF",
        "KP",
        "MK",
        "MP",
        "OM",
        "QO",
        "PW",
        "PS",
        "PA",
        "PG",
        "PY",
        "PN",
        "XA",
        "XB",
        "PR",
        "QA",
        "RW",
        "RE",
        "WS",
        "SM",
        "CQ",
        "SN",
        "RS",
        "SC",
        "SL",
        "SX",
        "SK",
        "SI",
        "SB",
        "SO",
        "GS",
        "SS",
        "LK",
        "BL",
        "SH",
        "KN",
        "LC",
        "MF",
        "PM",
        "VC",
        "SD",
        "SR",
        "SJ",
        "SY",
        "ST",
        "TW",
        "TJ",
        "TZ",
        "TL",
        "TG",
        "TK",
        "TO",
        "TT",
        "TA",
        "TN",
        "TM",
        "TC",
        "TV",
        "UM",
        "VI",
        "UG",
        "UN",
        "ZZ",
        "UY",
        "UZ",
        "VU",
        "VA",
        "VE",
        "WF",
        "EH",
        "YE",
        "ZM",
        "ZW",
        "AX"
      ],
      "enumTitles": [
        "United States",
        "United Kingdom",
        "Canada",
        "Australia",
        "Germany",
        "France",
        "Spain",
        "Italy",
        "Netherlands",
        "Brazil",
        "Mexico",
        "India",
        "Japan",
        "South Korea",
        "China",
        "Singapore",
        "United Arab Emirates",
        "South Africa",
        "Poland",
        "Türkiye",
        "Indonesia",
        "Pakistan",
        "Philippines",
        "Malaysia",
        "Thailand",
        "Vietnam",
        "Sweden",
        "Norway",
        "Denmark",
        "Finland",
        "Ireland",
        "New Zealand",
        "Switzerland",
        "Austria",
        "Belgium",
        "Portugal",
        "Greece",
        "Czechia",
        "Romania",
        "Hungary",
        "Ukraine",
        "Russia",
        "Saudi Arabia",
        "Egypt",
        "Nigeria",
        "Kenya",
        "Argentina",
        "Chile",
        "Colombia",
        "Peru",
        "Israel",
        "Afghanistan",
        "Albania",
        "Algeria",
        "American Samoa",
        "Andorra",
        "Angola",
        "Anguilla",
        "Antarctica",
        "Antigua & Barbuda",
        "Armenia",
        "Aruba",
        "Ascension Island",
        "Azerbaijan",
        "Bahamas",
        "Bahrain",
        "Bangladesh",
        "Barbados",
        "Belarus",
        "Belize",
        "Benin",
        "Bermuda",
        "Bhutan",
        "Bolivia",
        "Bosnia & Herzegovina",
        "Botswana",
        "Bouvet Island",
        "British Indian Ocean Territory",
        "British Virgin Islands",
        "Brunei",
        "Bulgaria",
        "Burkina Faso",
        "Burundi",
        "Cambodia",
        "Cameroon",
        "Canary Islands",
        "Cape Verde",
        "Caribbean Netherlands",
        "Cayman Islands",
        "Central African Republic",
        "Ceuta & Melilla",
        "Chad",
        "Christmas Island",
        "Clipperton Island",
        "Cocos (Keeling) Islands",
        "Comoros",
        "Congo - Brazzaville",
        "Congo - Kinshasa",
        "Cook Islands",
        "Costa Rica",
        "Croatia",
        "Cuba",
        "Curaçao",
        "Cyprus",
        "Côte d’Ivoire",
        "Diego Garcia",
        "Djibouti",
        "Dominica",
        "Dominican Republic",
        "Ecuador",
        "El Salvador",
        "Equatorial Guinea",
        "Eritrea",
        "Estonia",
        "Eswatini",
        "Ethiopia",
        "European Union",
        "Eurozone",
        "Falkland Islands",
        "Faroe Islands",
        "Fiji",
        "French Guiana",
        "French Polynesia",
        "French Southern Territories",
        "Gabon",
        "Gambia",
        "Georgia",
        "Ghana",
        "Gibraltar",
        "Greenland",
        "Grenada",
        "Guadeloupe",
        "Guam",
        "Guatemala",
        "Guernsey",
        "Guinea",
        "Guinea-Bissau",
        "Guyana",
        "Haiti",
        "Heard & McDonald Islands",
        "Honduras",
        "Hong Kong SAR China",
        "Iceland",
        "Iran",
        "Iraq",
        "Isle of Man",
        "Jamaica",
        "Jersey",
        "Jordan",
        "Kazakhstan",
        "Kiribati",
        "Kosovo",
        "Kuwait",
        "Kyrgyzstan",
        "Laos",
        "Latvia",
        "Lebanon",
        "Lesotho",
        "Liberia",
        "Libya",
        "Liechtenstein",
        "Lithuania",
        "Luxembourg",
        "Macao SAR China",
        "Madagascar",
        "Malawi",
        "Maldives",
        "Mali",
        "Malta",
        "Marshall Islands",
        "Martinique",
        "Mauritania",
        "Mauritius",
        "Mayotte",
        "Micronesia",
        "Moldova",
        "Monaco",
        "Mongolia",
        "Montenegro",
        "Montserrat",
        "Morocco",
        "Mozambique",
        "Myanmar (Burma)",
        "Namibia",
        "Nauru",
        "Nepal",
        "New Caledonia",
        "Nicaragua",
        "Niger",
        "Niue",
        "Norfolk Island",
        "North Korea",
        "North Macedonia",
        "Northern Mariana Islands",
        "Oman",
        "Outlying Oceania",
        "Palau",
        "Palestinian Territories",
        "Panama",
        "Papua New Guinea",
        "Paraguay",
        "Pitcairn Islands",
        "Pseudo-Accents",
        "Pseudo-Bidi",
        "Puerto Rico",
        "Qatar",
        "Rwanda",
        "Réunion",
        "Samoa",
        "San Marino",
        "Sark",
        "Senegal",
        "Serbia",
        "Seychelles",
        "Sierra Leone",
        "Sint Maarten",
        "Slovakia",
        "Slovenia",
        "Solomon Islands",
        "Somalia",
        "South Georgia & South Sandwich Islands",
        "South Sudan",
        "Sri Lanka",
        "St. Barthélemy",
        "St. Helena",
        "St. Kitts & Nevis",
        "St. Lucia",
        "St. Martin",
        "St. Pierre & Miquelon",
        "St. Vincent & Grenadines",
        "Sudan",
        "Suriname",
        "Svalbard & Jan Mayen",
        "Syria",
        "São Tomé & Príncipe",
        "Taiwan",
        "Tajikistan",
        "Tanzania",
        "Timor-Leste",
        "Togo",
        "Tokelau",
        "Tonga",
        "Trinidad & Tobago",
        "Tristan da Cunha",
        "Tunisia",
        "Turkmenistan",
        "Turks & Caicos Islands",
        "Tuvalu",
        "U.S. Outlying Islands",
        "U.S. Virgin Islands",
        "Uganda",
        "United Nations",
        "Unknown Region",
        "Uruguay",
        "Uzbekistan",
        "Vanuatu",
        "Vatican City",
        "Venezuela",
        "Wallis & Futuna",
        "Western Sahara",
        "Yemen",
        "Zambia",
        "Zimbabwe",
        "Åland Islands"
      ],
      "prefill": "US",
      "title": "Country",
      "type": "string"
    },
    "enableFallback": {
      "default": true,
      "description": "When googleOnly is false, allow labelled Bing Images and then DuckDuckGo Images. Every fallback row carries engine, isFallback=true and fallbackReason.",
      "prefill": true,
      "title": "Enable labelled fallback",
      "type": "boolean"
    },
    "fileType": {
      "default": "",
      "description": "Only images in this format. Google applies this server-side; Bing fallback applies it to the image URL extension locally.",
      "editor": "select",
      "enum": [
        "",
        "jpg",
        "png",
        "gif",
        "bmp",
        "svg",
        "webp",
        "ico"
      ],
      "enumTitles": [
        "Any format",
        "JPEG",
        "PNG",
        "GIF",
        "BMP",
        "SVG",
        "WebP",
        "ICO"
      ],
      "prefill": "",
      "title": "File type",
      "type": "string"
    },
    "googleOnly": {
      "default": false,
      "description": "When true, a failed or empty Google search fails that query with a clear status instead of using another engine. The default is false so legacy saved tasks keep working; set this true for a strict Google-only contract.",
      "prefill": false,
      "title": "Google only",
      "type": "boolean"
    },
    "imageColor": {
      "default": "",
      "description": "Google Images color filter. 'black_and_white' is grayscale; 'transparent' looks for a transparent background.",
      "editor": "select",
      "enum": [
        "",
        "color",
        "black_and_white",
        "transparent",
        "red",
        "orange",
        "yellow",
        "green",
        "teal",
        "blue",
        "purple",
        "pink",
        "white",
        "gray",
        "black",
        "brown"
      ],
      "enumTitles": [
        "Any color",
        "Full color",
        "Black and white",
        "Transparent",
        "Red",
        "Orange",
        "Yellow",
        "Green",
        "Teal",
        "Blue",
        "Purple",
        "Pink",
        "White",
        "Gray",
        "Black",
        "Brown"
      ],
      "prefill": "",
      "title": "Image color",
      "type": "string"
    },
    "imageSize": {
      "default": "",
      "description": "Google Images size filter. The MP values are minimum megapixels. Bing fallback applies the nearest size category and enforces the exact MP floor locally when dimensions are known.",
      "editor": "select",
      "enum": [
        "",
        "large",
        "medium",
        "icon",
        "2mp",
        "4mp",
        "8mp",
        "12mp",
        "20mp",
        "40mp",
        "70mp"
      ],
      "enumTitles": [
        "Any size",
        "Large",
        "Medium",
        "Icon",
        "2 MP or larger",
        "4 MP or larger",
        "8 MP or larger",
        "12 MP or larger",
        "20 MP or larger",
        "40 MP or larger",
        "70 MP or larger"
      ],
      "prefill": "",
      "title": "Image size",
      "type": "string"
    },
    "imageType": {
      "default": "",
      "description": "Google Images type filter: photographs, faces, clip art, line drawings or animated images.",
      "editor": "select",
      "enum": [
        "",
        "photo",
        "face",
        "clipart",
        "lineart",
        "animated"
      ],
      "enumTitles": [
        "Any type",
        "Photo",
        "Face",
        "Clip art",
        "Line drawing",
        "Animated"
      ],
      "prefill": "",
      "title": "Image type",
      "type": "string"
    },
    "language": {
      "default": "en",
      "description": "Interface and result language used for Google's hl parameter (and Bing's setlang parameter).",
      "editor": "select",
      "enum": [
        "en",
        "es",
        "de",
        "fr",
        "pt",
        "pt-BR",
        "it",
        "nl",
        "pl",
        "ru",
        "uk",
        "tr",
        "ar",
        "hi",
        "ur",
        "bn",
        "id",
        "ms",
        "th",
        "vi",
        "ja",
        "ko",
        "zh-CN",
        "zh-TW",
        "ab",
        "aa",
        "af",
        "ak",
        "sq",
        "am",
        "an",
        "hy",
        "as",
        "av",
        "ae",
        "ay",
        "az",
        "bm",
        "ba",
        "eu",
        "be",
        "bi",
        "bs",
        "br",
        "bg",
        "my",
        "ca",
        "ch",
        "ce",
        "zh",
        "cu",
        "cv",
        "kw",
        "co",
        "cr",
        "hr",
        "cs",
        "da",
        "dv",
        "dz",
        "eo",
        "et",
        "ee",
        "fo",
        "fj",
        "fi",
        "ff",
        "gl",
        "lg",
        "ka",
        "el",
        "gn",
        "gu",
        "ht",
        "ha",
        "he",
        "hz",
        "ho",
        "hu",
        "is",
        "io",
        "ig",
        "ia",
        "ie",
        "iu",
        "ik",
        "ga",
        "jv",
        "kl",
        "kn",
        "kr",
        "ks",
        "kk",
        "km",
        "ki",
        "rw",
        "kv",
        "kg",
        "kj",
        "ku",
        "ky",
        "lo",
        "la",
        "lv",
        "li",
        "ln",
        "lt",
        "lu",
        "lb",
        "mk",
        "mg",
        "ml",
        "mt",
        "gv",
        "mr",
        "mh",
        "mn",
        "mi",
        "na",
        "nv",
        "ng",
        "ne",
        "nd",
        "se",
        "no",
        "nb",
        "nn",
        "ny",
        "oc",
        "or",
        "oj",
        "om",
        "os",
        "pi",
        "ps",
        "fa",
        "pa",
        "qu",
        "ro",
        "rm",
        "rn",
        "sm",
        "sg",
        "sa",
        "sc",
        "gd",
        "sr",
        "sh",
        "sn",
        "ii",
        "sd",
        "si",
        "sk",
        "sl",
        "so",
        "nr",
        "st",
        "su",
        "sw",
        "ss",
        "sv",
        "tl",
        "ty",
        "tg",
        "ta",
        "tt",
        "te",
        "bo",
        "ti",
        "to",
        "ts",
        "tn",
        "tk",
        "tw",
        "ug",
        "uz",
        "ve",
        "vo",
        "wa",
        "cy",
        "fy",
        "wo",
        "xh",
        "yi",
        "yo",
        "za",
        "zu"
      ],
      "enumTitles": [
        "English",
        "Spanish",
        "German",
        "French",
        "Portuguese",
        "Portuguese (Brazil)",
        "Italian",
        "Dutch",
        "Polish",
        "Russian",
        "Ukrainian",
        "Turkish",
        "Arabic",
        "Hindi",
        "Urdu",
        "Bangla",
        "Indonesian",
        "Malay",
        "Thai",
        "Vietnamese",
        "Japanese",
        "Korean",
        "Chinese (Simplified)",
        "Chinese (Traditional)",
        "Abkhazian",
        "Afar",
        "Afrikaans",
        "Akan",
        "Albanian",
        "Amharic",
        "Aragonese",
        "Armenian",
        "Assamese",
        "Avaric",
        "Avestan",
        "Aymara",
        "Azerbaijani",
        "Bambara",
        "Bashkir",
        "Basque",
        "Belarusian",
        "Bislama",
        "Bosnian",
        "Breton",
        "Bulgarian",
        "Burmese",
        "Catalan",
        "Chamorro",
        "Chechen",
        "Chinese",
        "Church Slavic",
        "Chuvash",
        "Cornish",
        "Corsican",
        "Cree",
        "Croatian",
        "Czech",
        "Danish",
        "Divehi",
        "Dzongkha",
        "Esperanto",
        "Estonian",
        "Ewe",
        "Faroese",
        "Fijian",
        "Finnish",
        "Fula",
        "Galician",
        "Ganda",
        "Georgian",
        "Greek",
        "Guarani",
        "Gujarati",
        "Haitian Creole",
        "Hausa",
        "Hebrew",
        "Herero",
        "Hiri Motu",
        "Hungarian",
        "Icelandic",
        "Ido",
        "Igbo",
        "Interlingua",
        "Interlingue",
        "Inuktitut",
        "Inupiaq",
        "Irish",
        "Javanese",
        "Kalaallisut",
        "Kannada",
        "Kanuri",
        "Kashmiri",
        "Kazakh",
        "Khmer",
        "Kikuyu",
        "Kinyarwanda",
        "Komi",
        "Kongo",
        "Kuanyama",
        "Kurdish",
        "Kyrgyz",
        "Lao",
        "Latin",
        "Latvian",
        "Limburgish",
        "Lingala",
        "Lithuanian",
        "Luba-Katanga",
        "Luxembourgish",
        "Macedonian",
        "Malagasy",
        "Malayalam",
        "Maltese",
        "Manx",
        "Marathi",
        "Marshallese",
        "Mongolian",
        "Māori",
        "Nauru",
        "Navajo",
        "Ndonga",
        "Nepali",
        "North Ndebele",
        "Northern Sami",
        "Norwegian",
        "Norwegian Bokmål",
        "Norwegian Nynorsk",
        "Nyanja",
        "Occitan",
        "Odia",
        "Ojibwa",
        "Oromo",
        "Ossetic",
        "Pali",
        "Pashto",
        "Persian",
        "Punjabi",
        "Quechua",
        "Romanian",
        "Romansh",
        "Rundi",
        "Samoan",
        "Sango",
        "Sanskrit",
        "Sardinian",
        "Scottish Gaelic",
        "Serbian",
        "Serbo-Croatian",
        "Shona",
        "Sichuan Yi",
        "Sindhi",
        "Sinhala",
        "Slovak",
        "Slovenian",
        "Somali",
        "South Ndebele",
        "Southern Sotho",
        "Sundanese",
        "Swahili",
        "Swati",
        "Swedish",
        "Tagalog",
        "Tahitian",
        "Tajik",
        "Tamil",
        "Tatar",
        "Telugu",
        "Tibetan",
        "Tigrinya",
        "Tongan",
        "Tsonga",
        "Tswana",
        "Turkmen",
        "Twi",
        "Uyghur",
        "Uzbek",
        "Venda",
        "Volapük",
        "Walloon",
        "Welsh",
        "Western Frisian",
        "Wolof",
        "Xhosa",
        "Yiddish",
        "Yoruba",
        "Zhuang",
        "Zulu"
      ],
      "prefill": "en",
      "title": "Language",
      "type": "string"
    },
    "maxResults": {
      "default": 100,
      "description": "Maximum number of image rows to return for each query. Google Images usually runs out around 300-400 results for a query; this is a ceiling, not a guarantee.",
      "maximum": 500,
      "minimum": 1,
      "prefill": 3,
      "title": "Max results per query",
      "type": "integer"
    },
    "minHeight": {
      "default": 0,
      "description": "Drop images shorter than this many pixels. Rows without published dimensions are dropped when this is set. 0 disables the filter.",
      "maximum": 10000,
      "minimum": 0,
      "prefill": 0,
      "title": "Minimum image height",
      "type": "integer"
    },
    "minWidth": {
      "default": 0,
      "description": "Drop images narrower than this many pixels. Rows without published dimensions are dropped when this is set. 0 disables the filter.",
      "maximum": 10000,
      "minimum": 0,
      "prefill": 0,
      "title": "Minimum image width",
      "type": "integer"
    },
    "queries": {
      "description": "One or more image search queries. Each query is searched independently. Google operators such as site:, quoted phrases and -exclusions are passed through. The legacy single `query` key is still accepted by the actor code.",
      "editor": "stringList",
      "items": {
        "type": "string"
      },
      "maxItems": 50,
      "minItems": 1,
      "prefill": [
        "Alfons Mucha"
      ],
      "title": "Search queries",
      "type": "array"
    },
    "safeSearch": {
      "default": "active",
      "description": "Google SafeSearch level. 'active' filters explicit images; 'off' does not.",
      "editor": "select",
      "enum": [
        "active",
        "off"
      ],
      "enumTitles": [
        "Filter explicit results (active)",
        "Do not filter (off)"
      ],
      "prefill": "active",
      "title": "Safe search",
      "type": "string"
    },
    "timeRange": {
      "default": "",
      "description": "Only images Google found within this period. Bing fallback maps 'hour' to its 24-hour window.",
      "editor": "select",
      "enum": [
        "",
        "hour",
        "day",
        "week",
        "month",
        "year"
      ],
      "enumTitles": [
        "Any time",
        "Past hour",
        "Past 24 hours",
        "Past week",
        "Past month",
        "Past year"
      ],
      "prefill": "",
      "title": "Time range",
      "type": "string"
    },
    "usageRights": {
      "default": "",
      "description": "Google's usage-rights labels. These are Google's labels, not a legal guarantee; check the licence on the source page before reuse.",
      "editor": "select",
      "enum": [
        "",
        "free_to_use_or_share",
        "free_to_use_or_share_commercially",
        "free_to_use_share_or_modify",
        "free_to_use_share_or_modify_commercially"
      ],
      "enumTitles": [
        "Any usage rights",
        "Free to use or share",
        "Free to use or share, even commercially",
        "Free to use, share or modify",
        "Free to use, share or modify, even commercially"
      ],
      "prefill": "",
      "title": "Usage rights",
      "type": "string"
    }
  },
  "schemaVersion": 1,
  "title": "Google Images Scraper Input",
  "type": "object"
}

Output schema

Published result links and storage locations. This schema is not an exhaustive contract for every field in a dataset record.

FieldTypeRequiredDescription
imagesstringoptionalDataset containing all scraped image rows. Every row states its engine and whether imageUrl is an original, a thumbnail or a crawler-only URL.
summarystringoptionalPer-run and per-query resultsRequested, resultsReturned, pagesFetched, stopReason and fallbackAttempts.

Download the published output schema

View complete JSON
{
  "actorOutputSchemaVersion": 1,
  "description": "One dataset row per image with original/thumbnail provenance, dimensions when stated, source page metadata, stable image ID and a labelled engine. Per-query completeness telemetry is in the SUMMARY key-value record.",
  "properties": {
    "images": {
      "description": "Dataset containing all scraped image rows. Every row states its engine and whether imageUrl is an original, a thumbnail or a crawler-only URL.",
      "template": "{{links.apiDefaultDatasetUrl}}/items",
      "title": "Scraped Images",
      "type": "string"
    },
    "summary": {
      "description": "Per-run and per-query resultsRequested, resultsReturned, pagesFetched, stopReason and fallbackAttempts.",
      "template": "{{links.apiDefaultKeyValueStoreUrl}}/records/SUMMARY",
      "title": "Completeness summary",
      "type": "string"
    }
  },
  "title": "Google Image Search Results & Metadata Scraper Output",
  "type": "object"
}

Dataset schema

Published dataset views and any declared field definitions. A view can select only a subset of the returned record fields.

Download the published dataset schema

View complete JSON
{
  "actorSpecification": 1,
  "fields": {
    "properties": {
      "aspectRatio": {
        "description": "width divided by height, rounded to three decimals",
        "nullable": true,
        "type": "number"
      },
      "contentUrl": {
        "description": "URL of the web page containing the image",
        "nullable": true,
        "type": "string"
      },
      "engine": {
        "description": "The engine that actually produced this row",
        "enum": [
          "google",
          "bing",
          "duckduckgo",
          "unknown"
        ],
        "type": "string"
      },
      "fallbackReason": {
        "description": "Why fallback was used, e.g. google_captcha",
        "nullable": true,
        "type": "string"
      },
      "fetchedAt": {
        "description": "ISO-8601 UTC timestamp when the query was fetched",
        "nullable": true,
        "type": "string"
      },
      "fileFormat": {
        "description": "Image format derived from the URL extension, when known",
        "nullable": true,
        "type": "string"
      },
      "googleUrl": {
        "description": "Google imgres reference URL, when the row came from Google",
        "nullable": true,
        "type": "string"
      },
      "hasOriginal": {
        "description": "True when imageUrl is an original source-site URL",
        "type": "boolean"
      },
      "imageHeight": {
        "description": "Original image height in pixels, when the engine states it",
        "nullable": true,
        "type": "integer"
      },
      "imageId": {
        "description": "Stable ID derived from the image URL or Google result key",
        "nullable": true,
        "type": "string"
      },
      "imageUrl": {
        "description": "Best available image URL; inspect imageUrlType to see whether it is the original or a thumbnail",
        "type": "string"
      },
      "imageUrlType": {
        "description": "Whether imageUrl is the source original, an engine thumbnail, a crawler-only URL, or unknown",
        "enum": [
          "original",
          "thumbnail",
          "crawler_only",
          "unknown"
        ],
        "type": "string"
      },
      "imageWidth": {
        "description": "Original image width in pixels, when the engine states it",
        "nullable": true,
        "type": "integer"
      },
      "isCrawlerOnly": {
        "description": "True when imageUrl is hosted or cached by a search engine rather than the source site",
        "type": "boolean"
      },
      "isFallback": {
        "description": "True when the row came from a fallback engine rather than Google",
        "type": "boolean"
      },
      "orientation": {
        "description": "landscape, portrait or square, derived from the stated dimensions",
        "nullable": true,
        "type": "string"
      },
      "origin": {
        "description": "Legacy field: domain of the source page, or of the image host when no page is known",
        "nullable": true,
        "type": "string"
      },
      "page": {
        "description": "Result page or scroll batch the row was read from",
        "nullable": true,
        "type": "integer"
      },
      "position": {
        "description": "1-based rank within the query's returned rows",
        "type": "integer"
      },
      "query": {
        "description": "The search query that produced this row",
        "type": "string"
      },
      "retrievalMethod": {
        "description": "How the row was read, e.g. google_dom_sidepanel or bing_async_html",
        "nullable": true,
        "type": "string"
      },
      "searchUrl": {
        "description": "The search URL used for this query",
        "nullable": true,
        "type": "string"
      },
      "siteName": {
        "description": "Site name the engine displays, or the source domain when no display name is available",
        "nullable": true,
        "type": "string"
      },
      "sourceDomain": {
        "description": "Hostname of the source page containing the image",
        "nullable": true,
        "type": "string"
      },
      "sourcePageTitle": {
        "description": "Title of the source page containing the image",
        "nullable": true,
        "type": "string"
      },
      "thumbnailHeight": {
        "description": "Thumbnail height in pixels, when the engine states it",
        "nullable": true,
        "type": "integer"
      },
      "thumbnailUrl": {
        "description": "URL of the engine's cached thumbnail",
        "nullable": true,
        "type": "string"
      },
      "thumbnailWidth": {
        "description": "Thumbnail width in pixels, when the engine states it",
        "nullable": true,
        "type": "integer"
      },
      "title": {
        "description": "Page title shown for the image, when it is not a generic placeholder",
        "nullable": true,
        "type": "string"
      }
    },
    "type": "object"
  },
  "title": "Google Images",
  "views": {
    "overview": {
      "display": {
        "component": "table",
        "properties": {
          "engine": {
            "format": "text",
            "label": "Engine"
          },
          "imageHeight": {
            "format": "number",
            "label": "Height"
          },
          "imageUrl": {
            "format": "text",
            "label": "Image URL"
          },
          "imageUrlType": {
            "format": "text",
            "label": "URL type"
          },
          "imageWidth": {
            "format": "number",
            "label": "Width"
          },
          "position": {
            "format": "number",
            "label": "Position"
          },
          "query": {
            "format": "text",
            "label": "Query"
          },
          "sourceDomain": {
            "format": "text",
            "label": "Source domain"
          },
          "title": {
            "format": "text",
            "label": "Title"
          }
        }
      },
      "title": "Images",
      "transformation": {
        "fields": [
          "query",
          "position",
          "engine",
          "imageUrlType",
          "title",
          "sourceDomain",
          "imageUrl",
          "imageWidth",
          "imageHeight"
        ]
      }
    },
    "provenance": {
      "display": {
        "component": "table",
        "properties": {
          "engine": {
            "format": "text",
            "label": "Engine"
          },
          "fallbackReason": {
            "format": "text",
            "label": "Fallback reason"
          },
          "fetchedAt": {
            "format": "text",
            "label": "Fetched at"
          },
          "hasOriginal": {
            "format": "boolean",
            "label": "Has original"
          },
          "imageId": {
            "format": "text",
            "label": "Image ID"
          },
          "imageUrlType": {
            "format": "text",
            "label": "URL type"
          },
          "isCrawlerOnly": {
            "format": "boolean",
            "label": "Crawler only"
          },
          "isFallback": {
            "format": "boolean",
            "label": "Fallback"
          },
          "page": {
            "format": "number",
            "label": "Page"
          },
          "position": {
            "format": "number",
            "label": "Position"
          },
          "query": {
            "format": "text",
            "label": "Query"
          },
          "retrievalMethod": {
            "format": "text",
            "label": "Method"
          },
          "searchUrl": {
            "format": "text",
            "label": "Search URL"
          }
        }
      },
      "title": "Provenance",
      "transformation": {
        "fields": [
          "query",
          "position",
          "page",
          "engine",
          "retrievalMethod",
          "isFallback",
          "fallbackReason",
          "imageId",
          "imageUrlType",
          "isCrawlerOnly",
          "hasOriginal",
          "searchUrl",
          "fetchedAt"
        ]
      }
    }
  }
}

Key-value schema

Published key-value store definitions, when provided by this build.

This definition is not present in the default published build. See the published README for available documentation.

Published README

Read the full published documentation

Google Image Search Results & Metadata Scraper

Search Google Images for one or many queries and get one row per image, with an honest label on what each URL actually is. Google is tried first. If Google blocks or returns nothing, the default path returns explicitly labelled Bing/DuckDuckGo rows; set googleOnly=true for a strict Google-only contract that fails instead.

What this actor does

  • Runs one or more Google Images queries in a single run.
  • Exposes Google's own size, colour, type, file-type, time and usage-rights filters, plus country, language and SafeSearch.
  • Captures the original image URL when Google exposes it, and tells you when it only has a thumbnail (imageUrlType, isCrawlerOnly, hasOriginal).
  • Records the source page, source domain, site name, result position and page/scroll batch.
  • Gives every row a stable imageId derived from the image URL or Google's result key.
  • Writes a SUMMARY key-value record with per-query resultsRequested, resultsReturned, pagesFetched, stopReason and fallbackAttempts.

Google-first with labelled fallback

The default contract is labelled fallback: googleOnly is false and enableFallback is true. Google is always tried first. If Google is blocked or has no results, the actor tries Bing Images (plain HTTP) and DuckDuckGo Images, in that order. Every fallback row carries:

  • engine - bing, duckduckgo, or google
  • isFallback - true for every fallback row
  • fallbackReason - why Google was not used, e.g. google_captcha

Fallback is never silent and never changes the engine value. A Bing row is always labelled Bing.

For a strict Google-only run, set googleOnly=true and enableFallback=false. If Google is blocked or has no results, the run fails with an explicit status instead of returning another engine.

Output fields

Every row keeps the legacy field names and adds provenance and completeness fields. Empty optional values are omitted; null and sentinel values are never written.

Field Meaning
query Query that produced the row
position 1-based rank within the query's returned rows
page Result page or scroll batch the row was read from
engine google, bing, duckduckgo or unknown
retrievalMethod How the row was read, e.g. google_dom_sidepanel, google_dom_thumbnail, bing_async_html
isFallback true when the row came from a fallback engine
fallbackReason Why fallback was used
searchUrl Search URL used for this query
fetchedAt ISO-8601 UTC fetch timestamp
imageId Stable ID derived from the image URL or Google result key
imageUrl Best available image URL
imageUrlType original, thumbnail, crawler_only or unknown
isCrawlerOnly true when imageUrl is a search-engine cached/thumbnail URL
hasOriginal true when imageUrl is the source site's original
imageWidth, imageHeight Original dimensions, only when the engine states them
aspectRatio, orientation Derived from the stated dimensions
fileFormat Format from the URL extension, when known
thumbnailUrl Engine-cached thumbnail
thumbnailWidth, thumbnailHeight Thumbnail dimensions, when stated
title Page title shown for the image, when it is not a generic placeholder
sourcePageTitle Title of the source page
origin Legacy source domain field
sourceDomain Hostname of the source page
siteName Site name shown by the engine, or the source domain
contentUrl Page containing the image
googleUrl Google imgres reference URL, when applicable

imageUrl is the best URL available, not a promise that it is the original. Check imageUrlType or hasOriginal before treating it as full resolution.

Input

At least one queries entry (or the legacy query string) is required. Apify's validator cannot express "one of", so the actor fails clearly when neither is present.

Field Type Default Description
queries array - One or more image search queries. The legacy query string is still accepted in code.
maxResults integer 100 Maximum rows per query, 1-500. This is a ceiling, not a guarantee.
minWidth integer 0 Drop images narrower than this many pixels; 0 disables. Rows without dimensions are dropped when set.
minHeight integer 0 Drop images shorter than this many pixels; 0 disables.
country select US Two-letter country code for Google gl / Bing cc
language select en Language code for Google hl / Bing setlang
safeSearch select active active or off
imageSize select any large, medium, icon, or a minimum megapixel bucket from 2mp to 70mp
imageColor select any Full colour, black and white, transparent, or a specific colour
imageType select any Photo, face, clip art, line drawing, animated
fileType select any JPEG, PNG, GIF, BMP, SVG, WebP, ICO
timeRange select any Past hour, day, week, month or year
usageRights select any Google's four usage-rights labels
googleOnly boolean false Fail clearly instead of using fallback
enableFallback boolean true Allow labelled Bing/DuckDuckGo fallback when googleOnly is false

The legacy query and maxResultsPerQuery keys are read in code for saved tasks. There is no proxy field in the schema; the actor never requires a user-supplied proxy or API key.

Example input

Strict Google-only query:

{
  "queries": ["Alfons Mucha"],
  "maxResults": 20,
  "country": "US",
  "language": "en",
  "googleOnly": true
}

Labelled fallback allowed, with filters:

{
  "queries": ["sunset landscape", "modern architecture"],
  "maxResults": 100,
  "country": "DE",
  "language": "de",
  "imageSize": "large",
  "imageColor": "blue",
  "imageType": "photo",
  "safeSearch": "active",
  "googleOnly": false,
  "enableFallback": true
}

How to read a run

  • A row with engine: "google" and imageUrlType: "original" is a source-site image URL.
  • A row with engine: "google" and imageUrlType: "thumbnail" is Google's cached thumbnail; the original was not exposed for that card.
  • A row with engine: "bing" is a labelled fallback row. Bing exposes original image URLs and source pages directly.
  • The SUMMARY key-value record tells you how many rows were requested and returned per query, how many pages were read, why reading stopped, and which fallback engines were attempted.

Limits and honest notes

  • Google Images typically runs out at roughly 300-400 results per query. Asking for 500 returns what Google has.
  • Google sometimes exposes only thumbnails in the results DOM. The actor labels those rows thumbnail rather than pretending they are originals. It attempts the side panel for up to 20 cards per query to recover originals.
  • A Google CAPTCHA or "unusual traffic" page is reported as google_captcha, not as zero results.
  • fileType is applied by Google server-side. On Bing fallback it is applied to the image URL extension locally, so URLs without a recognisable extension are excluded when this filter is set.
  • Bing's time filter has no "past hour" bucket; the hour option uses Bing's 24-hour window on fallback.
  • The DuckDuckGo fallback reads its first image JSON batch only; it is a last resort after Bing. It has no size, colour, type, time or usage-rights facet, so it is skipped when one of those filters is set instead of returning rows that violate the filter.
  • minWidth and minHeight are applied to every engine. Rows with no published dimensions are dropped when either bound is set.
  • dominantColor and relatedSearches come from Bing's response. Google does not expose a reliable dominant colour in its search metadata; file size is not shipped because it would require downloading or probing every image.
  • Usage-rights labels come from the search engine. They are not a legal guarantee; check the licence on contentUrl before reuse. Bing's licence buckets do not match Google's four labels one-to-one, so fallback rows use the nearest Bing bucket.
  • New fields are additive. Existing field names (query, imageUrl, imageWidth, imageHeight, thumbnailUrl, thumbnailWidth, thumbnailHeight, title, origin, contentUrl) are preserved.

FAQ

Why did a Google-only run fail? Google returned a CAPTCHA, an error page, or no results. In Google-only mode that is a real failure and is reported as one. Set googleOnly to false and enableFallback to true if you want labelled Bing/DuckDuckGo rows instead.

Why is imageUrlType sometimes thumbnail? The results page did not expose the source image URL for that card. The actor will not label a Google thumbnail as an original.

Why are dimensions missing on some rows? The engine did not state them. The actor omits the field rather than writing 0 or guessing.

Does this download images? No. It returns URLs and metadata. Fetch the image files yourself.

Is this affiliated with Google? No. It reads public image search results as an independent third-party tool.

Can I use the same input as before? Yes for the common case: a saved task with query and maxResults still runs because the legacy keys are mapped in code. Batch users should move to queries and maxResults (per query).

Python quickstart

Use a schema-derived input and the Python standard library to start a run. An Apify account and token are required for execution.

Open the step-by-step Python guide →

Source build cKnlChhWEIvPfT67X. Documentation is regenerated from the default published build; private drafts are not included.