{
  "data": {
    "id": "cKnlChhWEIvPfT67X",
    "actId": "iKDkm4yHl5raSnWvW",
    "userId": "IYgBDiXtHOijAaUel",
    "startedAt": "2026-10-31T05:58:33.159Z",
    "finishedAt": "2026-10-31T06:01:57.735Z",
    "status": "SUCCEEDED",
    "meta": {
      "origin": "CLI"
    },
    "stats": {
      "durationMillis": 204513,
      "runTimeSecs": 204.513,
      "computeUnits": 0.22723666666666667,
      "imageSizeBytes": 9388965888
    },
    "options": {
      "useCache": true,
      "betaPackages": false,
      "memoryMbytes": 4096,
      "diskMbytes": 8192
    },
    "createdByOrganizationMemberUserId": "QYo53EZkJk0prePWY",
    "exitCode": 0,
    "inputSchema": "{\n  \"title\": \"Google Images Scraper Input\",\n  \"type\": \"object\",\n  \"schemaVersion\": 1,\n  \"properties\": {\n    \"queries\": {\n      \"title\": \"Search queries\",\n      \"type\": \"array\",\n      \"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.\",\n      \"editor\": \"stringList\",\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"minItems\": 1,\n      \"maxItems\": 50,\n      \"prefill\": [\n        \"Alfons Mucha\"\n      ]\n    },\n    \"maxResults\": {\n      \"title\": \"Max results per query\",\n      \"type\": \"integer\",\n      \"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.\",\n      \"minimum\": 1,\n      \"maximum\": 500,\n      \"default\": 100,\n      \"prefill\": 3\n    },\n    \"minWidth\": {\n      \"title\": \"Minimum image width\",\n      \"type\": \"integer\",\n      \"description\": \"Drop images narrower than this many pixels. Rows without published dimensions are dropped when this is set. 0 disables the filter.\",\n      \"minimum\": 0,\n      \"maximum\": 10000,\n      \"default\": 0,\n      \"prefill\": 0\n    },\n    \"minHeight\": {\n      \"title\": \"Minimum image height\",\n      \"type\": \"integer\",\n      \"description\": \"Drop images shorter than this many pixels. Rows without published dimensions are dropped when this is set. 0 disables the filter.\",\n      \"minimum\": 0,\n      \"maximum\": 10000,\n      \"default\": 0,\n      \"prefill\": 0\n    },\n    \"country\": {\n      \"title\": \"Country\",\n      \"type\": \"string\",\n      \"description\": \"Two-letter country used for Google's gl parameter (and Bing's cc parameter). Local sites rank higher in local results.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"US\",\n        \"GB\",\n        \"CA\",\n        \"AU\",\n        \"DE\",\n        \"FR\",\n        \"ES\",\n        \"IT\",\n        \"NL\",\n        \"BR\",\n        \"MX\",\n        \"IN\",\n        \"JP\",\n        \"KR\",\n        \"CN\",\n        \"SG\",\n        \"AE\",\n        \"ZA\",\n        \"PL\",\n        \"TR\",\n        \"ID\",\n        \"PK\",\n        \"PH\",\n        \"MY\",\n        \"TH\",\n        \"VN\",\n        \"SE\",\n        \"NO\",\n        \"DK\",\n        \"FI\",\n        \"IE\",\n        \"NZ\",\n        \"CH\",\n        \"AT\",\n        \"BE\",\n        \"PT\",\n        \"GR\",\n        \"CZ\",\n        \"RO\",\n        \"HU\",\n        \"UA\",\n        \"RU\",\n        \"SA\",\n        \"EG\",\n        \"NG\",\n        \"KE\",\n        \"AR\",\n        \"CL\",\n        \"CO\",\n        \"PE\",\n        \"IL\",\n        \"AF\",\n        \"AL\",\n        \"DZ\",\n        \"AS\",\n        \"AD\",\n        \"AO\",\n        \"AI\",\n        \"AQ\",\n        \"AG\",\n        \"AM\",\n        \"AW\",\n        \"AC\",\n        \"AZ\",\n        \"BS\",\n        \"BH\",\n        \"BD\",\n        \"BB\",\n        \"BY\",\n        \"BZ\",\n        \"BJ\",\n        \"BM\",\n        \"BT\",\n        \"BO\",\n        \"BA\",\n        \"BW\",\n        \"BV\",\n        \"IO\",\n        \"VG\",\n        \"BN\",\n        \"BG\",\n        \"BF\",\n        \"BI\",\n        \"KH\",\n        \"CM\",\n        \"IC\",\n        \"CV\",\n        \"BQ\",\n        \"KY\",\n        \"CF\",\n        \"EA\",\n        \"TD\",\n        \"CX\",\n        \"CP\",\n        \"CC\",\n        \"KM\",\n        \"CG\",\n        \"CD\",\n        \"CK\",\n        \"CR\",\n        \"HR\",\n        \"CU\",\n        \"CW\",\n        \"CY\",\n        \"CI\",\n        \"DG\",\n        \"DJ\",\n        \"DM\",\n        \"DO\",\n        \"EC\",\n        \"SV\",\n        \"GQ\",\n        \"ER\",\n        \"EE\",\n        \"SZ\",\n        \"ET\",\n        \"EU\",\n        \"EZ\",\n        \"FK\",\n        \"FO\",\n        \"FJ\",\n        \"GF\",\n        \"PF\",\n        \"TF\",\n        \"GA\",\n        \"GM\",\n        \"GE\",\n        \"GH\",\n        \"GI\",\n        \"GL\",\n        \"GD\",\n        \"GP\",\n        \"GU\",\n        \"GT\",\n        \"GG\",\n        \"GN\",\n        \"GW\",\n        \"GY\",\n        \"HT\",\n        \"HM\",\n        \"HN\",\n        \"HK\",\n        \"IS\",\n        \"IR\",\n        \"IQ\",\n        \"IM\",\n        \"JM\",\n        \"JE\",\n        \"JO\",\n        \"KZ\",\n        \"KI\",\n        \"XK\",\n        \"KW\",\n        \"KG\",\n        \"LA\",\n        \"LV\",\n        \"LB\",\n        \"LS\",\n        \"LR\",\n        \"LY\",\n        \"LI\",\n        \"LT\",\n        \"LU\",\n        \"MO\",\n        \"MG\",\n        \"MW\",\n        \"MV\",\n        \"ML\",\n        \"MT\",\n        \"MH\",\n        \"MQ\",\n        \"MR\",\n        \"MU\",\n        \"YT\",\n        \"FM\",\n        \"MD\",\n        \"MC\",\n        \"MN\",\n        \"ME\",\n        \"MS\",\n        \"MA\",\n        \"MZ\",\n        \"MM\",\n        \"NA\",\n        \"NR\",\n        \"NP\",\n        \"NC\",\n        \"NI\",\n        \"NE\",\n        \"NU\",\n        \"NF\",\n        \"KP\",\n        \"MK\",\n        \"MP\",\n        \"OM\",\n        \"QO\",\n        \"PW\",\n        \"PS\",\n        \"PA\",\n        \"PG\",\n        \"PY\",\n        \"PN\",\n        \"XA\",\n        \"XB\",\n        \"PR\",\n        \"QA\",\n        \"RW\",\n        \"RE\",\n        \"WS\",\n        \"SM\",\n        \"CQ\",\n        \"SN\",\n        \"RS\",\n        \"SC\",\n        \"SL\",\n        \"SX\",\n        \"SK\",\n        \"SI\",\n        \"SB\",\n        \"SO\",\n        \"GS\",\n        \"SS\",\n        \"LK\",\n        \"BL\",\n        \"SH\",\n        \"KN\",\n        \"LC\",\n        \"MF\",\n        \"PM\",\n        \"VC\",\n        \"SD\",\n        \"SR\",\n        \"SJ\",\n        \"SY\",\n        \"ST\",\n        \"TW\",\n        \"TJ\",\n        \"TZ\",\n        \"TL\",\n        \"TG\",\n        \"TK\",\n        \"TO\",\n        \"TT\",\n        \"TA\",\n        \"TN\",\n        \"TM\",\n        \"TC\",\n        \"TV\",\n        \"UM\",\n        \"VI\",\n        \"UG\",\n        \"UN\",\n        \"ZZ\",\n        \"UY\",\n        \"UZ\",\n        \"VU\",\n        \"VA\",\n        \"VE\",\n        \"WF\",\n        \"EH\",\n        \"YE\",\n        \"ZM\",\n        \"ZW\",\n        \"AX\"\n      ],\n      \"enumTitles\": [\n        \"United States\",\n        \"United Kingdom\",\n        \"Canada\",\n        \"Australia\",\n        \"Germany\",\n        \"France\",\n        \"Spain\",\n        \"Italy\",\n        \"Netherlands\",\n        \"Brazil\",\n        \"Mexico\",\n        \"India\",\n        \"Japan\",\n        \"South Korea\",\n        \"China\",\n        \"Singapore\",\n        \"United Arab Emirates\",\n        \"South Africa\",\n        \"Poland\",\n        \"Türkiye\",\n        \"Indonesia\",\n        \"Pakistan\",\n        \"Philippines\",\n        \"Malaysia\",\n        \"Thailand\",\n        \"Vietnam\",\n        \"Sweden\",\n        \"Norway\",\n        \"Denmark\",\n        \"Finland\",\n        \"Ireland\",\n        \"New Zealand\",\n        \"Switzerland\",\n        \"Austria\",\n        \"Belgium\",\n        \"Portugal\",\n        \"Greece\",\n        \"Czechia\",\n        \"Romania\",\n        \"Hungary\",\n        \"Ukraine\",\n        \"Russia\",\n        \"Saudi Arabia\",\n        \"Egypt\",\n        \"Nigeria\",\n        \"Kenya\",\n        \"Argentina\",\n        \"Chile\",\n        \"Colombia\",\n        \"Peru\",\n        \"Israel\",\n        \"Afghanistan\",\n        \"Albania\",\n        \"Algeria\",\n        \"American Samoa\",\n        \"Andorra\",\n        \"Angola\",\n        \"Anguilla\",\n        \"Antarctica\",\n        \"Antigua & Barbuda\",\n        \"Armenia\",\n        \"Aruba\",\n        \"Ascension Island\",\n        \"Azerbaijan\",\n        \"Bahamas\",\n        \"Bahrain\",\n        \"Bangladesh\",\n        \"Barbados\",\n        \"Belarus\",\n        \"Belize\",\n        \"Benin\",\n        \"Bermuda\",\n        \"Bhutan\",\n        \"Bolivia\",\n        \"Bosnia & Herzegovina\",\n        \"Botswana\",\n        \"Bouvet Island\",\n        \"British Indian Ocean Territory\",\n        \"British Virgin Islands\",\n        \"Brunei\",\n        \"Bulgaria\",\n        \"Burkina Faso\",\n        \"Burundi\",\n        \"Cambodia\",\n        \"Cameroon\",\n        \"Canary Islands\",\n        \"Cape Verde\",\n        \"Caribbean Netherlands\",\n        \"Cayman Islands\",\n        \"Central African Republic\",\n        \"Ceuta & Melilla\",\n        \"Chad\",\n        \"Christmas Island\",\n        \"Clipperton Island\",\n        \"Cocos (Keeling) Islands\",\n        \"Comoros\",\n        \"Congo - Brazzaville\",\n        \"Congo - Kinshasa\",\n        \"Cook Islands\",\n        \"Costa Rica\",\n        \"Croatia\",\n        \"Cuba\",\n        \"Curaçao\",\n        \"Cyprus\",\n        \"Côte d’Ivoire\",\n        \"Diego Garcia\",\n        \"Djibouti\",\n        \"Dominica\",\n        \"Dominican Republic\",\n        \"Ecuador\",\n        \"El Salvador\",\n        \"Equatorial Guinea\",\n        \"Eritrea\",\n        \"Estonia\",\n        \"Eswatini\",\n        \"Ethiopia\",\n        \"European Union\",\n        \"Eurozone\",\n        \"Falkland Islands\",\n        \"Faroe Islands\",\n        \"Fiji\",\n        \"French Guiana\",\n        \"French Polynesia\",\n        \"French Southern Territories\",\n        \"Gabon\",\n        \"Gambia\",\n        \"Georgia\",\n        \"Ghana\",\n        \"Gibraltar\",\n        \"Greenland\",\n        \"Grenada\",\n        \"Guadeloupe\",\n        \"Guam\",\n        \"Guatemala\",\n        \"Guernsey\",\n        \"Guinea\",\n        \"Guinea-Bissau\",\n        \"Guyana\",\n        \"Haiti\",\n        \"Heard & McDonald Islands\",\n        \"Honduras\",\n        \"Hong Kong SAR China\",\n        \"Iceland\",\n        \"Iran\",\n        \"Iraq\",\n        \"Isle of Man\",\n        \"Jamaica\",\n        \"Jersey\",\n        \"Jordan\",\n        \"Kazakhstan\",\n        \"Kiribati\",\n        \"Kosovo\",\n        \"Kuwait\",\n        \"Kyrgyzstan\",\n        \"Laos\",\n        \"Latvia\",\n        \"Lebanon\",\n        \"Lesotho\",\n        \"Liberia\",\n        \"Libya\",\n        \"Liechtenstein\",\n        \"Lithuania\",\n        \"Luxembourg\",\n        \"Macao SAR China\",\n        \"Madagascar\",\n        \"Malawi\",\n        \"Maldives\",\n        \"Mali\",\n        \"Malta\",\n        \"Marshall Islands\",\n        \"Martinique\",\n        \"Mauritania\",\n        \"Mauritius\",\n        \"Mayotte\",\n        \"Micronesia\",\n        \"Moldova\",\n        \"Monaco\",\n        \"Mongolia\",\n        \"Montenegro\",\n        \"Montserrat\",\n        \"Morocco\",\n        \"Mozambique\",\n        \"Myanmar (Burma)\",\n        \"Namibia\",\n        \"Nauru\",\n        \"Nepal\",\n        \"New Caledonia\",\n        \"Nicaragua\",\n        \"Niger\",\n        \"Niue\",\n        \"Norfolk Island\",\n        \"North Korea\",\n        \"North Macedonia\",\n        \"Northern Mariana Islands\",\n        \"Oman\",\n        \"Outlying Oceania\",\n        \"Palau\",\n        \"Palestinian Territories\",\n        \"Panama\",\n        \"Papua New Guinea\",\n        \"Paraguay\",\n        \"Pitcairn Islands\",\n        \"Pseudo-Accents\",\n        \"Pseudo-Bidi\",\n        \"Puerto Rico\",\n        \"Qatar\",\n        \"Rwanda\",\n        \"Réunion\",\n        \"Samoa\",\n        \"San Marino\",\n        \"Sark\",\n        \"Senegal\",\n        \"Serbia\",\n        \"Seychelles\",\n        \"Sierra Leone\",\n        \"Sint Maarten\",\n        \"Slovakia\",\n        \"Slovenia\",\n        \"Solomon Islands\",\n        \"Somalia\",\n        \"South Georgia & South Sandwich Islands\",\n        \"South Sudan\",\n        \"Sri Lanka\",\n        \"St. Barthélemy\",\n        \"St. Helena\",\n        \"St. Kitts & Nevis\",\n        \"St. Lucia\",\n        \"St. Martin\",\n        \"St. Pierre & Miquelon\",\n        \"St. Vincent & Grenadines\",\n        \"Sudan\",\n        \"Suriname\",\n        \"Svalbard & Jan Mayen\",\n        \"Syria\",\n        \"São Tomé & Príncipe\",\n        \"Taiwan\",\n        \"Tajikistan\",\n        \"Tanzania\",\n        \"Timor-Leste\",\n        \"Togo\",\n        \"Tokelau\",\n        \"Tonga\",\n        \"Trinidad & Tobago\",\n        \"Tristan da Cunha\",\n        \"Tunisia\",\n        \"Turkmenistan\",\n        \"Turks & Caicos Islands\",\n        \"Tuvalu\",\n        \"U.S. Outlying Islands\",\n        \"U.S. Virgin Islands\",\n        \"Uganda\",\n        \"United Nations\",\n        \"Unknown Region\",\n        \"Uruguay\",\n        \"Uzbekistan\",\n        \"Vanuatu\",\n        \"Vatican City\",\n        \"Venezuela\",\n        \"Wallis & Futuna\",\n        \"Western Sahara\",\n        \"Yemen\",\n        \"Zambia\",\n        \"Zimbabwe\",\n        \"Åland Islands\"\n      ],\n      \"default\": \"US\",\n      \"prefill\": \"US\"\n    },\n    \"language\": {\n      \"title\": \"Language\",\n      \"type\": \"string\",\n      \"description\": \"Interface and result language used for Google's hl parameter (and Bing's setlang parameter).\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"en\",\n        \"es\",\n        \"de\",\n        \"fr\",\n        \"pt\",\n        \"pt-BR\",\n        \"it\",\n        \"nl\",\n        \"pl\",\n        \"ru\",\n        \"uk\",\n        \"tr\",\n        \"ar\",\n        \"hi\",\n        \"ur\",\n        \"bn\",\n        \"id\",\n        \"ms\",\n        \"th\",\n        \"vi\",\n        \"ja\",\n        \"ko\",\n        \"zh-CN\",\n        \"zh-TW\",\n        \"ab\",\n        \"aa\",\n        \"af\",\n        \"ak\",\n        \"sq\",\n        \"am\",\n        \"an\",\n        \"hy\",\n        \"as\",\n        \"av\",\n        \"ae\",\n        \"ay\",\n        \"az\",\n        \"bm\",\n        \"ba\",\n        \"eu\",\n        \"be\",\n        \"bi\",\n        \"bs\",\n        \"br\",\n        \"bg\",\n        \"my\",\n        \"ca\",\n        \"ch\",\n        \"ce\",\n        \"zh\",\n        \"cu\",\n        \"cv\",\n        \"kw\",\n        \"co\",\n        \"cr\",\n        \"hr\",\n        \"cs\",\n        \"da\",\n        \"dv\",\n        \"dz\",\n        \"eo\",\n        \"et\",\n        \"ee\",\n        \"fo\",\n        \"fj\",\n        \"fi\",\n        \"ff\",\n        \"gl\",\n        \"lg\",\n        \"ka\",\n        \"el\",\n        \"gn\",\n        \"gu\",\n        \"ht\",\n        \"ha\",\n        \"he\",\n        \"hz\",\n        \"ho\",\n        \"hu\",\n        \"is\",\n        \"io\",\n        \"ig\",\n        \"ia\",\n        \"ie\",\n        \"iu\",\n        \"ik\",\n        \"ga\",\n        \"jv\",\n        \"kl\",\n        \"kn\",\n        \"kr\",\n        \"ks\",\n        \"kk\",\n        \"km\",\n        \"ki\",\n        \"rw\",\n        \"kv\",\n        \"kg\",\n        \"kj\",\n        \"ku\",\n        \"ky\",\n        \"lo\",\n        \"la\",\n        \"lv\",\n        \"li\",\n        \"ln\",\n        \"lt\",\n        \"lu\",\n        \"lb\",\n        \"mk\",\n        \"mg\",\n        \"ml\",\n        \"mt\",\n        \"gv\",\n        \"mr\",\n        \"mh\",\n        \"mn\",\n        \"mi\",\n        \"na\",\n        \"nv\",\n        \"ng\",\n        \"ne\",\n        \"nd\",\n        \"se\",\n        \"no\",\n        \"nb\",\n        \"nn\",\n        \"ny\",\n        \"oc\",\n        \"or\",\n        \"oj\",\n        \"om\",\n        \"os\",\n        \"pi\",\n        \"ps\",\n        \"fa\",\n        \"pa\",\n        \"qu\",\n        \"ro\",\n        \"rm\",\n        \"rn\",\n        \"sm\",\n        \"sg\",\n        \"sa\",\n        \"sc\",\n        \"gd\",\n        \"sr\",\n        \"sh\",\n        \"sn\",\n        \"ii\",\n        \"sd\",\n        \"si\",\n        \"sk\",\n        \"sl\",\n        \"so\",\n        \"nr\",\n        \"st\",\n        \"su\",\n        \"sw\",\n        \"ss\",\n        \"sv\",\n        \"tl\",\n        \"ty\",\n        \"tg\",\n        \"ta\",\n        \"tt\",\n        \"te\",\n        \"bo\",\n        \"ti\",\n        \"to\",\n        \"ts\",\n        \"tn\",\n        \"tk\",\n        \"tw\",\n        \"ug\",\n        \"uz\",\n        \"ve\",\n        \"vo\",\n        \"wa\",\n        \"cy\",\n        \"fy\",\n        \"wo\",\n        \"xh\",\n        \"yi\",\n        \"yo\",\n        \"za\",\n        \"zu\"\n      ],\n      \"enumTitles\": [\n        \"English\",\n        \"Spanish\",\n        \"German\",\n        \"French\",\n        \"Portuguese\",\n        \"Portuguese (Brazil)\",\n        \"Italian\",\n        \"Dutch\",\n        \"Polish\",\n        \"Russian\",\n        \"Ukrainian\",\n        \"Turkish\",\n        \"Arabic\",\n        \"Hindi\",\n        \"Urdu\",\n        \"Bangla\",\n        \"Indonesian\",\n        \"Malay\",\n        \"Thai\",\n        \"Vietnamese\",\n        \"Japanese\",\n        \"Korean\",\n        \"Chinese (Simplified)\",\n        \"Chinese (Traditional)\",\n        \"Abkhazian\",\n        \"Afar\",\n        \"Afrikaans\",\n        \"Akan\",\n        \"Albanian\",\n        \"Amharic\",\n        \"Aragonese\",\n        \"Armenian\",\n        \"Assamese\",\n        \"Avaric\",\n        \"Avestan\",\n        \"Aymara\",\n        \"Azerbaijani\",\n        \"Bambara\",\n        \"Bashkir\",\n        \"Basque\",\n        \"Belarusian\",\n        \"Bislama\",\n        \"Bosnian\",\n        \"Breton\",\n        \"Bulgarian\",\n        \"Burmese\",\n        \"Catalan\",\n        \"Chamorro\",\n        \"Chechen\",\n        \"Chinese\",\n        \"Church Slavic\",\n        \"Chuvash\",\n        \"Cornish\",\n        \"Corsican\",\n        \"Cree\",\n        \"Croatian\",\n        \"Czech\",\n        \"Danish\",\n        \"Divehi\",\n        \"Dzongkha\",\n        \"Esperanto\",\n        \"Estonian\",\n        \"Ewe\",\n        \"Faroese\",\n        \"Fijian\",\n        \"Finnish\",\n        \"Fula\",\n        \"Galician\",\n        \"Ganda\",\n        \"Georgian\",\n        \"Greek\",\n        \"Guarani\",\n        \"Gujarati\",\n        \"Haitian Creole\",\n        \"Hausa\",\n        \"Hebrew\",\n        \"Herero\",\n        \"Hiri Motu\",\n        \"Hungarian\",\n        \"Icelandic\",\n        \"Ido\",\n        \"Igbo\",\n        \"Interlingua\",\n        \"Interlingue\",\n        \"Inuktitut\",\n        \"Inupiaq\",\n        \"Irish\",\n        \"Javanese\",\n        \"Kalaallisut\",\n        \"Kannada\",\n        \"Kanuri\",\n        \"Kashmiri\",\n        \"Kazakh\",\n        \"Khmer\",\n        \"Kikuyu\",\n        \"Kinyarwanda\",\n        \"Komi\",\n        \"Kongo\",\n        \"Kuanyama\",\n        \"Kurdish\",\n        \"Kyrgyz\",\n        \"Lao\",\n        \"Latin\",\n        \"Latvian\",\n        \"Limburgish\",\n        \"Lingala\",\n        \"Lithuanian\",\n        \"Luba-Katanga\",\n        \"Luxembourgish\",\n        \"Macedonian\",\n        \"Malagasy\",\n        \"Malayalam\",\n        \"Maltese\",\n        \"Manx\",\n        \"Marathi\",\n        \"Marshallese\",\n        \"Mongolian\",\n        \"Māori\",\n        \"Nauru\",\n        \"Navajo\",\n        \"Ndonga\",\n        \"Nepali\",\n        \"North Ndebele\",\n        \"Northern Sami\",\n        \"Norwegian\",\n        \"Norwegian Bokmål\",\n        \"Norwegian Nynorsk\",\n        \"Nyanja\",\n        \"Occitan\",\n        \"Odia\",\n        \"Ojibwa\",\n        \"Oromo\",\n        \"Ossetic\",\n        \"Pali\",\n        \"Pashto\",\n        \"Persian\",\n        \"Punjabi\",\n        \"Quechua\",\n        \"Romanian\",\n        \"Romansh\",\n        \"Rundi\",\n        \"Samoan\",\n        \"Sango\",\n        \"Sanskrit\",\n        \"Sardinian\",\n        \"Scottish Gaelic\",\n        \"Serbian\",\n        \"Serbo-Croatian\",\n        \"Shona\",\n        \"Sichuan Yi\",\n        \"Sindhi\",\n        \"Sinhala\",\n        \"Slovak\",\n        \"Slovenian\",\n        \"Somali\",\n        \"South Ndebele\",\n        \"Southern Sotho\",\n        \"Sundanese\",\n        \"Swahili\",\n        \"Swati\",\n        \"Swedish\",\n        \"Tagalog\",\n        \"Tahitian\",\n        \"Tajik\",\n        \"Tamil\",\n        \"Tatar\",\n        \"Telugu\",\n        \"Tibetan\",\n        \"Tigrinya\",\n        \"Tongan\",\n        \"Tsonga\",\n        \"Tswana\",\n        \"Turkmen\",\n        \"Twi\",\n        \"Uyghur\",\n        \"Uzbek\",\n        \"Venda\",\n        \"Volapük\",\n        \"Walloon\",\n        \"Welsh\",\n        \"Western Frisian\",\n        \"Wolof\",\n        \"Xhosa\",\n        \"Yiddish\",\n        \"Yoruba\",\n        \"Zhuang\",\n        \"Zulu\"\n      ],\n      \"default\": \"en\",\n      \"prefill\": \"en\"\n    },\n    \"safeSearch\": {\n      \"title\": \"Safe search\",\n      \"type\": \"string\",\n      \"description\": \"Google SafeSearch level. 'active' filters explicit images; 'off' does not.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"active\",\n        \"off\"\n      ],\n      \"enumTitles\": [\n        \"Filter explicit results (active)\",\n        \"Do not filter (off)\"\n      ],\n      \"default\": \"active\",\n      \"prefill\": \"active\"\n    },\n    \"imageSize\": {\n      \"title\": \"Image size\",\n      \"type\": \"string\",\n      \"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.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"\",\n        \"large\",\n        \"medium\",\n        \"icon\",\n        \"2mp\",\n        \"4mp\",\n        \"8mp\",\n        \"12mp\",\n        \"20mp\",\n        \"40mp\",\n        \"70mp\"\n      ],\n      \"enumTitles\": [\n        \"Any size\",\n        \"Large\",\n        \"Medium\",\n        \"Icon\",\n        \"2 MP or larger\",\n        \"4 MP or larger\",\n        \"8 MP or larger\",\n        \"12 MP or larger\",\n        \"20 MP or larger\",\n        \"40 MP or larger\",\n        \"70 MP or larger\"\n      ],\n      \"default\": \"\",\n      \"prefill\": \"\"\n    },\n    \"imageColor\": {\n      \"title\": \"Image color\",\n      \"type\": \"string\",\n      \"description\": \"Google Images color filter. 'black_and_white' is grayscale; 'transparent' looks for a transparent background.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"\",\n        \"color\",\n        \"black_and_white\",\n        \"transparent\",\n        \"red\",\n        \"orange\",\n        \"yellow\",\n        \"green\",\n        \"teal\",\n        \"blue\",\n        \"purple\",\n        \"pink\",\n        \"white\",\n        \"gray\",\n        \"black\",\n        \"brown\"\n      ],\n      \"enumTitles\": [\n        \"Any color\",\n        \"Full color\",\n        \"Black and white\",\n        \"Transparent\",\n        \"Red\",\n        \"Orange\",\n        \"Yellow\",\n        \"Green\",\n        \"Teal\",\n        \"Blue\",\n        \"Purple\",\n        \"Pink\",\n        \"White\",\n        \"Gray\",\n        \"Black\",\n        \"Brown\"\n      ],\n      \"default\": \"\",\n      \"prefill\": \"\"\n    },\n    \"imageType\": {\n      \"title\": \"Image type\",\n      \"type\": \"string\",\n      \"description\": \"Google Images type filter: photographs, faces, clip art, line drawings or animated images.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"\",\n        \"photo\",\n        \"face\",\n        \"clipart\",\n        \"lineart\",\n        \"animated\"\n      ],\n      \"enumTitles\": [\n        \"Any type\",\n        \"Photo\",\n        \"Face\",\n        \"Clip art\",\n        \"Line drawing\",\n        \"Animated\"\n      ],\n      \"default\": \"\",\n      \"prefill\": \"\"\n    },\n    \"fileType\": {\n      \"title\": \"File type\",\n      \"type\": \"string\",\n      \"description\": \"Only images in this format. Google applies this server-side; Bing fallback applies it to the image URL extension locally.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"\",\n        \"jpg\",\n        \"png\",\n        \"gif\",\n        \"bmp\",\n        \"svg\",\n        \"webp\",\n        \"ico\"\n      ],\n      \"enumTitles\": [\n        \"Any format\",\n        \"JPEG\",\n        \"PNG\",\n        \"GIF\",\n        \"BMP\",\n        \"SVG\",\n        \"WebP\",\n        \"ICO\"\n      ],\n      \"default\": \"\",\n      \"prefill\": \"\"\n    },\n    \"timeRange\": {\n      \"title\": \"Time range\",\n      \"type\": \"string\",\n      \"description\": \"Only images Google found within this period. Bing fallback maps 'hour' to its 24-hour window.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"\",\n        \"hour\",\n        \"day\",\n        \"week\",\n        \"month\",\n        \"year\"\n      ],\n      \"enumTitles\": [\n        \"Any time\",\n        \"Past hour\",\n        \"Past 24 hours\",\n        \"Past week\",\n        \"Past month\",\n        \"Past year\"\n      ],\n      \"default\": \"\",\n      \"prefill\": \"\"\n    },\n    \"usageRights\": {\n      \"title\": \"Usage rights\",\n      \"type\": \"string\",\n      \"description\": \"Google's usage-rights labels. These are Google's labels, not a legal guarantee; check the licence on the source page before reuse.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"\",\n        \"free_to_use_or_share\",\n        \"free_to_use_or_share_commercially\",\n        \"free_to_use_share_or_modify\",\n        \"free_to_use_share_or_modify_commercially\"\n      ],\n      \"enumTitles\": [\n        \"Any usage rights\",\n        \"Free to use or share\",\n        \"Free to use or share, even commercially\",\n        \"Free to use, share or modify\",\n        \"Free to use, share or modify, even commercially\"\n      ],\n      \"default\": \"\",\n      \"prefill\": \"\"\n    },\n    \"googleOnly\": {\n      \"title\": \"Google only\",\n      \"type\": \"boolean\",\n      \"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.\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"enableFallback\": {\n      \"title\": \"Enable labelled fallback\",\n      \"type\": \"boolean\",\n      \"description\": \"When googleOnly is false, allow labelled Bing Images and then DuckDuckGo Images. Every fallback row carries engine, isFallback=true and fallbackReason.\",\n      \"default\": true,\n      \"prefill\": true\n    }\n  }\n}",
    "readme": "# Google Image Search Results & Metadata Scraper\r\n\r\nSearch 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.\r\n\r\n## What this actor does\r\n\r\n- Runs one or more Google Images queries in a single run.\r\n- Exposes Google's own size, colour, type, file-type, time and usage-rights filters, plus country, language and SafeSearch.\r\n- Captures the original image URL when Google exposes it, and tells you when it only has a thumbnail (`imageUrlType`, `isCrawlerOnly`, `hasOriginal`).\r\n- Records the source page, source domain, site name, result position and page/scroll batch.\r\n- Gives every row a stable `imageId` derived from the image URL or Google's result key.\r\n- Writes a `SUMMARY` key-value record with per-query `resultsRequested`, `resultsReturned`, `pagesFetched`, `stopReason` and `fallbackAttempts`.\r\n\r\n## Google-first with labelled fallback\r\n\r\nThe 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:\r\n\r\n- `engine` - `bing`, `duckduckgo`, or `google`\r\n- `isFallback` - `true` for every fallback row\r\n- `fallbackReason` - why Google was not used, e.g. `google_captcha`\r\n\r\nFallback is never silent and never changes the `engine` value. A Bing row is always labelled Bing.\r\n\r\nFor 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.\r\n\r\n## Output fields\r\n\r\nEvery row keeps the legacy field names and adds provenance and completeness fields. Empty optional values are omitted; `null` and sentinel values are never written.\r\n\r\n| Field | Meaning |\r\n|---|---|\r\n| `query` | Query that produced the row |\r\n| `position` | 1-based rank within the query's returned rows |\r\n| `page` | Result page or scroll batch the row was read from |\r\n| `engine` | `google`, `bing`, `duckduckgo` or `unknown` |\r\n| `retrievalMethod` | How the row was read, e.g. `google_dom_sidepanel`, `google_dom_thumbnail`, `bing_async_html` |\r\n| `isFallback` | `true` when the row came from a fallback engine |\r\n| `fallbackReason` | Why fallback was used |\r\n| `searchUrl` | Search URL used for this query |\r\n| `fetchedAt` | ISO-8601 UTC fetch timestamp |\r\n| `imageId` | Stable ID derived from the image URL or Google result key |\r\n| `imageUrl` | Best available image URL |\r\n| `imageUrlType` | `original`, `thumbnail`, `crawler_only` or `unknown` |\r\n| `isCrawlerOnly` | `true` when `imageUrl` is a search-engine cached/thumbnail URL |\r\n| `hasOriginal` | `true` when `imageUrl` is the source site's original |\r\n| `imageWidth`, `imageHeight` | Original dimensions, only when the engine states them |\r\n| `aspectRatio`, `orientation` | Derived from the stated dimensions |\r\n| `fileFormat` | Format from the URL extension, when known |\r\n| `thumbnailUrl` | Engine-cached thumbnail |\r\n| `thumbnailWidth`, `thumbnailHeight` | Thumbnail dimensions, when stated |\r\n| `title` | Page title shown for the image, when it is not a generic placeholder |\r\n| `sourcePageTitle` | Title of the source page |\r\n| `origin` | Legacy source domain field |\r\n| `sourceDomain` | Hostname of the source page |\r\n| `siteName` | Site name shown by the engine, or the source domain |\r\n| `contentUrl` | Page containing the image |\r\n| `googleUrl` | Google imgres reference URL, when applicable |\r\n\r\n`imageUrl` is the best URL available, not a promise that it is the original. Check `imageUrlType` or `hasOriginal` before treating it as full resolution.\r\n\r\n## Input\r\n\r\nAt 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.\r\n\r\n| Field | Type | Default | Description |\r\n|---|---|---|---|\r\n| `queries` | array | - | One or more image search queries. The legacy `query` string is still accepted in code. |\r\n| `maxResults` | integer | `100` | Maximum rows per query, 1-500. This is a ceiling, not a guarantee. |\r\n| `minWidth` | integer | `0` | Drop images narrower than this many pixels; 0 disables. Rows without dimensions are dropped when set. |\r\n| `minHeight` | integer | `0` | Drop images shorter than this many pixels; 0 disables. |\r\n| `country` | select | `US` | Two-letter country code for Google `gl` / Bing `cc` |\r\n| `language` | select | `en` | Language code for Google `hl` / Bing `setlang` |\r\n| `safeSearch` | select | `active` | `active` or `off` |\r\n| `imageSize` | select | any | `large`, `medium`, `icon`, or a minimum megapixel bucket from `2mp` to `70mp` |\r\n| `imageColor` | select | any | Full colour, black and white, transparent, or a specific colour |\r\n| `imageType` | select | any | Photo, face, clip art, line drawing, animated |\r\n| `fileType` | select | any | JPEG, PNG, GIF, BMP, SVG, WebP, ICO |\r\n| `timeRange` | select | any | Past hour, day, week, month or year |\r\n| `usageRights` | select | any | Google's four usage-rights labels |\r\n| `googleOnly` | boolean | `false` | Fail clearly instead of using fallback |\r\n| `enableFallback` | boolean | `true` | Allow labelled Bing/DuckDuckGo fallback when `googleOnly` is false |\r\n\r\nThe 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.\r\n\r\n## Example input\r\n\r\nStrict Google-only query:\r\n\r\n```json\r\n{\r\n  \"queries\": [\"Alfons Mucha\"],\r\n  \"maxResults\": 20,\r\n  \"country\": \"US\",\r\n  \"language\": \"en\",\r\n  \"googleOnly\": true\r\n}\r\n```\r\n\r\nLabelled fallback allowed, with filters:\r\n\r\n```json\r\n{\r\n  \"queries\": [\"sunset landscape\", \"modern architecture\"],\r\n  \"maxResults\": 100,\r\n  \"country\": \"DE\",\r\n  \"language\": \"de\",\r\n  \"imageSize\": \"large\",\r\n  \"imageColor\": \"blue\",\r\n  \"imageType\": \"photo\",\r\n  \"safeSearch\": \"active\",\r\n  \"googleOnly\": false,\r\n  \"enableFallback\": true\r\n}\r\n```\r\n\r\n## How to read a run\r\n\r\n- A row with `engine: \"google\"` and `imageUrlType: \"original\"` is a source-site image URL.\r\n- A row with `engine: \"google\"` and `imageUrlType: \"thumbnail\"` is Google's cached thumbnail; the original was not exposed for that card.\r\n- A row with `engine: \"bing\"` is a labelled fallback row. Bing exposes original image URLs and source pages directly.\r\n- 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.\r\n\r\n## Limits and honest notes\r\n\r\n- Google Images typically runs out at roughly 300-400 results per query. Asking for 500 returns what Google has.\r\n- 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.\r\n- A Google CAPTCHA or \"unusual traffic\" page is reported as `google_captcha`, not as zero results.\r\n- `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.\r\n- Bing's time filter has no \"past hour\" bucket; the `hour` option uses Bing's 24-hour window on fallback.\r\n- 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.\r\n- `minWidth` and `minHeight` are applied to every engine. Rows with no published dimensions are dropped when either bound is set.\r\n- `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.\r\n- 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.\r\n- New fields are additive. Existing field names (`query`, `imageUrl`, `imageWidth`, `imageHeight`, `thumbnailUrl`, `thumbnailWidth`, `thumbnailHeight`, `title`, `origin`, `contentUrl`) are preserved.\r\n\r\n## FAQ\r\n\r\n**Why did a Google-only run fail?**\r\nGoogle 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.\r\n\r\n**Why is `imageUrlType` sometimes `thumbnail`?**\r\nThe results page did not expose the source image URL for that card. The actor will not label a Google thumbnail as an original.\r\n\r\n**Why are dimensions missing on some rows?**\r\nThe engine did not state them. The actor omits the field rather than writing `0` or guessing.\r\n\r\n**Does this download images?**\r\nNo. It returns URLs and metadata. Fetch the image files yourself.\r\n\r\n**Is this affiliated with Google?**\r\nNo. It reads public image search results as an independent third-party tool.\r\n\r\n**Can I use the same input as before?**\r\nYes 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).\r\n",
    "actorDefinition": {
      "actorSpecification": 1,
      "name": "google-image-search-results-and-metadata-scraper",
      "title": "Google Image Search Results & Metadata Scraper",
      "description": "Run Google Images searches and get labelled image rows: original or thumbnail URL, dimensions when stated, source page, stable image ID, filters, and honest engine/fallback provenance.",
      "version": "2.1",
      "buildTag": "latest",
      "meta": {
        "templateId": "python-playwright"
      },
      "input": {
        "title": "Google Images Scraper Input",
        "type": "object",
        "schemaVersion": 1,
        "properties": {
          "queries": {
            "title": "Search queries",
            "type": "array",
            "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"
            },
            "minItems": 1,
            "maxItems": 50,
            "prefill": [
              "Alfons Mucha"
            ]
          },
          "maxResults": {
            "title": "Max results per query",
            "type": "integer",
            "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.",
            "minimum": 1,
            "maximum": 500,
            "default": 100,
            "prefill": 3
          },
          "minWidth": {
            "title": "Minimum image width",
            "type": "integer",
            "description": "Drop images narrower than this many pixels. Rows without published dimensions are dropped when this is set. 0 disables the filter.",
            "minimum": 0,
            "maximum": 10000,
            "default": 0,
            "prefill": 0
          },
          "minHeight": {
            "title": "Minimum image height",
            "type": "integer",
            "description": "Drop images shorter than this many pixels. Rows without published dimensions are dropped when this is set. 0 disables the filter.",
            "minimum": 0,
            "maximum": 10000,
            "default": 0,
            "prefill": 0
          },
          "country": {
            "title": "Country",
            "type": "string",
            "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"
            ],
            "default": "US",
            "prefill": "US"
          },
          "language": {
            "title": "Language",
            "type": "string",
            "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"
            ],
            "default": "en",
            "prefill": "en"
          },
          "safeSearch": {
            "title": "Safe search",
            "type": "string",
            "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)"
            ],
            "default": "active",
            "prefill": "active"
          },
          "imageSize": {
            "title": "Image size",
            "type": "string",
            "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"
            ],
            "default": "",
            "prefill": ""
          },
          "imageColor": {
            "title": "Image color",
            "type": "string",
            "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"
            ],
            "default": "",
            "prefill": ""
          },
          "imageType": {
            "title": "Image type",
            "type": "string",
            "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"
            ],
            "default": "",
            "prefill": ""
          },
          "fileType": {
            "title": "File type",
            "type": "string",
            "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"
            ],
            "default": "",
            "prefill": ""
          },
          "timeRange": {
            "title": "Time range",
            "type": "string",
            "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"
            ],
            "default": "",
            "prefill": ""
          },
          "usageRights": {
            "title": "Usage rights",
            "type": "string",
            "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"
            ],
            "default": "",
            "prefill": ""
          },
          "googleOnly": {
            "title": "Google only",
            "type": "boolean",
            "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.",
            "default": false,
            "prefill": false
          },
          "enableFallback": {
            "title": "Enable labelled fallback",
            "type": "boolean",
            "description": "When googleOnly is false, allow labelled Bing Images and then DuckDuckGo Images. Every fallback row carries engine, isFallback=true and fallbackReason.",
            "default": true,
            "prefill": true
          }
        }
      },
      "output": {
        "actorOutputSchemaVersion": 1,
        "title": "Google Image Search Results & Metadata Scraper Output",
        "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.",
        "type": "object",
        "properties": {
          "images": {
            "type": "string",
            "title": "Scraped 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"
          },
          "summary": {
            "type": "string",
            "title": "Completeness summary",
            "description": "Per-run and per-query resultsRequested, resultsReturned, pagesFetched, stopReason and fallbackAttempts.",
            "template": "{{links.apiDefaultKeyValueStoreUrl}}/records/SUMMARY"
          }
        }
      },
      "dockerfile": "./Dockerfile",
      "readme": "# Google Image Search Results & Metadata Scraper\r\n\r\nSearch 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.\r\n\r\n## What this actor does\r\n\r\n- Runs one or more Google Images queries in a single run.\r\n- Exposes Google's own size, colour, type, file-type, time and usage-rights filters, plus country, language and SafeSearch.\r\n- Captures the original image URL when Google exposes it, and tells you when it only has a thumbnail (`imageUrlType`, `isCrawlerOnly`, `hasOriginal`).\r\n- Records the source page, source domain, site name, result position and page/scroll batch.\r\n- Gives every row a stable `imageId` derived from the image URL or Google's result key.\r\n- Writes a `SUMMARY` key-value record with per-query `resultsRequested`, `resultsReturned`, `pagesFetched`, `stopReason` and `fallbackAttempts`.\r\n\r\n## Google-first with labelled fallback\r\n\r\nThe 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:\r\n\r\n- `engine` - `bing`, `duckduckgo`, or `google`\r\n- `isFallback` - `true` for every fallback row\r\n- `fallbackReason` - why Google was not used, e.g. `google_captcha`\r\n\r\nFallback is never silent and never changes the `engine` value. A Bing row is always labelled Bing.\r\n\r\nFor 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.\r\n\r\n## Output fields\r\n\r\nEvery row keeps the legacy field names and adds provenance and completeness fields. Empty optional values are omitted; `null` and sentinel values are never written.\r\n\r\n| Field | Meaning |\r\n|---|---|\r\n| `query` | Query that produced the row |\r\n| `position` | 1-based rank within the query's returned rows |\r\n| `page` | Result page or scroll batch the row was read from |\r\n| `engine` | `google`, `bing`, `duckduckgo` or `unknown` |\r\n| `retrievalMethod` | How the row was read, e.g. `google_dom_sidepanel`, `google_dom_thumbnail`, `bing_async_html` |\r\n| `isFallback` | `true` when the row came from a fallback engine |\r\n| `fallbackReason` | Why fallback was used |\r\n| `searchUrl` | Search URL used for this query |\r\n| `fetchedAt` | ISO-8601 UTC fetch timestamp |\r\n| `imageId` | Stable ID derived from the image URL or Google result key |\r\n| `imageUrl` | Best available image URL |\r\n| `imageUrlType` | `original`, `thumbnail`, `crawler_only` or `unknown` |\r\n| `isCrawlerOnly` | `true` when `imageUrl` is a search-engine cached/thumbnail URL |\r\n| `hasOriginal` | `true` when `imageUrl` is the source site's original |\r\n| `imageWidth`, `imageHeight` | Original dimensions, only when the engine states them |\r\n| `aspectRatio`, `orientation` | Derived from the stated dimensions |\r\n| `fileFormat` | Format from the URL extension, when known |\r\n| `thumbnailUrl` | Engine-cached thumbnail |\r\n| `thumbnailWidth`, `thumbnailHeight` | Thumbnail dimensions, when stated |\r\n| `title` | Page title shown for the image, when it is not a generic placeholder |\r\n| `sourcePageTitle` | Title of the source page |\r\n| `origin` | Legacy source domain field |\r\n| `sourceDomain` | Hostname of the source page |\r\n| `siteName` | Site name shown by the engine, or the source domain |\r\n| `contentUrl` | Page containing the image |\r\n| `googleUrl` | Google imgres reference URL, when applicable |\r\n\r\n`imageUrl` is the best URL available, not a promise that it is the original. Check `imageUrlType` or `hasOriginal` before treating it as full resolution.\r\n\r\n## Input\r\n\r\nAt 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.\r\n\r\n| Field | Type | Default | Description |\r\n|---|---|---|---|\r\n| `queries` | array | - | One or more image search queries. The legacy `query` string is still accepted in code. |\r\n| `maxResults` | integer | `100` | Maximum rows per query, 1-500. This is a ceiling, not a guarantee. |\r\n| `minWidth` | integer | `0` | Drop images narrower than this many pixels; 0 disables. Rows without dimensions are dropped when set. |\r\n| `minHeight` | integer | `0` | Drop images shorter than this many pixels; 0 disables. |\r\n| `country` | select | `US` | Two-letter country code for Google `gl` / Bing `cc` |\r\n| `language` | select | `en` | Language code for Google `hl` / Bing `setlang` |\r\n| `safeSearch` | select | `active` | `active` or `off` |\r\n| `imageSize` | select | any | `large`, `medium`, `icon`, or a minimum megapixel bucket from `2mp` to `70mp` |\r\n| `imageColor` | select | any | Full colour, black and white, transparent, or a specific colour |\r\n| `imageType` | select | any | Photo, face, clip art, line drawing, animated |\r\n| `fileType` | select | any | JPEG, PNG, GIF, BMP, SVG, WebP, ICO |\r\n| `timeRange` | select | any | Past hour, day, week, month or year |\r\n| `usageRights` | select | any | Google's four usage-rights labels |\r\n| `googleOnly` | boolean | `false` | Fail clearly instead of using fallback |\r\n| `enableFallback` | boolean | `true` | Allow labelled Bing/DuckDuckGo fallback when `googleOnly` is false |\r\n\r\nThe 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.\r\n\r\n## Example input\r\n\r\nStrict Google-only query:\r\n\r\n```json\r\n{\r\n  \"queries\": [\"Alfons Mucha\"],\r\n  \"maxResults\": 20,\r\n  \"country\": \"US\",\r\n  \"language\": \"en\",\r\n  \"googleOnly\": true\r\n}\r\n```\r\n\r\nLabelled fallback allowed, with filters:\r\n\r\n```json\r\n{\r\n  \"queries\": [\"sunset landscape\", \"modern architecture\"],\r\n  \"maxResults\": 100,\r\n  \"country\": \"DE\",\r\n  \"language\": \"de\",\r\n  \"imageSize\": \"large\",\r\n  \"imageColor\": \"blue\",\r\n  \"imageType\": \"photo\",\r\n  \"safeSearch\": \"active\",\r\n  \"googleOnly\": false,\r\n  \"enableFallback\": true\r\n}\r\n```\r\n\r\n## How to read a run\r\n\r\n- A row with `engine: \"google\"` and `imageUrlType: \"original\"` is a source-site image URL.\r\n- A row with `engine: \"google\"` and `imageUrlType: \"thumbnail\"` is Google's cached thumbnail; the original was not exposed for that card.\r\n- A row with `engine: \"bing\"` is a labelled fallback row. Bing exposes original image URLs and source pages directly.\r\n- 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.\r\n\r\n## Limits and honest notes\r\n\r\n- Google Images typically runs out at roughly 300-400 results per query. Asking for 500 returns what Google has.\r\n- 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.\r\n- A Google CAPTCHA or \"unusual traffic\" page is reported as `google_captcha`, not as zero results.\r\n- `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.\r\n- Bing's time filter has no \"past hour\" bucket; the `hour` option uses Bing's 24-hour window on fallback.\r\n- 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.\r\n- `minWidth` and `minHeight` are applied to every engine. Rows with no published dimensions are dropped when either bound is set.\r\n- `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.\r\n- 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.\r\n- New fields are additive. Existing field names (`query`, `imageUrl`, `imageWidth`, `imageHeight`, `thumbnailUrl`, `thumbnailWidth`, `thumbnailHeight`, `title`, `origin`, `contentUrl`) are preserved.\r\n\r\n## FAQ\r\n\r\n**Why did a Google-only run fail?**\r\nGoogle 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.\r\n\r\n**Why is `imageUrlType` sometimes `thumbnail`?**\r\nThe results page did not expose the source image URL for that card. The actor will not label a Google thumbnail as an original.\r\n\r\n**Why are dimensions missing on some rows?**\r\nThe engine did not state them. The actor omits the field rather than writing `0` or guessing.\r\n\r\n**Does this download images?**\r\nNo. It returns URLs and metadata. Fetch the image files yourself.\r\n\r\n**Is this affiliated with Google?**\r\nNo. It reads public image search results as an independent third-party tool.\r\n\r\n**Can I use the same input as before?**\r\nYes 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).\r\n",
      "storages": {
        "dataset": {
          "actorSpecification": 1,
          "title": "Google Images",
          "fields": {
            "type": "object",
            "properties": {
              "query": {
                "type": "string",
                "description": "The search query that produced this row"
              },
              "position": {
                "type": "integer",
                "description": "1-based rank within the query's returned rows"
              },
              "page": {
                "type": "integer",
                "nullable": true,
                "description": "Result page or scroll batch the row was read from"
              },
              "engine": {
                "type": "string",
                "enum": [
                  "google",
                  "bing",
                  "duckduckgo",
                  "unknown"
                ],
                "description": "The engine that actually produced this row"
              },
              "retrievalMethod": {
                "type": "string",
                "nullable": true,
                "description": "How the row was read, e.g. google_dom_sidepanel or bing_async_html"
              },
              "isFallback": {
                "type": "boolean",
                "description": "True when the row came from a fallback engine rather than Google"
              },
              "fallbackReason": {
                "type": "string",
                "nullable": true,
                "description": "Why fallback was used, e.g. google_captcha"
              },
              "searchUrl": {
                "type": "string",
                "nullable": true,
                "description": "The search URL used for this query"
              },
              "fetchedAt": {
                "type": "string",
                "nullable": true,
                "description": "ISO-8601 UTC timestamp when the query was fetched"
              },
              "imageId": {
                "type": "string",
                "nullable": true,
                "description": "Stable ID derived from the image URL or Google result key"
              },
              "imageUrl": {
                "type": "string",
                "description": "Best available image URL; inspect imageUrlType to see whether it is the original or a thumbnail"
              },
              "imageUrlType": {
                "type": "string",
                "enum": [
                  "original",
                  "thumbnail",
                  "crawler_only",
                  "unknown"
                ],
                "description": "Whether imageUrl is the source original, an engine thumbnail, a crawler-only URL, or unknown"
              },
              "isCrawlerOnly": {
                "type": "boolean",
                "description": "True when imageUrl is hosted or cached by a search engine rather than the source site"
              },
              "hasOriginal": {
                "type": "boolean",
                "description": "True when imageUrl is an original source-site URL"
              },
              "imageWidth": {
                "type": "integer",
                "nullable": true,
                "description": "Original image width in pixels, when the engine states it"
              },
              "imageHeight": {
                "type": "integer",
                "nullable": true,
                "description": "Original image height in pixels, when the engine states it"
              },
              "aspectRatio": {
                "type": "number",
                "nullable": true,
                "description": "width divided by height, rounded to three decimals"
              },
              "orientation": {
                "type": "string",
                "nullable": true,
                "description": "landscape, portrait or square, derived from the stated dimensions"
              },
              "fileFormat": {
                "type": "string",
                "nullable": true,
                "description": "Image format derived from the URL extension, when known"
              },
              "thumbnailUrl": {
                "type": "string",
                "nullable": true,
                "description": "URL of the engine's cached thumbnail"
              },
              "thumbnailWidth": {
                "type": "integer",
                "nullable": true,
                "description": "Thumbnail width in pixels, when the engine states it"
              },
              "thumbnailHeight": {
                "type": "integer",
                "nullable": true,
                "description": "Thumbnail height in pixels, when the engine states it"
              },
              "title": {
                "type": "string",
                "nullable": true,
                "description": "Page title shown for the image, when it is not a generic placeholder"
              },
              "sourcePageTitle": {
                "type": "string",
                "nullable": true,
                "description": "Title of the source page containing the image"
              },
              "origin": {
                "type": "string",
                "nullable": true,
                "description": "Legacy field: domain of the source page, or of the image host when no page is known"
              },
              "sourceDomain": {
                "type": "string",
                "nullable": true,
                "description": "Hostname of the source page containing the image"
              },
              "siteName": {
                "type": "string",
                "nullable": true,
                "description": "Site name the engine displays, or the source domain when no display name is available"
              },
              "contentUrl": {
                "type": "string",
                "nullable": true,
                "description": "URL of the web page containing the image"
              },
              "googleUrl": {
                "type": "string",
                "nullable": true,
                "description": "Google imgres reference URL, when the row came from Google"
              }
            }
          },
          "views": {
            "overview": {
              "title": "Images",
              "transformation": {
                "fields": [
                  "query",
                  "position",
                  "engine",
                  "imageUrlType",
                  "title",
                  "sourceDomain",
                  "imageUrl",
                  "imageWidth",
                  "imageHeight"
                ]
              },
              "display": {
                "component": "table",
                "properties": {
                  "query": {
                    "label": "Query",
                    "format": "text"
                  },
                  "position": {
                    "label": "Position",
                    "format": "number"
                  },
                  "engine": {
                    "label": "Engine",
                    "format": "text"
                  },
                  "imageUrlType": {
                    "label": "URL type",
                    "format": "text"
                  },
                  "title": {
                    "label": "Title",
                    "format": "text"
                  },
                  "sourceDomain": {
                    "label": "Source domain",
                    "format": "text"
                  },
                  "imageUrl": {
                    "label": "Image URL",
                    "format": "text"
                  },
                  "imageWidth": {
                    "label": "Width",
                    "format": "number"
                  },
                  "imageHeight": {
                    "label": "Height",
                    "format": "number"
                  }
                }
              }
            },
            "provenance": {
              "title": "Provenance",
              "transformation": {
                "fields": [
                  "query",
                  "position",
                  "page",
                  "engine",
                  "retrievalMethod",
                  "isFallback",
                  "fallbackReason",
                  "imageId",
                  "imageUrlType",
                  "isCrawlerOnly",
                  "hasOriginal",
                  "searchUrl",
                  "fetchedAt"
                ]
              },
              "display": {
                "component": "table",
                "properties": {
                  "query": {
                    "label": "Query",
                    "format": "text"
                  },
                  "position": {
                    "label": "Position",
                    "format": "number"
                  },
                  "page": {
                    "label": "Page",
                    "format": "number"
                  },
                  "engine": {
                    "label": "Engine",
                    "format": "text"
                  },
                  "retrievalMethod": {
                    "label": "Method",
                    "format": "text"
                  },
                  "isFallback": {
                    "label": "Fallback",
                    "format": "boolean"
                  },
                  "fallbackReason": {
                    "label": "Fallback reason",
                    "format": "text"
                  },
                  "imageId": {
                    "label": "Image ID",
                    "format": "text"
                  },
                  "imageUrlType": {
                    "label": "URL type",
                    "format": "text"
                  },
                  "isCrawlerOnly": {
                    "label": "Crawler only",
                    "format": "boolean"
                  },
                  "hasOriginal": {
                    "label": "Has original",
                    "format": "boolean"
                  },
                  "searchUrl": {
                    "label": "Search URL",
                    "format": "text"
                  },
                  "fetchedAt": {
                    "label": "Fetched at",
                    "format": "text"
                  }
                }
              }
            }
          }
        }
      }
    },
    "buildNumber": "2.1.1",
    "imageDigest": "e865413688bfeff21f1d32b2f51128c68aa9bb40da9acaa1e0dd54815e23443d",
    "actVersion": {
      "sourceType": "SOURCE_FILES",
      "buildTag": "latest",
      "versionNumber": "2.1"
    },
    "usage": {
      "ACTOR_COMPUTE_UNITS": 0.22723666666666667
    }
  }
}