{
  "data": {
    "id": "3wrvWVI4r5kda1hwd",
    "actId": "zyw0irn52b9UmsgFa",
    "userId": "i69nUdRzxpMEn2yC2",
    "startedAt": "2026-10-11T15:51:06.170Z",
    "finishedAt": "2026-10-11T15:51:47.829Z",
    "status": "SUCCEEDED",
    "meta": {
      "origin": "CLI"
    },
    "stats": {
      "durationMillis": 41551,
      "runTimeSecs": 41.551,
      "computeUnits": 0.04616777777777778,
      "imageSizeBytes": 523680768
    },
    "options": {
      "useCache": true,
      "betaPackages": false,
      "memoryMbytes": 4096,
      "diskMbytes": 8192
    },
    "exitCode": 0,
    "inputSchema": "{\n  \"title\": \"Google Trends Scraper\",\n  \"description\": \"**·** **Choose Operation Mode:** full reports for up to 20 keywords, or comparison of 2–5 keywords.\\n**·** **Inside Selected Mode:** fill only that mode's keyword list.\\n**·** **Settings:** choose country, language, time range and search type.\\n\\n**·** **FREE:** one complete report per run, up to three checks per month.\\n**·** **Billing:** each completed report, including no data, counts as one Trend report.\",\n  \"type\": \"object\",\n  \"schemaVersion\": 1,\n  \"properties\": {\n    \"mode\": {\n      \"title\": \"Operation mode\",\n      \"type\": \"string\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"full\",\n        \"compare\"\n      ],\n      \"enumTitles\": [\n        \"Mode 1: Full Keyword Reports\",\n        \"Mode 2: Compare Keywords\"\n      ],\n      \"default\": \"full\",\n      \"description\": \"Choose the mode first. Mode 1 collects an independent full report for each keyword. Mode 2 compares 2–5 keywords in one report.\"\n    },\n    \"keywords\": {\n      \"title\": \"Keywords\",\n      \"type\": \"array\",\n      \"editor\": \"stringList\",\n      \"items\": {\n        \"type\": \"string\",\n        \"minLength\": 2,\n        \"maxLength\": 100\n      },\n      \"maxItems\": 20,\n      \"description\": \"Mode 1 only. Enter up to 20 distinct keyword phrases, one per line.\",\n      \"default\": [],\n      \"placeholderValue\": \"running shoes\",\n      \"sectionCaption\": \"🎯 Mode 1: Full Keyword Reports\",\n      \"sectionDescription\": \"Collect interest over time, regional interest, related queries and related topics. Each keyword is an independent report.\"\n    },\n    \"compareKeywords\": {\n      \"title\": \"Keywords to compare\",\n      \"type\": \"array\",\n      \"editor\": \"stringList\",\n      \"sectionCaption\": \"🎯 Mode 2: Compare Keywords\",\n      \"sectionDescription\": \"Compare 2–5 keywords in one report. Interest over time and regions use shared comparison scales.\",\n      \"description\": \"Mode 2 only. Enter 2–5 distinct keyword phrases, one per line. Related queries and topics are available in Mode 1.\",\n      \"items\": {\n        \"type\": \"string\",\n        \"minLength\": 2,\n        \"maxLength\": 100\n      },\n      \"maxItems\": 5,\n      \"placeholderValue\": \"tea\"\n    },\n    \"country\": {\n      \"title\": \"Country\",\n      \"type\": \"string\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"AF\",\n        \"AL\",\n        \"AQ\",\n        \"DZ\",\n        \"AS\",\n        \"AD\",\n        \"AO\",\n        \"AG\",\n        \"AZ\",\n        \"AR\",\n        \"AU\",\n        \"AT\",\n        \"BS\",\n        \"BH\",\n        \"BD\",\n        \"AM\",\n        \"BB\",\n        \"BE\",\n        \"BT\",\n        \"BO\",\n        \"BA\",\n        \"BW\",\n        \"BR\",\n        \"BZ\",\n        \"SB\",\n        \"BN\",\n        \"BG\",\n        \"MM\",\n        \"BI\",\n        \"KH\",\n        \"CM\",\n        \"CA\",\n        \"CV\",\n        \"CF\",\n        \"LK\",\n        \"TD\",\n        \"CL\",\n        \"CN\",\n        \"CX\",\n        \"CC\",\n        \"CO\",\n        \"KM\",\n        \"CG\",\n        \"CD\",\n        \"CK\",\n        \"CR\",\n        \"HR\",\n        \"CY\",\n        \"CZ\",\n        \"BJ\",\n        \"DK\",\n        \"DM\",\n        \"DO\",\n        \"EC\",\n        \"SV\",\n        \"GQ\",\n        \"ET\",\n        \"ER\",\n        \"EE\",\n        \"GS\",\n        \"FJ\",\n        \"FI\",\n        \"FR\",\n        \"PF\",\n        \"TF\",\n        \"DJ\",\n        \"GA\",\n        \"GE\",\n        \"GM\",\n        \"DE\",\n        \"GH\",\n        \"KI\",\n        \"GR\",\n        \"GD\",\n        \"GU\",\n        \"GT\",\n        \"GN\",\n        \"GY\",\n        \"HT\",\n        \"HM\",\n        \"VA\",\n        \"HN\",\n        \"HU\",\n        \"IS\",\n        \"IN\",\n        \"ID\",\n        \"IQ\",\n        \"IE\",\n        \"IL\",\n        \"IT\",\n        \"CI\",\n        \"JM\",\n        \"JP\",\n        \"KZ\",\n        \"JO\",\n        \"KE\",\n        \"KR\",\n        \"KW\",\n        \"KG\",\n        \"LA\",\n        \"LB\",\n        \"LS\",\n        \"LV\",\n        \"LR\",\n        \"LY\",\n        \"LI\",\n        \"LT\",\n        \"LU\",\n        \"MG\",\n        \"MW\",\n        \"MY\",\n        \"MV\",\n        \"ML\",\n        \"MT\",\n        \"MR\",\n        \"MU\",\n        \"MX\",\n        \"MC\",\n        \"MN\",\n        \"MD\",\n        \"ME\",\n        \"MA\",\n        \"MZ\",\n        \"OM\",\n        \"NA\",\n        \"NR\",\n        \"NP\",\n        \"NL\",\n        \"CW\",\n        \"SX\",\n        \"BQ\",\n        \"NC\",\n        \"VU\",\n        \"NZ\",\n        \"NI\",\n        \"NE\",\n        \"NG\",\n        \"NU\",\n        \"NF\",\n        \"NO\",\n        \"MP\",\n        \"UM\",\n        \"FM\",\n        \"MH\",\n        \"PW\",\n        \"PK\",\n        \"PA\",\n        \"PG\",\n        \"PY\",\n        \"PE\",\n        \"PH\",\n        \"PN\",\n        \"PL\",\n        \"PT\",\n        \"GW\",\n        \"TL\",\n        \"QA\",\n        \"RO\",\n        \"RW\",\n        \"SH\",\n        \"KN\",\n        \"LC\",\n        \"PM\",\n        \"VC\",\n        \"SM\",\n        \"ST\",\n        \"SA\",\n        \"SN\",\n        \"RS\",\n        \"SC\",\n        \"SL\",\n        \"SG\",\n        \"SK\",\n        \"VN\",\n        \"SI\",\n        \"SO\",\n        \"ZA\",\n        \"ZW\",\n        \"ES\",\n        \"SS\",\n        \"SD\",\n        \"SR\",\n        \"SZ\",\n        \"SE\",\n        \"CH\",\n        \"TJ\",\n        \"TH\",\n        \"TG\",\n        \"TK\",\n        \"TO\",\n        \"TT\",\n        \"AE\",\n        \"TN\",\n        \"TR\",\n        \"TM\",\n        \"TV\",\n        \"UG\",\n        \"UA\",\n        \"MK\",\n        \"EG\",\n        \"GB\",\n        \"GG\",\n        \"JE\",\n        \"TZ\",\n        \"US\",\n        \"BF\",\n        \"UY\",\n        \"UZ\",\n        \"VE\",\n        \"WF\",\n        \"WS\",\n        \"YE\",\n        \"ZM\"\n      ],\n      \"enumTitles\": [\n        \"Afghanistan\",\n        \"Albania\",\n        \"Antarctica\",\n        \"Algeria\",\n        \"American Samoa\",\n        \"Andorra\",\n        \"Angola\",\n        \"Antigua and Barbuda\",\n        \"Azerbaijan\",\n        \"Argentina\",\n        \"Australia\",\n        \"Austria\",\n        \"The Bahamas\",\n        \"Bahrain\",\n        \"Bangladesh\",\n        \"Armenia\",\n        \"Barbados\",\n        \"Belgium\",\n        \"Bhutan\",\n        \"Bolivia\",\n        \"Bosnia and Herzegovina\",\n        \"Botswana\",\n        \"Brazil\",\n        \"Belize\",\n        \"Solomon Islands\",\n        \"Brunei\",\n        \"Bulgaria\",\n        \"Myanmar (Burma)\",\n        \"Burundi\",\n        \"Cambodia\",\n        \"Cameroon\",\n        \"Canada\",\n        \"Cabo Verde\",\n        \"Central African Republic\",\n        \"Sri Lanka\",\n        \"Chad\",\n        \"Chile\",\n        \"China\",\n        \"Christmas Island\",\n        \"Cocos (Keeling) Islands\",\n        \"Colombia\",\n        \"Comoros\",\n        \"Republic of the Congo\",\n        \"Democratic Republic of the Congo\",\n        \"Cook Islands\",\n        \"Costa Rica\",\n        \"Croatia\",\n        \"Cyprus\",\n        \"Czechia\",\n        \"Benin\",\n        \"Denmark\",\n        \"Dominica\",\n        \"Dominican Republic\",\n        \"Ecuador\",\n        \"El Salvador\",\n        \"Equatorial Guinea\",\n        \"Ethiopia\",\n        \"Eritrea\",\n        \"Estonia\",\n        \"South Georgia and the South Sandwich Islands\",\n        \"Fiji\",\n        \"Finland\",\n        \"France\",\n        \"French Polynesia\",\n        \"French Southern and Antarctic Lands\",\n        \"Djibouti\",\n        \"Gabon\",\n        \"Georgia\",\n        \"The Gambia\",\n        \"Germany\",\n        \"Ghana\",\n        \"Kiribati\",\n        \"Greece\",\n        \"Grenada\",\n        \"Guam\",\n        \"Guatemala\",\n        \"Guinea\",\n        \"Guyana\",\n        \"Haiti\",\n        \"Heard Island and McDonald Islands\",\n        \"Vatican City\",\n        \"Honduras\",\n        \"Hungary\",\n        \"Iceland\",\n        \"India\",\n        \"Indonesia\",\n        \"Iraq\",\n        \"Ireland\",\n        \"Israel\",\n        \"Italy\",\n        \"Cote d'Ivoire\",\n        \"Jamaica\",\n        \"Japan\",\n        \"Kazakhstan\",\n        \"Jordan\",\n        \"Kenya\",\n        \"South Korea\",\n        \"Kuwait\",\n        \"Kyrgyzstan\",\n        \"Laos\",\n        \"Lebanon\",\n        \"Lesotho\",\n        \"Latvia\",\n        \"Liberia\",\n        \"Libya\",\n        \"Liechtenstein\",\n        \"Lithuania\",\n        \"Luxembourg\",\n        \"Madagascar\",\n        \"Malawi\",\n        \"Malaysia\",\n        \"Maldives\",\n        \"Mali\",\n        \"Malta\",\n        \"Mauritania\",\n        \"Mauritius\",\n        \"Mexico\",\n        \"Monaco\",\n        \"Mongolia\",\n        \"Moldova\",\n        \"Montenegro\",\n        \"Morocco\",\n        \"Mozambique\",\n        \"Oman\",\n        \"Namibia\",\n        \"Nauru\",\n        \"Nepal\",\n        \"Netherlands\",\n        \"Curacao\",\n        \"Sint Maarten\",\n        \"Caribbean Netherlands\",\n        \"New Caledonia\",\n        \"Vanuatu\",\n        \"New Zealand\",\n        \"Nicaragua\",\n        \"Niger\",\n        \"Nigeria\",\n        \"Niue\",\n        \"Norfolk Island\",\n        \"Norway\",\n        \"Northern Mariana Islands\",\n        \"United States Minor Outlying Islands\",\n        \"Micronesia\",\n        \"Marshall Islands\",\n        \"Palau\",\n        \"Pakistan\",\n        \"Panama\",\n        \"Papua New Guinea\",\n        \"Paraguay\",\n        \"Peru\",\n        \"Philippines\",\n        \"Pitcairn Islands\",\n        \"Poland\",\n        \"Portugal\",\n        \"Guinea-Bissau\",\n        \"Timor-Leste\",\n        \"Qatar\",\n        \"Romania\",\n        \"Rwanda\",\n        \"Saint Helena, Ascension and Tristan da Cunha\",\n        \"Saint Kitts and Nevis\",\n        \"Saint Lucia\",\n        \"Saint Pierre and Miquelon\",\n        \"Saint Vincent and the Grenadines\",\n        \"San Marino\",\n        \"Sao Tome and Principe\",\n        \"Saudi Arabia\",\n        \"Senegal\",\n        \"Serbia\",\n        \"Seychelles\",\n        \"Sierra Leone\",\n        \"Singapore\",\n        \"Slovakia\",\n        \"Vietnam\",\n        \"Slovenia\",\n        \"Somalia\",\n        \"South Africa\",\n        \"Zimbabwe\",\n        \"Spain\",\n        \"South Sudan\",\n        \"Sudan\",\n        \"Suriname\",\n        \"Eswatini\",\n        \"Sweden\",\n        \"Switzerland\",\n        \"Tajikistan\",\n        \"Thailand\",\n        \"Togo\",\n        \"Tokelau\",\n        \"Tonga\",\n        \"Trinidad and Tobago\",\n        \"United Arab Emirates\",\n        \"Tunisia\",\n        \"Turkiye\",\n        \"Turkmenistan\",\n        \"Tuvalu\",\n        \"Uganda\",\n        \"Ukraine\",\n        \"North Macedonia\",\n        \"Egypt\",\n        \"United Kingdom\",\n        \"Guernsey\",\n        \"Jersey\",\n        \"Tanzania\",\n        \"United States\",\n        \"Burkina Faso\",\n        \"Uruguay\",\n        \"Uzbekistan\",\n        \"Venezuela\",\n        \"Wallis and Futuna\",\n        \"Samoa\",\n        \"Yemen\",\n        \"Zambia\"\n      ],\n      \"default\": \"US\",\n      \"description\": \"Country for Google Trends interest. Default: United States.\",\n      \"sectionCaption\": \"🌍 Market\",\n      \"sectionDescription\": \"Choose the country and language for either report mode.\"\n    },\n    \"language\": {\n      \"title\": \"Language\",\n      \"type\": \"string\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"af\",\n        \"ak\",\n        \"sq\",\n        \"am\",\n        \"ar\",\n        \"hy\",\n        \"az\",\n        \"ban\",\n        \"eu\",\n        \"be\",\n        \"bn\",\n        \"bs\",\n        \"bg\",\n        \"my\",\n        \"ca\",\n        \"ceb\",\n        \"ny\",\n        \"zh-CN\",\n        \"zh-TW\",\n        \"hr\",\n        \"cs\",\n        \"da\",\n        \"nl\",\n        \"en\",\n        \"es-419\",\n        \"et\",\n        \"ee\",\n        \"fo\",\n        \"fa\",\n        \"fil\",\n        \"fi\",\n        \"fr\",\n        \"fy\",\n        \"gaa\",\n        \"gl\",\n        \"lg\",\n        \"ka\",\n        \"de\",\n        \"el\",\n        \"gu\",\n        \"ht\",\n        \"ha\",\n        \"he\",\n        \"iw\",\n        \"hi\",\n        \"hu\",\n        \"is\",\n        \"bem\",\n        \"ig\",\n        \"id\",\n        \"ga\",\n        \"it\",\n        \"ja\",\n        \"kn\",\n        \"kk\",\n        \"km\",\n        \"rw\",\n        \"rn\",\n        \"kg\",\n        \"ko\",\n        \"mfe\",\n        \"crs\",\n        \"kri\",\n        \"ckb\",\n        \"ky\",\n        \"lo\",\n        \"lv\",\n        \"ln\",\n        \"lt\",\n        \"ach\",\n        \"mk\",\n        \"mg\",\n        \"ms\",\n        \"ml\",\n        \"mt\",\n        \"mi\",\n        \"mr\",\n        \"mn\",\n        \"sr-ME\",\n        \"ne\",\n        \"nso\",\n        \"no\",\n        \"nyn\",\n        \"om\",\n        \"ps\",\n        \"pcm\",\n        \"pl\",\n        \"pt\",\n        \"pt-BR\",\n        \"pt-PT\",\n        \"pa\",\n        \"qu\",\n        \"ro\",\n        \"rm\",\n        \"ru\",\n        \"sr\",\n        \"sr-Latn\",\n        \"st\",\n        \"sn\",\n        \"loz\",\n        \"sd\",\n        \"si\",\n        \"sk\",\n        \"sl\",\n        \"so\",\n        \"es\",\n        \"sw\",\n        \"sv\",\n        \"tl\",\n        \"tg\",\n        \"ta\",\n        \"te\",\n        \"th\",\n        \"ti\",\n        \"to\",\n        \"lua\",\n        \"tn\",\n        \"tum\",\n        \"tr\",\n        \"tk\",\n        \"uk\",\n        \"ur\",\n        \"uz\",\n        \"vi\",\n        \"wo\",\n        \"xh\",\n        \"yo\",\n        \"zu\"\n      ],\n      \"enumTitles\": [\n        \"Afrikaans\",\n        \"Akan\",\n        \"Albanian\",\n        \"Amharic\",\n        \"Arabic\",\n        \"Armenian\",\n        \"Azeri\",\n        \"Balinese\",\n        \"Basque\",\n        \"Belarusian\",\n        \"Bengali\",\n        \"Bosnian\",\n        \"Bulgarian\",\n        \"Burmese\",\n        \"Catalan\",\n        \"Cebuano\",\n        \"Chichewa\",\n        \"Chinese (Simplified)\",\n        \"Chinese (Traditional)\",\n        \"Croatian\",\n        \"Czech\",\n        \"Danish\",\n        \"Dutch\",\n        \"English\",\n        \"Espanol (Latinoamerica)\",\n        \"Estonian\",\n        \"Ewe\",\n        \"Faroese\",\n        \"Farsi\",\n        \"Filipino\",\n        \"Finnish\",\n        \"French\",\n        \"Frisian\",\n        \"Ga\",\n        \"Galician\",\n        \"Ganda\",\n        \"Georgian\",\n        \"German\",\n        \"Greek\",\n        \"Gujarati\",\n        \"Haitian\",\n        \"Hausa\",\n        \"Hebrew\",\n        \"Hebrew (old)\",\n        \"Hindi\",\n        \"Hungarian\",\n        \"Icelandic\",\n        \"IciBemba\",\n        \"Igbo\",\n        \"Indonesian\",\n        \"Irish\",\n        \"Italian\",\n        \"Japanese\",\n        \"Kannada\",\n        \"Kazakh\",\n        \"Khmer\",\n        \"Kinyarwanda\",\n        \"Kirundi\",\n        \"Kongo\",\n        \"Korean\",\n        \"Kreol morisien\",\n        \"Kreol Seselwa\",\n        \"Krio\",\n        \"Kurdish\",\n        \"Kyrgyz\",\n        \"Lao\",\n        \"Latvian\",\n        \"Lingala\",\n        \"Lithuanian\",\n        \"Luo\",\n        \"Macedonian\",\n        \"Malagasy\",\n        \"Malay\",\n        \"Malayam\",\n        \"Maltese\",\n        \"Maori\",\n        \"Marathi\",\n        \"Mongolian\",\n        \"Montenegro\",\n        \"Nepali\",\n        \"Northern Sotho\",\n        \"Norwegian\",\n        \"Nyankole\",\n        \"Oromo\",\n        \"Pashto\",\n        \"Pidgin\",\n        \"Polish\",\n        \"Portuguese\",\n        \"Portuguese (Brazil)\",\n        \"Portuguese (Portugal)\",\n        \"Punjabi\",\n        \"Quechua\",\n        \"Romanian\",\n        \"Romansh\",\n        \"Russian\",\n        \"Serbian\",\n        \"Serbian (Latin)\",\n        \"Sesotho\",\n        \"Shona\",\n        \"Silozi\",\n        \"Sindhi\",\n        \"Sinhalese\",\n        \"Slovak\",\n        \"Slovenian\",\n        \"Somali\",\n        \"Spanish\",\n        \"Swahili\",\n        \"Swedish\",\n        \"Tagalog\",\n        \"Tajik\",\n        \"Tamil\",\n        \"Telugu\",\n        \"Thai\",\n        \"Tigrinya\",\n        \"Tonga (Tonga Islands)\",\n        \"Tshiluba\",\n        \"Tswana\",\n        \"Tumbuka\",\n        \"Turkish\",\n        \"Turkmen\",\n        \"Ukrainian\",\n        \"Urdu\",\n        \"Uzbek\",\n        \"Vietnamese\",\n        \"Wolof\",\n        \"Xhosa\",\n        \"Yoruba\",\n        \"Zulu\"\n      ],\n      \"default\": \"en\",\n      \"description\": \"Language for Google Trends results and related terms. Default: English.\"\n    },\n    \"timeRange\": {\n      \"title\": \"Time range\",\n      \"type\": \"string\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"past_hour\",\n        \"past_4_hours\",\n        \"past_day\",\n        \"past_7_days\",\n        \"past_30_days\",\n        \"past_90_days\",\n        \"past_12_months\",\n        \"past_5_years\"\n      ],\n      \"enumTitles\": [\n        \"Past hour\",\n        \"Past 4 hours\",\n        \"Past day\",\n        \"Past 7 days\",\n        \"Past 30 days\",\n        \"Past 90 days\",\n        \"Past 12 months\",\n        \"Past 5 years\"\n      ],\n      \"default\": \"past_12_months\",\n      \"description\": \"Period to collect. Default: past 12 months.\",\n      \"sectionCaption\": \"📊 Report settings\",\n      \"sectionDescription\": \"Choose the time range and Google search service for either report mode.\"\n    },\n    \"searchType\": {\n      \"title\": \"Search type\",\n      \"type\": \"string\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"web\",\n        \"news\",\n        \"youtube\",\n        \"images\",\n        \"shopping\"\n      ],\n      \"enumTitles\": [\n        \"Google Search\",\n        \"Google News\",\n        \"YouTube\",\n        \"Google Images\",\n        \"Google Shopping\"\n      ],\n      \"default\": \"web\",\n      \"description\": \"Google service to explore. Default: Google Search.\"\n    }\n  }\n}",
    "readme": "# Google Trends Data Scraper — SEO Keyword Research Tool\n\n[![Apify Actor](https://apify.com/actor-badge?actor=afanasenko/google-trends-scraper)](https://apify.com/afanasenko/google-trends-scraper)\n\n> **Find seasonal demand, compare keywords, and discover related searches with Google Trends data.**\n> Get interest over time and by region for SEO research, content planning, and market analysis.\n\n> **🆓 Free to start:** Get one complete keyword report or a comparison of 2–5 keywords per run.\n> FREE accounts include up to three checks per month. Completed reports use your Apify credits at the FREE rate.\n\n## 🎯 What it does\n\nChoose a country, language, period, and search type, then pick how you want to study your keywords.\n\n| Mode | Input | What it returns |\n|---|---|---|\n| **Full Keyword Reports** (`full`) | Up to 20 phrases in `keywords` | One independent report per phrase: timeline, regions, related queries, and related topics. |\n| **Compare Keywords** (`compare`) | 2–5 phrases in `compareKeywords` | One comparison report with a shared timeline scale and regional comparisons. |\n\n**You get** one dataset row per completed report, ready to export as JSON, CSV, or Excel.\n**The scores show relative interest**, not monthly search counts. Use comparison mode to compare phrases on one scale.\n\n> ⚠️ **Pick your mode first.** Fill the keyword list for that mode. Both mode sections stay visible.\n> Example: selecting `full` but filling only `compareKeywords` leaves the full list empty and starts the `running shoes` demo.\n\n## 📦 Output sample\n\n**What's in a row:**\n\n- **Your request** — `reportId`, `mode`, `keywords`, `country`, `language`, `timeRange`, and `searchType`.\n- **Interest** — `interestOverTime` and `interestByRegion`, with values in the order of the report's keywords.\n- **Related searches** — `relatedQueries` and `relatedTopics`, each with top and rising lists in full reports.\n- **Coverage and checks** — `status`, `sectionStatuses`, `normalization`, `collectedAt`, and a Google Trends `checkUrl`.\n\nA real full report from October 7, 2026. Lists below show selected entries; exports contain every returned entry.\n\n```json\n{\n  \"reportId\": \"aKFIa9eAkiLGmaS3S_1\",\n  \"mode\": \"full\",\n  \"keywords\": [\"running shoes\"],\n  \"country\": \"US\",\n  \"language\": \"en\",\n  \"timeRange\": \"past_12_months\",\n  \"searchType\": \"web\",\n  \"status\": \"ok\",\n  \"checkUrl\": \"https://trends.google.com/trends/explore?hl=en&geo=US&date=today%2012-m&q=running%20shoes\",\n  \"collectedAt\": \"2026-10-07T14:43:16.946Z\",\n  \"interestOverTime\": [{\"dateFrom\":\"2025-10-05\",\"dateTo\":\"2025-10-11\",\"timestamp\":1759622400,\"missingData\":false,\"values\":[16]}],\n  \"interestByRegion\": [{\"geoId\":\"US-WY\",\"geoName\":\"Wyoming\",\"maxValueIndex\":0,\"values\":[100]}],\n  \"relatedQueries\": {\"top\":[{\"query\":\"men's running shoes\",\"value\":100}],\"rising\":[{\"query\":\"brooks adrenaline gts 25\",\"value\":7650}]},\n  \"relatedTopics\": {\"top\":[{\"topicId\":\"/m/06rrc\",\"topicTitle\":\"Shoes\",\"topicType\":\"Shoe\",\"value\":100}],\"rising\":[{\"topicId\":\"/m/04kfh24\",\"topicTitle\":\"Fasciitis\",\"topicType\":\"Inflammation\",\"value\":450}]},\n  \"sectionStatuses\": {\"interestOverTime\":\"ok\",\"interestByRegion\":\"ok\",\"relatedQueries\":\"ok\",\"relatedTopics\":\"ok\"},\n  \"normalization\": {\"time\":\"report_peak_100\",\"regions\":\"report_region_peak_100\",\"keywords\":[\"running shoes\"],\n    \"note\": \"Relative Google Trends indices, not search counts. Comparison keywords share a time scale. Region and time scales are distinct. Independent full reports cannot be compared as one scale.\"\n  }\n}\n```\n\nZero stays `0`; missing values stay `null`. Optional details absent from the source stay absent.\nLabels such as `Breakout` are preserved. Comparisons return `null` for related queries and topics, with `not_available` section statuses.\n\n**Views** — four ways to inspect the same report rows in **Storage → Dataset**:\n\n| View | What each row is | Best for |\n|---|---|---|\n| **Trend reports** (default) | One report, showing keywords, settings, status, collection time, and the verification link. | Reviewing completed reports. |\n| **Interest over time** | The same rows, trimmed to keywords, timeline, normalization, and section statuses. | Seasonal demand and comparison charts. |\n| **Regional interest** | The same rows, trimmed to keywords, regions, normalization, and section statuses. | Geographic research. |\n| **Related queries and topics** | The same rows, trimmed to keywords, related lists, and section statuses. | Content ideas and keyword discovery. |\n\nViews keep the lists inside each report. They do not create a separate row for each date, region, or query.\nThe full dataset schema is included in the [Apify build definition](https://api.apify.com/v2/acts/afanasenko~google-trends-scraper/builds/default), under `actorDefinition.storages.dataset`.\n\n## ⚡ Quick start\n\n1. **Pick your mode first** in **Operation mode**. Both keyword sections stay visible; fill only the matching list.\n2. For your first full report, enter `running shoes` in **Mode 1: Full Keyword Reports**.\n3. Keep the default market and settings, click **Start**, then open **Storage → Dataset**.\n\nThe equivalent JSON input is:\n\n```json\n{\"mode\":\"full\",\"keywords\":[\"running shoes\"]}\n```\n\nThis requests one complete report and fits the FREE allowance when a monthly check remains.\nCountry defaults to the United States, language to English, period to 12 months, and search type to Google Search.\n\n**Clicking Start with an empty form runs a demo.** Full mode uses `running shoes`; comparison mode uses `tea` and `coffee`.\nEach demo produces one report and uses the normal report charge and monthly allowance. Examples are placeholders, not prefilled keywords.\n\n## 🧭 When to use it\n\n- **SEO research** — check whether interest in a topic is growing before building a page around it.\n- **Content calendars** — find recurring peaks and publish before the next seasonal increase.\n- **Product planning** — compare product phrases within the same country and period.\n- **Local marketing** — see where relative interest is strongest before choosing target regions.\n- **YouTube research** — use the YouTube search type to compare interest in video topics.\n\nStart with one market and one period. Change one setting at a time when exploring differences.\nFor comparisons across several keywords, keep them together in one comparison report.\n\n## 🛠 Input\n\n**Operation mode** appears first, above the sections. The form then groups keyword lists and shared settings:\n\n| Section | Purpose |\n|---|---|\n| **🎯 Mode 1: Full Keyword Reports** | Enter independent keywords for full reports. |\n| **🎯 Mode 2: Compare Keywords** | Enter the keywords you want to compare together. |\n| **🌍 Market** | Choose the country and language. |\n| **📊 Report settings** | Choose the time range and search type. |\n\n- **`mode`** — set this first: `full` or `compare`. Fill only its keyword section; both sections remain visible.\n- **`keywords`** — full mode only; up to 20 distinct phrases, one per line.\n- **`compareKeywords`** — comparison mode only; 2–5 distinct phrases, one per line.\n- **`country`** — select a supported country code; default `US`.\n- **`language`** — select a supported language code; default `en`.\n- **`timeRange`** — choose one of the eight periods below; default `past_12_months`.\n- **`searchType`** — `web`, `news`, `youtube`, `images`, or `shopping`; default `web`.\n\n| Time-range value | Period |\n|---|---|\n| `past_hour` | Past hour |\n| `past_4_hours` | Past four hours |\n| `past_day` | Past day |\n| `past_7_days` | Past seven days |\n| `past_30_days` | Past 30 days |\n| `past_90_days` | Past 90 days |\n| `past_12_months` | Past 12 months |\n| `past_5_years` | Past five years |\n\nUse phrases of 2–100 characters. Duplicate phrases and comma-separated lists inside a single entry are rejected before collection.\nFor older API integrations, comparison mode also accepts `keywords` when `compareKeywords` is absent.\n\n## 💰 How much will scraping Google Trends cost?\n\nBilling uses Apify's **Pay Per Event** model with one primary event: **Trend report** (`REPORT`).\nThere is no starting fee. One completed full report or one completed comparison counts as one event.\n\n| Apify plan | Price per Trend report |\n|---|---:|\n| FREE | $0.180 |\n| BRONZE | $0.150 |\n| SILVER | $0.135 |\n| GOLD / PLATINUM / DIAMOND | $0.120 |\n\n**Pricing math:**\n\n| Request | Plan | Report charge |\n|---|---|---:|\n| One full keyword report | FREE | $0.180 |\n| One comparison of five keywords | BRONZE | $0.150 |\n| Ten independent full reports | BRONZE | $1.500 |\n| Twenty independent full reports | GOLD | $2.400 |\n\nA completed check with `no_data` is billed: the requested search was checked successfully.\nErrors, incomplete reports, and locked rows are not billed as Trend reports.\n\nSet **Maximum cost per run** in Apify's run options to control spending. It is not an actor input field.\nBefore collecting another report, the actor checks whether the remaining budget can cover its report charge.\n\n## 🆓 Free vs paid plan\n\n| Feature | FREE plan | Paid plan |\n|---|---|---|\n| Full reports per run | One keyword | Up to 20 keywords |\n| Comparison per report | 2–5 keywords | 2–5 keywords |\n| Related queries and topics | Included in the full report | Included in every full report |\n| Monthly allowance | Up to three checks per user | No FREE monthly cap |\n| Report content | Complete report | Complete report |\n| Recovery of an interrupted run | Supported | Supported |\n\nOn FREE, extra independent keywords appear as **locked rows** without further collection or report charges.\nMonthly limits are tracked centrally. Deleting a run's storage does not replenish the allowance.\n\nIf the monthly allowance is exhausted, collection does not start. Temporary allowance-service outages also stop collection.\nBoth cases show an explanation and create no report charges.\n\nUpgrade to process multiple independent keywords in one run and continue beyond the FREE monthly allowance.\nThe FREE rate uses Apify credits; the allowance does not waive report charges.\n\n## 🧪 Recipes\n\nCopy these inputs into the JSON editor, then adjust the keywords and market.\n\n**Find seasonality for several product phrases**\n\n```json\n{\n  \"mode\": \"full\", \"keywords\": [\"running shoes\", \"trail running shoes\", \"walking shoes\"]\n}\n```\n\nEach phrase gets a full report and its own scale. FREE returns the first report and locks the remaining two.\n\n**Compare demand on a shared scale**\n\n```json\n{\n  \"mode\": \"compare\", \"compareKeywords\": [\"tea\", \"coffee\", \"matcha\"]\n}\n```\n\nAll three phrases share one comparison report and one report charge. Related lists are unavailable in comparison mode.\n\n**Research a Spanish YouTube topic**\n\n```json\n{\n  \"mode\": \"full\", \"keywords\": [\"zapatillas de correr\"],\n  \"country\": \"ES\", \"language\": \"es\",\n  \"timeRange\": \"past_90_days\", \"searchType\": \"youtube\"\n}\n```\n\nThis checks interest in YouTube searches for Spain over the past 90 days.\n\n## 🔁 Resume / checkpoint\n\nTo recover an interrupted run, use **Resurrect** on that same run in Apify Console.\nA saved, already-paid report can be delivered without collecting or charging for it again.\n\nWhen a collection or payment outcome is uncertain, the actor stops instead of automatically repeating it.\nCheck the run message before trying again. Starting a new run requests fresh reports and can create new charges.\n\n## 📡 Live status & storage records\n\nOpen **Storage → Key-value store → `status.html`** to follow progress and see the final next step.\nThe run also saves these records:\n\n| Storage key | Type | What it holds |\n|---|---|---|\n| `status.html` | HTML | Progress, delivered reports, budget information, and the run's message. |\n| `RUN_SUMMARY` | JSON | Report counts, billing status, timing, settings, and the stop reason. |\n| `USER_MESSAGE` | JSON | A plain-language result message and suggested next step. |\n| `FREE_LIMITS_APPLIED` | JSON | FREE restrictions applied during the run, when applicable. |\n| `SKIPPED_ITEMS` | JSON | Keywords skipped because of limits or errors, when present. |\n| `REPORT_STATE` | Encrypted JSON | The recovery journal; an internal record, not an output export. |\n\nUse dataset rows for your analysis. Use `RUN_SUMMARY` and `USER_MESSAGE` to monitor runs from your own workflow.\nIf billing confirmation is pending, the status records show it as pending rather than as a zero charge.\n\n## 🤖 Programmatic / API use\n\n**REST API:** start a comparison using your Apify token.\n\n```bash\ncurl -X POST \\\n  'https://api.apify.com/v2/acts/afanasenko~google-trends-scraper/runs' \\\n  -H \"Authorization: Bearer $APIFY_TOKEN\" \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"mode\":\"compare\",\"compareKeywords\":[\"tea\",\"coffee\"],\"country\":\"US\",\"language\":\"en\"}'\n```\n\nWait for the run to finish, then read its `defaultDatasetId` through the [Apify API](https://docs.apify.com/api/v2).\nSchedules and integrations can send completed results into your regular reporting workflow.\n\n**MCP and AI agents:** connect a compatible client to the [Apify MCP server](https://docs.apify.com/integrations/mcp).\nAn authorized agent can inspect the actor's inputs, run it, and read the results.\nFor example: *“Compare tea and coffee in the United States over the past 12 months.”*\n\n## 💡 Tips & Best Practices\n\n### Getting maximum results\n\n- Start with full mode to discover related queries and topics around one seed phrase.\n- Move your shortlisted phrases into comparison mode to assess them together.\n- Keep country, period, and search type consistent when reviewing a group of keywords.\n\n### Cost optimization\n\n- Compare 2–5 phrases together when you need relative demand: the group counts as one report.\n- Check your keywords before starting. A completed `no_data` check still uses a report charge.\n- Set Maximum cost per run before starting a batch, and reuse downloaded results for repeated analysis.\n\n### Performance\n\n- Keep full-report batches within 20 phrases. Larger lists are rejected before collection starts.\n- Use comparison mode when a single shared report answers your question.\n- Recover an interrupted run with Resurrect before starting a replacement run.\n\n### Data quality\n\n- Open `checkUrl` to spot-check a report in Google Trends with the same settings.\n- Read `sectionStatuses` before using a list; unavailable sections are not zero interest.\n- Keep `0`, `null`, and `Breakout` distinct. Do not convert missing values into measured zeros.\n\n## ❓ FAQ\n\n**How do I find seasonal keywords for SEO?** Run a full report over 12 months and inspect recurring peaks. Use related queries to expand your research.\n\n**Is there a free way to try this Google Trends scraper?** FREE accounts can check one full report or one comparison per run, up to three times per month, using Apify credits.\n\n**Can I use the official Google Trends API instead?** Google offers a [Trends API alpha with limited access](https://developers.google.com/search/apis/trends). This actor provides reports through Apify.\n\n**What alternatives should I use for keyword research?** Use Google Trends for manual exploration. Use a search-volume tool when you need monthly counts rather than relative interest.\n\n**Can I compare results from separate full reports?** Their peaks are normalized independently. Use comparison mode for a shared time scale; regional and time scales also differ.\n\n**Does a score of 100 mean 100 searches?** No. It is a relative index. Scores do not give absolute search counts or prove that one market has more searches.\n\n**Why are some values null or some sections unavailable?** The source did not supply those values. Comparison mode omits related lists; absent optional fields remain absent instead of becoming zero.\n\n**Why was a no-data report charged?** The check completed successfully but found no usable trend data. Errors, incomplete reports, and FREE locked rows do not trigger REPORT.\n\n**Why did I get a demo instead of my keywords?** The selected mode's list was empty. Both sections remain visible; fill `keywords` for full or `compareKeywords` for comparison.\n\n**Does an empty-input demo use my monthly allowance?** Yes. It is one normal report, announced as a demo. The full sample is running shoes; the comparison sample is tea and coffee.\n\n**What happens if collection or payment confirmation fails?** Check `USER_MESSAGE` and `RUN_SUMMARY`. Confirmed zero-cost failures may be retried; unknown outcomes are held to avoid duplicate purchases or charges.\n\n**How fast is a report?** Run time varies with the query and service availability. Open the live status page to follow progress.\n\n## 🔗 Other related actors (same author)\n\n| Your goal | Actor | Why choose it |\n|---|---|---|\n| Seasonality, relative demand, and keyword comparisons | **This Google Trends Scraper** | Timelines, regions, and related searches. |\n| Monthly search volumes and advertising metrics | [Keyword Search Volume](https://apify.com/afanasenko/keyword-search-volume) | Search volume and keyword metrics rather than trend indices. |\n| Links pointing to a website | [Backlink Scraper](https://apify.com/afanasenko/backlink-scraper) | Backlink research alongside keyword planning. |\n\n## 🛟 Support & feedback\n\nOpen an [issue in Apify Console](https://console.apify.com/actors/zyw0irn52b9UmsgFa/issues) with the run ID and your expected result.\nInclude the selected mode and settings so the result can be reproduced. Keep access tokens out of your message.\n\nIf the actor helps your research, a [Store review](https://apify.com/afanasenko/google-trends-scraper) helps other users choose it.\n\n## ⚖️ Is it legal to scrape Google Trends?\n\n[Google Trends data](https://developers.google.com/search/docs/monitor-debug/trends-start) describes aggregate search interest. This actor does not collect individual search histories or private accounts.\nUse the data in accordance with [Google's terms](https://policies.google.com/terms) and the rules that apply to your use case.\n",
    "changelog": "# Changelog\n\n## 0.0.13 — 2026-10-11\n\n- The upgrade hint now shows Apify's current starting price for paid plans: $19/month with $19 in platform credits (it said $29).\n\n## 0.0.12 — 2026-10-07\n\n- Updated the Store title, SEO title, and README heading to Google Trends Data Scraper — SEO Keyword Research Tool.\n\n## 0.0.11 — 2026-10-07\n\n- Rewrote the README using the canonical actor template: early output sample and quick start, input and pricing tables, recipes, recovery, FAQ, and related actors.\n- Added a verified real report sample with all report fields and accurate descriptions of the four dataset views.\n- Clarified FREE credits, empty-form demos, report billing, and same-run recovery without changing runtime or input defaults.\n\n## 0.0.10 — 2026-10-07\n\n- Organized the input introduction into short setup, FREE allowance and billing bullets, following the Instagram Profile Scraper layout.\n- Simplified monthly allowance wording to \"per month\" throughout customer-facing copy.\n\n## 0.0.9 — 2026-10-07\n\n- Moved the operation-mode selector above the collapsible input sections, matching the Instagram Profile Scraper form layout.\n\n## 0.0.8 — 2026-10-07\n\n- Removed sample keyword prefills from the input form; examples now appear only as placeholders.\n- Added a one-report comparison sample for empty comparison input, alongside the existing full-report sample.\n- Kept legacy API comparison inputs compatible and marked empty-form samples as test runs with a clear next step.\n\n## 0.0.7 — 2026-10-07\n\n- Organized the input form into a mode selector, separate full-report and comparison sections, and shared market and report settings.\n- Added a dedicated comparison keyword list and kept existing API comparison inputs compatible.\n- Updated the input reference and comparison examples.\n\n## 0.0.6 — 2026-10-07\n\n- Updated the Store and SEO title to Google Trends Scraper & Data — SEO Keyword Research.\n- Synchronized the README heading with the new title.\n\n## 0.0.5 — 2026-10-07\n\n- Release a FREE reservation after a confirmed zero-cost interruption before dispatch.\n- Keep dispatched requests with uncertain collection outcomes reserved.\n\n## 0.0.4 — 2026-10-07\n\n- Added report examples, input and output reference, normalization guidance and troubleshooting.\n- Documented pending billing confirmation in the status API.\n- Synchronized error masking with the canonical implementation.\n\n## 0.0.3 — 2026-10-07\n\n- Show billing confirmation as pending instead of a zero bill after an ambiguous acknowledgement.\n- Preserve the interrupted-run message when an in-flight request is cancelled.\n- Added an isolated private recovery-test entry point; production builds continue to start main.js.\n\n## 0.0.2 — 2026-10-07\n\n- Added complete input-field descriptions required by the platform schema validator.\n- Excluded local development dependency links from source control.\n\n## 0.0.1 — 2026-10-07\n\n- Added full Google Trends reports and comparisons of 2–5 keywords, eight time ranges and five search types.\n- Added one Trend report billing event, customer budget checks and one complete FREE report per run.\n- Added an atomic monthly FREE allowance, encrypted report recovery, live status and run messages.\n- Preserved missing values, zeros and rising labels; incomplete reports are not billed.\n",
    "actorDefinition": {
      "actorSpecification": 1,
      "name": "google-trends-scraper",
      "title": "Google Trends Data Scraper — SEO Keyword Research Tool",
      "description": "Get Google Trends interest over time and by region, related queries, rising searches and related topics. Compare 2–5 keywords and export complete reports to JSON, CSV or Excel.",
      "seoTitle": "Google Trends Data Scraper — SEO Keyword Research Tool",
      "seoDescription": "Google Trends data with interest over time, regions, related queries and topics. Compare 2–5 keywords and export complete reports to JSON, CSV or Excel.",
      "version": "0.0",
      "buildTag": "latest",
      "categories": [
        "SEO_TOOLS",
        "DEVELOPER_TOOLS",
        "AUTOMATION"
      ],
      "dockerfile": "../Dockerfile",
      "input": {
        "title": "Google Trends Scraper",
        "description": "**·** **Choose Operation Mode:** full reports for up to 20 keywords, or comparison of 2–5 keywords.\n**·** **Inside Selected Mode:** fill only that mode's keyword list.\n**·** **Settings:** choose country, language, time range and search type.\n\n**·** **FREE:** one complete report per run, up to three checks per month.\n**·** **Billing:** each completed report, including no data, counts as one Trend report.",
        "type": "object",
        "schemaVersion": 1,
        "properties": {
          "mode": {
            "title": "Operation mode",
            "type": "string",
            "editor": "select",
            "enum": [
              "full",
              "compare"
            ],
            "enumTitles": [
              "Mode 1: Full Keyword Reports",
              "Mode 2: Compare Keywords"
            ],
            "default": "full",
            "description": "Choose the mode first. Mode 1 collects an independent full report for each keyword. Mode 2 compares 2–5 keywords in one report."
          },
          "keywords": {
            "title": "Keywords",
            "type": "array",
            "editor": "stringList",
            "items": {
              "type": "string",
              "minLength": 2,
              "maxLength": 100
            },
            "maxItems": 20,
            "description": "Mode 1 only. Enter up to 20 distinct keyword phrases, one per line.",
            "default": [],
            "placeholderValue": "running shoes",
            "sectionCaption": "🎯 Mode 1: Full Keyword Reports",
            "sectionDescription": "Collect interest over time, regional interest, related queries and related topics. Each keyword is an independent report."
          },
          "compareKeywords": {
            "title": "Keywords to compare",
            "type": "array",
            "editor": "stringList",
            "sectionCaption": "🎯 Mode 2: Compare Keywords",
            "sectionDescription": "Compare 2–5 keywords in one report. Interest over time and regions use shared comparison scales.",
            "description": "Mode 2 only. Enter 2–5 distinct keyword phrases, one per line. Related queries and topics are available in Mode 1.",
            "items": {
              "type": "string",
              "minLength": 2,
              "maxLength": 100
            },
            "maxItems": 5,
            "placeholderValue": "tea"
          },
          "country": {
            "title": "Country",
            "type": "string",
            "editor": "select",
            "enum": [
              "AF",
              "AL",
              "AQ",
              "DZ",
              "AS",
              "AD",
              "AO",
              "AG",
              "AZ",
              "AR",
              "AU",
              "AT",
              "BS",
              "BH",
              "BD",
              "AM",
              "BB",
              "BE",
              "BT",
              "BO",
              "BA",
              "BW",
              "BR",
              "BZ",
              "SB",
              "BN",
              "BG",
              "MM",
              "BI",
              "KH",
              "CM",
              "CA",
              "CV",
              "CF",
              "LK",
              "TD",
              "CL",
              "CN",
              "CX",
              "CC",
              "CO",
              "KM",
              "CG",
              "CD",
              "CK",
              "CR",
              "HR",
              "CY",
              "CZ",
              "BJ",
              "DK",
              "DM",
              "DO",
              "EC",
              "SV",
              "GQ",
              "ET",
              "ER",
              "EE",
              "GS",
              "FJ",
              "FI",
              "FR",
              "PF",
              "TF",
              "DJ",
              "GA",
              "GE",
              "GM",
              "DE",
              "GH",
              "KI",
              "GR",
              "GD",
              "GU",
              "GT",
              "GN",
              "GY",
              "HT",
              "HM",
              "VA",
              "HN",
              "HU",
              "IS",
              "IN",
              "ID",
              "IQ",
              "IE",
              "IL",
              "IT",
              "CI",
              "JM",
              "JP",
              "KZ",
              "JO",
              "KE",
              "KR",
              "KW",
              "KG",
              "LA",
              "LB",
              "LS",
              "LV",
              "LR",
              "LY",
              "LI",
              "LT",
              "LU",
              "MG",
              "MW",
              "MY",
              "MV",
              "ML",
              "MT",
              "MR",
              "MU",
              "MX",
              "MC",
              "MN",
              "MD",
              "ME",
              "MA",
              "MZ",
              "OM",
              "NA",
              "NR",
              "NP",
              "NL",
              "CW",
              "SX",
              "BQ",
              "NC",
              "VU",
              "NZ",
              "NI",
              "NE",
              "NG",
              "NU",
              "NF",
              "NO",
              "MP",
              "UM",
              "FM",
              "MH",
              "PW",
              "PK",
              "PA",
              "PG",
              "PY",
              "PE",
              "PH",
              "PN",
              "PL",
              "PT",
              "GW",
              "TL",
              "QA",
              "RO",
              "RW",
              "SH",
              "KN",
              "LC",
              "PM",
              "VC",
              "SM",
              "ST",
              "SA",
              "SN",
              "RS",
              "SC",
              "SL",
              "SG",
              "SK",
              "VN",
              "SI",
              "SO",
              "ZA",
              "ZW",
              "ES",
              "SS",
              "SD",
              "SR",
              "SZ",
              "SE",
              "CH",
              "TJ",
              "TH",
              "TG",
              "TK",
              "TO",
              "TT",
              "AE",
              "TN",
              "TR",
              "TM",
              "TV",
              "UG",
              "UA",
              "MK",
              "EG",
              "GB",
              "GG",
              "JE",
              "TZ",
              "US",
              "BF",
              "UY",
              "UZ",
              "VE",
              "WF",
              "WS",
              "YE",
              "ZM"
            ],
            "enumTitles": [
              "Afghanistan",
              "Albania",
              "Antarctica",
              "Algeria",
              "American Samoa",
              "Andorra",
              "Angola",
              "Antigua and Barbuda",
              "Azerbaijan",
              "Argentina",
              "Australia",
              "Austria",
              "The Bahamas",
              "Bahrain",
              "Bangladesh",
              "Armenia",
              "Barbados",
              "Belgium",
              "Bhutan",
              "Bolivia",
              "Bosnia and Herzegovina",
              "Botswana",
              "Brazil",
              "Belize",
              "Solomon Islands",
              "Brunei",
              "Bulgaria",
              "Myanmar (Burma)",
              "Burundi",
              "Cambodia",
              "Cameroon",
              "Canada",
              "Cabo Verde",
              "Central African Republic",
              "Sri Lanka",
              "Chad",
              "Chile",
              "China",
              "Christmas Island",
              "Cocos (Keeling) Islands",
              "Colombia",
              "Comoros",
              "Republic of the Congo",
              "Democratic Republic of the Congo",
              "Cook Islands",
              "Costa Rica",
              "Croatia",
              "Cyprus",
              "Czechia",
              "Benin",
              "Denmark",
              "Dominica",
              "Dominican Republic",
              "Ecuador",
              "El Salvador",
              "Equatorial Guinea",
              "Ethiopia",
              "Eritrea",
              "Estonia",
              "South Georgia and the South Sandwich Islands",
              "Fiji",
              "Finland",
              "France",
              "French Polynesia",
              "French Southern and Antarctic Lands",
              "Djibouti",
              "Gabon",
              "Georgia",
              "The Gambia",
              "Germany",
              "Ghana",
              "Kiribati",
              "Greece",
              "Grenada",
              "Guam",
              "Guatemala",
              "Guinea",
              "Guyana",
              "Haiti",
              "Heard Island and McDonald Islands",
              "Vatican City",
              "Honduras",
              "Hungary",
              "Iceland",
              "India",
              "Indonesia",
              "Iraq",
              "Ireland",
              "Israel",
              "Italy",
              "Cote d'Ivoire",
              "Jamaica",
              "Japan",
              "Kazakhstan",
              "Jordan",
              "Kenya",
              "South Korea",
              "Kuwait",
              "Kyrgyzstan",
              "Laos",
              "Lebanon",
              "Lesotho",
              "Latvia",
              "Liberia",
              "Libya",
              "Liechtenstein",
              "Lithuania",
              "Luxembourg",
              "Madagascar",
              "Malawi",
              "Malaysia",
              "Maldives",
              "Mali",
              "Malta",
              "Mauritania",
              "Mauritius",
              "Mexico",
              "Monaco",
              "Mongolia",
              "Moldova",
              "Montenegro",
              "Morocco",
              "Mozambique",
              "Oman",
              "Namibia",
              "Nauru",
              "Nepal",
              "Netherlands",
              "Curacao",
              "Sint Maarten",
              "Caribbean Netherlands",
              "New Caledonia",
              "Vanuatu",
              "New Zealand",
              "Nicaragua",
              "Niger",
              "Nigeria",
              "Niue",
              "Norfolk Island",
              "Norway",
              "Northern Mariana Islands",
              "United States Minor Outlying Islands",
              "Micronesia",
              "Marshall Islands",
              "Palau",
              "Pakistan",
              "Panama",
              "Papua New Guinea",
              "Paraguay",
              "Peru",
              "Philippines",
              "Pitcairn Islands",
              "Poland",
              "Portugal",
              "Guinea-Bissau",
              "Timor-Leste",
              "Qatar",
              "Romania",
              "Rwanda",
              "Saint Helena, Ascension and Tristan da Cunha",
              "Saint Kitts and Nevis",
              "Saint Lucia",
              "Saint Pierre and Miquelon",
              "Saint Vincent and the Grenadines",
              "San Marino",
              "Sao Tome and Principe",
              "Saudi Arabia",
              "Senegal",
              "Serbia",
              "Seychelles",
              "Sierra Leone",
              "Singapore",
              "Slovakia",
              "Vietnam",
              "Slovenia",
              "Somalia",
              "South Africa",
              "Zimbabwe",
              "Spain",
              "South Sudan",
              "Sudan",
              "Suriname",
              "Eswatini",
              "Sweden",
              "Switzerland",
              "Tajikistan",
              "Thailand",
              "Togo",
              "Tokelau",
              "Tonga",
              "Trinidad and Tobago",
              "United Arab Emirates",
              "Tunisia",
              "Turkiye",
              "Turkmenistan",
              "Tuvalu",
              "Uganda",
              "Ukraine",
              "North Macedonia",
              "Egypt",
              "United Kingdom",
              "Guernsey",
              "Jersey",
              "Tanzania",
              "United States",
              "Burkina Faso",
              "Uruguay",
              "Uzbekistan",
              "Venezuela",
              "Wallis and Futuna",
              "Samoa",
              "Yemen",
              "Zambia"
            ],
            "default": "US",
            "description": "Country for Google Trends interest. Default: United States.",
            "sectionCaption": "🌍 Market",
            "sectionDescription": "Choose the country and language for either report mode."
          },
          "language": {
            "title": "Language",
            "type": "string",
            "editor": "select",
            "enum": [
              "af",
              "ak",
              "sq",
              "am",
              "ar",
              "hy",
              "az",
              "ban",
              "eu",
              "be",
              "bn",
              "bs",
              "bg",
              "my",
              "ca",
              "ceb",
              "ny",
              "zh-CN",
              "zh-TW",
              "hr",
              "cs",
              "da",
              "nl",
              "en",
              "es-419",
              "et",
              "ee",
              "fo",
              "fa",
              "fil",
              "fi",
              "fr",
              "fy",
              "gaa",
              "gl",
              "lg",
              "ka",
              "de",
              "el",
              "gu",
              "ht",
              "ha",
              "he",
              "iw",
              "hi",
              "hu",
              "is",
              "bem",
              "ig",
              "id",
              "ga",
              "it",
              "ja",
              "kn",
              "kk",
              "km",
              "rw",
              "rn",
              "kg",
              "ko",
              "mfe",
              "crs",
              "kri",
              "ckb",
              "ky",
              "lo",
              "lv",
              "ln",
              "lt",
              "ach",
              "mk",
              "mg",
              "ms",
              "ml",
              "mt",
              "mi",
              "mr",
              "mn",
              "sr-ME",
              "ne",
              "nso",
              "no",
              "nyn",
              "om",
              "ps",
              "pcm",
              "pl",
              "pt",
              "pt-BR",
              "pt-PT",
              "pa",
              "qu",
              "ro",
              "rm",
              "ru",
              "sr",
              "sr-Latn",
              "st",
              "sn",
              "loz",
              "sd",
              "si",
              "sk",
              "sl",
              "so",
              "es",
              "sw",
              "sv",
              "tl",
              "tg",
              "ta",
              "te",
              "th",
              "ti",
              "to",
              "lua",
              "tn",
              "tum",
              "tr",
              "tk",
              "uk",
              "ur",
              "uz",
              "vi",
              "wo",
              "xh",
              "yo",
              "zu"
            ],
            "enumTitles": [
              "Afrikaans",
              "Akan",
              "Albanian",
              "Amharic",
              "Arabic",
              "Armenian",
              "Azeri",
              "Balinese",
              "Basque",
              "Belarusian",
              "Bengali",
              "Bosnian",
              "Bulgarian",
              "Burmese",
              "Catalan",
              "Cebuano",
              "Chichewa",
              "Chinese (Simplified)",
              "Chinese (Traditional)",
              "Croatian",
              "Czech",
              "Danish",
              "Dutch",
              "English",
              "Espanol (Latinoamerica)",
              "Estonian",
              "Ewe",
              "Faroese",
              "Farsi",
              "Filipino",
              "Finnish",
              "French",
              "Frisian",
              "Ga",
              "Galician",
              "Ganda",
              "Georgian",
              "German",
              "Greek",
              "Gujarati",
              "Haitian",
              "Hausa",
              "Hebrew",
              "Hebrew (old)",
              "Hindi",
              "Hungarian",
              "Icelandic",
              "IciBemba",
              "Igbo",
              "Indonesian",
              "Irish",
              "Italian",
              "Japanese",
              "Kannada",
              "Kazakh",
              "Khmer",
              "Kinyarwanda",
              "Kirundi",
              "Kongo",
              "Korean",
              "Kreol morisien",
              "Kreol Seselwa",
              "Krio",
              "Kurdish",
              "Kyrgyz",
              "Lao",
              "Latvian",
              "Lingala",
              "Lithuanian",
              "Luo",
              "Macedonian",
              "Malagasy",
              "Malay",
              "Malayam",
              "Maltese",
              "Maori",
              "Marathi",
              "Mongolian",
              "Montenegro",
              "Nepali",
              "Northern Sotho",
              "Norwegian",
              "Nyankole",
              "Oromo",
              "Pashto",
              "Pidgin",
              "Polish",
              "Portuguese",
              "Portuguese (Brazil)",
              "Portuguese (Portugal)",
              "Punjabi",
              "Quechua",
              "Romanian",
              "Romansh",
              "Russian",
              "Serbian",
              "Serbian (Latin)",
              "Sesotho",
              "Shona",
              "Silozi",
              "Sindhi",
              "Sinhalese",
              "Slovak",
              "Slovenian",
              "Somali",
              "Spanish",
              "Swahili",
              "Swedish",
              "Tagalog",
              "Tajik",
              "Tamil",
              "Telugu",
              "Thai",
              "Tigrinya",
              "Tonga (Tonga Islands)",
              "Tshiluba",
              "Tswana",
              "Tumbuka",
              "Turkish",
              "Turkmen",
              "Ukrainian",
              "Urdu",
              "Uzbek",
              "Vietnamese",
              "Wolof",
              "Xhosa",
              "Yoruba",
              "Zulu"
            ],
            "default": "en",
            "description": "Language for Google Trends results and related terms. Default: English."
          },
          "timeRange": {
            "title": "Time range",
            "type": "string",
            "editor": "select",
            "enum": [
              "past_hour",
              "past_4_hours",
              "past_day",
              "past_7_days",
              "past_30_days",
              "past_90_days",
              "past_12_months",
              "past_5_years"
            ],
            "enumTitles": [
              "Past hour",
              "Past 4 hours",
              "Past day",
              "Past 7 days",
              "Past 30 days",
              "Past 90 days",
              "Past 12 months",
              "Past 5 years"
            ],
            "default": "past_12_months",
            "description": "Period to collect. Default: past 12 months.",
            "sectionCaption": "📊 Report settings",
            "sectionDescription": "Choose the time range and Google search service for either report mode."
          },
          "searchType": {
            "title": "Search type",
            "type": "string",
            "editor": "select",
            "enum": [
              "web",
              "news",
              "youtube",
              "images",
              "shopping"
            ],
            "enumTitles": [
              "Google Search",
              "Google News",
              "YouTube",
              "Google Images",
              "Google Shopping"
            ],
            "default": "web",
            "description": "Google service to explore. Default: Google Search."
          }
        }
      },
      "webServerSchema": {
        "openapi": "3.0.3",
        "info": {
          "title": "Google Trends Scraper Live API",
          "description": "Live status of Google Trends report collection.",
          "version": "1.0.0"
        },
        "paths": {
          "/": {
            "get": {
              "summary": "Live status page",
              "description": "HTML page showing real-time progress with auto-refresh.",
              "operationId": "getStatusPage",
              "responses": {
                "200": {
                  "description": "HTML status page",
                  "content": {
                    "text/html": {
                      "schema": {
                        "type": "string"
                      }
                    }
                  }
                }
              }
            }
          },
          "/api/status": {
            "get": {
              "summary": "Get current run status",
              "description": "Returns JSON with real-time progress, cost, and timing information.",
              "operationId": "getStatus",
              "responses": {
                "200": {
                  "description": "Current run status",
                  "content": {
                    "application/json": {
                      "schema": {
                        "type": "object",
                        "properties": {
                          "isRunning": {
                            "type": "boolean"
                          },
                          "progress": {
                            "type": "object",
                            "properties": {
                              "total": {
                                "type": "integer"
                              },
                              "analyzed": {
                                "type": "integer"
                              },
                              "saved": {
                                "type": "integer"
                              },
                              "skippedByFilters": {
                                "type": "integer"
                              },
                              "skippedPrivate": {
                                "type": "integer"
                              },
                              "skippedErrors": {
                                "type": "integer"
                              },
                              "mediaFetchFailed": {
                                "type": "integer"
                              },
                              "goodQuality": {
                                "type": "integer"
                              },
                              "percentage": {
                                "type": "number"
                              }
                            }
                          },
                          "cost": {
                            "type": "object",
                            "properties": {
                              "spent": {
                                "type": "number"
                              },
                              "budget": {
                                "type": "number",
                                "nullable": true
                              },
                              "currency": {
                                "type": "string"
                              },
                              "pending": {
                                "type": "boolean",
                                "description": "Billing confirmation is pending; cost is not confirmed."
                              }
                            }
                          },
                          "timing": {
                            "type": "object",
                            "properties": {
                              "elapsedSeconds": {
                                "type": "integer"
                              },
                              "startedAt": {
                                "type": "string",
                                "format": "date-time"
                              }
                            }
                          },
                          "settings": {
                            "type": "object",
                            "properties": {
                              "mode": {
                                "type": "string"
                              },
                              "offlineMode": {
                                "type": "boolean"
                              },
                              "plan": {
                                "type": "string",
                                "enum": [
                                  "free",
                                  "paid"
                                ]
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "/api/health": {
            "get": {
              "summary": "Health check",
              "description": "Simple health check endpoint.",
              "operationId": "healthCheck",
              "responses": {
                "200": {
                  "description": "Actor is running",
                  "content": {
                    "application/json": {
                      "schema": {
                        "type": "object",
                        "properties": {
                          "status": {
                            "type": "string",
                            "example": "running"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      },
      "storages": {
        "dataset": {
          "actorSpecification": 1,
          "fields": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "type": "object",
            "title": "Trend report",
            "description": "One row per completed report or locked input. Null stays missing; zero stays zero.",
            "properties": {
              "reportId": {
                "type": "string",
                "title": "Report ID",
                "description": "Report ID for this report."
              },
              "mode": {
                "type": "string",
                "title": "Report mode",
                "description": "Report mode for this report."
              },
              "country": {
                "type": "string",
                "title": "Country",
                "description": "Country for this report."
              },
              "language": {
                "type": "string",
                "title": "Language",
                "description": "Language for this report."
              },
              "timeRange": {
                "type": "string",
                "title": "Time range",
                "description": "Time range for this report."
              },
              "searchType": {
                "type": "string",
                "title": "Search type",
                "description": "Search type for this report."
              },
              "status": {
                "type": "string",
                "title": "Report status",
                "description": "Report status for this report."
              },
              "keywords": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "title": "Keywords",
                "description": "Keywords for this report."
              },
              "checkUrl": {
                "type": [
                  "string",
                  "null"
                ],
                "title": "Verify on Google Trends",
                "description": "Open this report in Google Trends for verification."
              },
              "collectedAt": {
                "type": [
                  "string",
                  "null"
                ],
                "title": "Collected at",
                "description": "UTC time when the complete report was received."
              },
              "interestOverTime": {
                "type": [
                  "array",
                  "null"
                ],
                "items": {
                  "type": "object",
                  "properties": {
                    "dateFrom": {
                      "type": "string"
                    },
                    "dateTo": {
                      "type": "string"
                    },
                    "timestamp": {
                      "type": "number"
                    },
                    "missingData": {
                      "type": "boolean"
                    },
                    "values": {
                      "type": "array",
                      "items": {
                        "type": [
                          "number",
                          "string",
                          "null"
                        ]
                      }
                    }
                  }
                },
                "title": "Interest over time",
                "description": "Time series with zero, null and missingData preserved."
              },
              "interestByRegion": {
                "type": [
                  "array",
                  "null"
                ],
                "items": {
                  "type": "object",
                  "properties": {
                    "geoId": {
                      "type": "string"
                    },
                    "geoName": {
                      "type": "string"
                    },
                    "maxValueIndex": {
                      "type": [
                        "number",
                        "null"
                      ]
                    },
                    "values": {
                      "type": "array",
                      "items": {
                        "type": [
                          "number",
                          "string",
                          "null"
                        ]
                      }
                    }
                  }
                },
                "title": "Interest by region",
                "description": "Region indices for the ordered report keywords."
              },
              "relatedQueries": {
                "type": [
                  "object",
                  "null"
                ],
                "title": "Related queries",
                "properties": {
                  "top": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "query": {
                          "type": "string"
                        },
                        "value": {
                          "type": [
                            "number",
                            "string",
                            "null"
                          ]
                        }
                      }
                    }
                  },
                  "rising": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "query": {
                          "type": "string"
                        },
                        "value": {
                          "type": [
                            "number",
                            "string",
                            "null"
                          ]
                        }
                      }
                    }
                  }
                },
                "description": "Top and rising related queries; rising labels remain unchanged."
              },
              "relatedTopics": {
                "type": [
                  "object",
                  "null"
                ],
                "title": "Related topics",
                "properties": {
                  "top": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "topicId": {
                          "type": "string"
                        },
                        "topicTitle": {
                          "type": "string"
                        },
                        "topicType": {
                          "type": "string"
                        },
                        "value": {
                          "type": [
                            "number",
                            "string",
                            "null"
                          ]
                        }
                      }
                    }
                  },
                  "rising": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "topicId": {
                          "type": "string"
                        },
                        "topicTitle": {
                          "type": "string"
                        },
                        "topicType": {
                          "type": "string"
                        },
                        "value": {
                          "type": [
                            "number",
                            "string",
                            "null"
                          ]
                        }
                      }
                    }
                  }
                },
                "description": "Top and rising related topics; rising labels remain unchanged."
              },
              "sectionStatuses": {
                "type": "object",
                "title": "Section statuses",
                "properties": {
                  "interestOverTime": {
                    "type": "string"
                  },
                  "interestByRegion": {
                    "type": "string"
                  },
                  "relatedQueries": {
                    "type": "string"
                  },
                  "relatedTopics": {
                    "type": "string"
                  }
                },
                "description": "Completion status of each section."
              },
              "normalization": {
                "type": "object",
                "title": "Normalization",
                "properties": {
                  "time": {
                    "type": "string"
                  },
                  "regions": {
                    "type": "string"
                  },
                  "keywords": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "note": {
                    "type": "string"
                  }
                },
                "description": "Relative scales of this report. Time and region indices use distinct scales."
              },
              "locked": {
                "type": "boolean",
                "title": "Locked",
                "description": "Locked for this report."
              },
              "reason": {
                "type": "string",
                "title": "Reason",
                "description": "Reason for this report."
              }
            }
          },
          "views": {
            "overview": {
              "title": "Trend reports",
              "transformation": {
                "fields": [
                  "keywords",
                  "mode",
                  "status",
                  "country",
                  "language",
                  "timeRange",
                  "searchType",
                  "collectedAt",
                  "checkUrl"
                ]
              },
              "display": {
                "component": "table",
                "properties": {
                  "keywords": {
                    "label": "Keywords",
                    "format": "array"
                  },
                  "mode": {
                    "label": "Report mode",
                    "format": "text"
                  },
                  "status": {
                    "label": "Report status",
                    "format": "text"
                  },
                  "country": {
                    "label": "Country",
                    "format": "text"
                  },
                  "language": {
                    "label": "Language",
                    "format": "text"
                  },
                  "timeRange": {
                    "label": "Time range",
                    "format": "text"
                  },
                  "searchType": {
                    "label": "Search type",
                    "format": "text"
                  },
                  "collectedAt": {
                    "label": "Collected at",
                    "format": "text"
                  },
                  "checkUrl": {
                    "label": "Verify on Google Trends",
                    "format": "link"
                  }
                }
              }
            },
            "timeline": {
              "title": "Interest over time",
              "transformation": {
                "fields": [
                  "keywords",
                  "interestOverTime",
                  "normalization",
                  "sectionStatuses"
                ]
              },
              "display": {
                "component": "table",
                "properties": {
                  "keywords": {
                    "label": "Keywords",
                    "format": "array"
                  },
                  "interestOverTime": {
                    "label": "Interest over time",
                    "format": "text"
                  },
                  "normalization": {
                    "label": "Normalization",
                    "format": "text"
                  },
                  "sectionStatuses": {
                    "label": "Section statuses",
                    "format": "text"
                  }
                }
              }
            },
            "regions": {
              "title": "Regional interest",
              "transformation": {
                "fields": [
                  "keywords",
                  "interestByRegion",
                  "normalization",
                  "sectionStatuses"
                ]
              },
              "display": {
                "component": "table",
                "properties": {
                  "keywords": {
                    "label": "Keywords",
                    "format": "array"
                  },
                  "interestByRegion": {
                    "label": "Interest by region",
                    "format": "text"
                  },
                  "normalization": {
                    "label": "Normalization",
                    "format": "text"
                  },
                  "sectionStatuses": {
                    "label": "Section statuses",
                    "format": "text"
                  }
                }
              }
            },
            "related": {
              "title": "Related queries and topics",
              "transformation": {
                "fields": [
                  "keywords",
                  "relatedQueries",
                  "relatedTopics",
                  "sectionStatuses"
                ]
              },
              "display": {
                "component": "table",
                "properties": {
                  "keywords": {
                    "label": "Keywords",
                    "format": "array"
                  },
                  "relatedQueries": {
                    "label": "Related queries",
                    "format": "text"
                  },
                  "relatedTopics": {
                    "label": "Related topics",
                    "format": "text"
                  },
                  "sectionStatuses": {
                    "label": "Section statuses",
                    "format": "text"
                  }
                }
              }
            }
          }
        },
        "keyValueStore": {
          "actorKeyValueStoreSchemaVersion": 1,
          "title": "Actor Storage",
          "collections": {
            "runSummary": {
              "title": "Run Summary",
              "description": "Completed trend reports, customer event price and why the run stopped.",
              "key": "RUN_SUMMARY",
              "contentTypes": [
                "application/json"
              ]
            },
            "userMessage": {
              "title": "User Message",
              "description": "What happened in this run and what to change; written when collection stops or reaches an allowance.",
              "key": "USER_MESSAGE",
              "contentTypes": [
                "application/json"
              ]
            },
            "freeLimitsApplied": {
              "title": "Free Limits Applied",
              "description": "Stable id codes for free-plan limits applied this run; omitted on paid runs.",
              "key": "FREE_LIMITS_APPLIED",
              "contentTypes": [
                "application/json"
              ]
            },
            "statusPage": {
              "title": "Live Status Page",
              "description": "HTML status page, updated during the run.",
              "key": "status.html",
              "contentTypes": [
                "text/html"
              ]
            },
            "skippedItems": {
              "title": "Skipped Items",
              "description": "Reports not delivered and the reason.",
              "key": "SKIPPED_ITEMS",
              "contentTypes": [
                "application/json"
              ]
            },
            "diagnostics": {
              "title": "Delivery Diagnostics",
              "description": "Delivery receipts when analytics could not be sent.",
              "keyPrefix": "analytics_failed_",
              "contentTypes": [
                "application/json"
              ]
            },
            "state": {
              "title": "Recovery State",
              "description": "Encrypted run recovery state.",
              "key": "REPORT_STATE",
              "contentTypes": [
                "application/json"
              ]
            }
          }
        }
      },
      "output": {
        "actorOutputSchemaVersion": 1,
        "title": "Google Trends Reports",
        "properties": {
          "reports": {
            "type": "string",
            "title": "Trend reports",
            "template": "{{links.apiDefaultDatasetUrl}}/items?view=overview"
          },
          "liveStatus": {
            "type": "string",
            "title": "Live status",
            "template": "{{links.apiDefaultKeyValueStoreUrl}}/records/status.html"
          },
          "userMessage": {
            "type": "string",
            "title": "User message",
            "template": "{{links.apiDefaultKeyValueStoreUrl}}/records/USER_MESSAGE"
          },
          "runSummary": {
            "type": "string",
            "title": "Run summary",
            "template": "{{links.apiDefaultKeyValueStoreUrl}}/records/RUN_SUMMARY"
          },
          "freeLimitsApplied": {
            "type": "string",
            "title": "FREE limits applied",
            "template": "{{links.apiDefaultKeyValueStoreUrl}}/records/FREE_LIMITS_APPLIED"
          },
          "skippedItems": {
            "type": "string",
            "title": "Skipped reports",
            "template": "{{links.apiDefaultKeyValueStoreUrl}}/records/SKIPPED_ITEMS"
          }
        }
      },
      "readme": "# Google Trends Data Scraper — SEO Keyword Research Tool\n\n[![Apify Actor](https://apify.com/actor-badge?actor=afanasenko/google-trends-scraper)](https://apify.com/afanasenko/google-trends-scraper)\n\n> **Find seasonal demand, compare keywords, and discover related searches with Google Trends data.**\n> Get interest over time and by region for SEO research, content planning, and market analysis.\n\n> **🆓 Free to start:** Get one complete keyword report or a comparison of 2–5 keywords per run.\n> FREE accounts include up to three checks per month. Completed reports use your Apify credits at the FREE rate.\n\n## 🎯 What it does\n\nChoose a country, language, period, and search type, then pick how you want to study your keywords.\n\n| Mode | Input | What it returns |\n|---|---|---|\n| **Full Keyword Reports** (`full`) | Up to 20 phrases in `keywords` | One independent report per phrase: timeline, regions, related queries, and related topics. |\n| **Compare Keywords** (`compare`) | 2–5 phrases in `compareKeywords` | One comparison report with a shared timeline scale and regional comparisons. |\n\n**You get** one dataset row per completed report, ready to export as JSON, CSV, or Excel.\n**The scores show relative interest**, not monthly search counts. Use comparison mode to compare phrases on one scale.\n\n> ⚠️ **Pick your mode first.** Fill the keyword list for that mode. Both mode sections stay visible.\n> Example: selecting `full` but filling only `compareKeywords` leaves the full list empty and starts the `running shoes` demo.\n\n## 📦 Output sample\n\n**What's in a row:**\n\n- **Your request** — `reportId`, `mode`, `keywords`, `country`, `language`, `timeRange`, and `searchType`.\n- **Interest** — `interestOverTime` and `interestByRegion`, with values in the order of the report's keywords.\n- **Related searches** — `relatedQueries` and `relatedTopics`, each with top and rising lists in full reports.\n- **Coverage and checks** — `status`, `sectionStatuses`, `normalization`, `collectedAt`, and a Google Trends `checkUrl`.\n\nA real full report from October 7, 2026. Lists below show selected entries; exports contain every returned entry.\n\n```json\n{\n  \"reportId\": \"aKFIa9eAkiLGmaS3S_1\",\n  \"mode\": \"full\",\n  \"keywords\": [\"running shoes\"],\n  \"country\": \"US\",\n  \"language\": \"en\",\n  \"timeRange\": \"past_12_months\",\n  \"searchType\": \"web\",\n  \"status\": \"ok\",\n  \"checkUrl\": \"https://trends.google.com/trends/explore?hl=en&geo=US&date=today%2012-m&q=running%20shoes\",\n  \"collectedAt\": \"2026-10-07T14:43:16.946Z\",\n  \"interestOverTime\": [{\"dateFrom\":\"2025-10-05\",\"dateTo\":\"2025-10-11\",\"timestamp\":1759622400,\"missingData\":false,\"values\":[16]}],\n  \"interestByRegion\": [{\"geoId\":\"US-WY\",\"geoName\":\"Wyoming\",\"maxValueIndex\":0,\"values\":[100]}],\n  \"relatedQueries\": {\"top\":[{\"query\":\"men's running shoes\",\"value\":100}],\"rising\":[{\"query\":\"brooks adrenaline gts 25\",\"value\":7650}]},\n  \"relatedTopics\": {\"top\":[{\"topicId\":\"/m/06rrc\",\"topicTitle\":\"Shoes\",\"topicType\":\"Shoe\",\"value\":100}],\"rising\":[{\"topicId\":\"/m/04kfh24\",\"topicTitle\":\"Fasciitis\",\"topicType\":\"Inflammation\",\"value\":450}]},\n  \"sectionStatuses\": {\"interestOverTime\":\"ok\",\"interestByRegion\":\"ok\",\"relatedQueries\":\"ok\",\"relatedTopics\":\"ok\"},\n  \"normalization\": {\"time\":\"report_peak_100\",\"regions\":\"report_region_peak_100\",\"keywords\":[\"running shoes\"],\n    \"note\": \"Relative Google Trends indices, not search counts. Comparison keywords share a time scale. Region and time scales are distinct. Independent full reports cannot be compared as one scale.\"\n  }\n}\n```\n\nZero stays `0`; missing values stay `null`. Optional details absent from the source stay absent.\nLabels such as `Breakout` are preserved. Comparisons return `null` for related queries and topics, with `not_available` section statuses.\n\n**Views** — four ways to inspect the same report rows in **Storage → Dataset**:\n\n| View | What each row is | Best for |\n|---|---|---|\n| **Trend reports** (default) | One report, showing keywords, settings, status, collection time, and the verification link. | Reviewing completed reports. |\n| **Interest over time** | The same rows, trimmed to keywords, timeline, normalization, and section statuses. | Seasonal demand and comparison charts. |\n| **Regional interest** | The same rows, trimmed to keywords, regions, normalization, and section statuses. | Geographic research. |\n| **Related queries and topics** | The same rows, trimmed to keywords, related lists, and section statuses. | Content ideas and keyword discovery. |\n\nViews keep the lists inside each report. They do not create a separate row for each date, region, or query.\nThe full dataset schema is included in the [Apify build definition](https://api.apify.com/v2/acts/afanasenko~google-trends-scraper/builds/default), under `actorDefinition.storages.dataset`.\n\n## ⚡ Quick start\n\n1. **Pick your mode first** in **Operation mode**. Both keyword sections stay visible; fill only the matching list.\n2. For your first full report, enter `running shoes` in **Mode 1: Full Keyword Reports**.\n3. Keep the default market and settings, click **Start**, then open **Storage → Dataset**.\n\nThe equivalent JSON input is:\n\n```json\n{\"mode\":\"full\",\"keywords\":[\"running shoes\"]}\n```\n\nThis requests one complete report and fits the FREE allowance when a monthly check remains.\nCountry defaults to the United States, language to English, period to 12 months, and search type to Google Search.\n\n**Clicking Start with an empty form runs a demo.** Full mode uses `running shoes`; comparison mode uses `tea` and `coffee`.\nEach demo produces one report and uses the normal report charge and monthly allowance. Examples are placeholders, not prefilled keywords.\n\n## 🧭 When to use it\n\n- **SEO research** — check whether interest in a topic is growing before building a page around it.\n- **Content calendars** — find recurring peaks and publish before the next seasonal increase.\n- **Product planning** — compare product phrases within the same country and period.\n- **Local marketing** — see where relative interest is strongest before choosing target regions.\n- **YouTube research** — use the YouTube search type to compare interest in video topics.\n\nStart with one market and one period. Change one setting at a time when exploring differences.\nFor comparisons across several keywords, keep them together in one comparison report.\n\n## 🛠 Input\n\n**Operation mode** appears first, above the sections. The form then groups keyword lists and shared settings:\n\n| Section | Purpose |\n|---|---|\n| **🎯 Mode 1: Full Keyword Reports** | Enter independent keywords for full reports. |\n| **🎯 Mode 2: Compare Keywords** | Enter the keywords you want to compare together. |\n| **🌍 Market** | Choose the country and language. |\n| **📊 Report settings** | Choose the time range and search type. |\n\n- **`mode`** — set this first: `full` or `compare`. Fill only its keyword section; both sections remain visible.\n- **`keywords`** — full mode only; up to 20 distinct phrases, one per line.\n- **`compareKeywords`** — comparison mode only; 2–5 distinct phrases, one per line.\n- **`country`** — select a supported country code; default `US`.\n- **`language`** — select a supported language code; default `en`.\n- **`timeRange`** — choose one of the eight periods below; default `past_12_months`.\n- **`searchType`** — `web`, `news`, `youtube`, `images`, or `shopping`; default `web`.\n\n| Time-range value | Period |\n|---|---|\n| `past_hour` | Past hour |\n| `past_4_hours` | Past four hours |\n| `past_day` | Past day |\n| `past_7_days` | Past seven days |\n| `past_30_days` | Past 30 days |\n| `past_90_days` | Past 90 days |\n| `past_12_months` | Past 12 months |\n| `past_5_years` | Past five years |\n\nUse phrases of 2–100 characters. Duplicate phrases and comma-separated lists inside a single entry are rejected before collection.\nFor older API integrations, comparison mode also accepts `keywords` when `compareKeywords` is absent.\n\n## 💰 How much will scraping Google Trends cost?\n\nBilling uses Apify's **Pay Per Event** model with one primary event: **Trend report** (`REPORT`).\nThere is no starting fee. One completed full report or one completed comparison counts as one event.\n\n| Apify plan | Price per Trend report |\n|---|---:|\n| FREE | $0.180 |\n| BRONZE | $0.150 |\n| SILVER | $0.135 |\n| GOLD / PLATINUM / DIAMOND | $0.120 |\n\n**Pricing math:**\n\n| Request | Plan | Report charge |\n|---|---|---:|\n| One full keyword report | FREE | $0.180 |\n| One comparison of five keywords | BRONZE | $0.150 |\n| Ten independent full reports | BRONZE | $1.500 |\n| Twenty independent full reports | GOLD | $2.400 |\n\nA completed check with `no_data` is billed: the requested search was checked successfully.\nErrors, incomplete reports, and locked rows are not billed as Trend reports.\n\nSet **Maximum cost per run** in Apify's run options to control spending. It is not an actor input field.\nBefore collecting another report, the actor checks whether the remaining budget can cover its report charge.\n\n## 🆓 Free vs paid plan\n\n| Feature | FREE plan | Paid plan |\n|---|---|---|\n| Full reports per run | One keyword | Up to 20 keywords |\n| Comparison per report | 2–5 keywords | 2–5 keywords |\n| Related queries and topics | Included in the full report | Included in every full report |\n| Monthly allowance | Up to three checks per user | No FREE monthly cap |\n| Report content | Complete report | Complete report |\n| Recovery of an interrupted run | Supported | Supported |\n\nOn FREE, extra independent keywords appear as **locked rows** without further collection or report charges.\nMonthly limits are tracked centrally. Deleting a run's storage does not replenish the allowance.\n\nIf the monthly allowance is exhausted, collection does not start. Temporary allowance-service outages also stop collection.\nBoth cases show an explanation and create no report charges.\n\nUpgrade to process multiple independent keywords in one run and continue beyond the FREE monthly allowance.\nThe FREE rate uses Apify credits; the allowance does not waive report charges.\n\n## 🧪 Recipes\n\nCopy these inputs into the JSON editor, then adjust the keywords and market.\n\n**Find seasonality for several product phrases**\n\n```json\n{\n  \"mode\": \"full\", \"keywords\": [\"running shoes\", \"trail running shoes\", \"walking shoes\"]\n}\n```\n\nEach phrase gets a full report and its own scale. FREE returns the first report and locks the remaining two.\n\n**Compare demand on a shared scale**\n\n```json\n{\n  \"mode\": \"compare\", \"compareKeywords\": [\"tea\", \"coffee\", \"matcha\"]\n}\n```\n\nAll three phrases share one comparison report and one report charge. Related lists are unavailable in comparison mode.\n\n**Research a Spanish YouTube topic**\n\n```json\n{\n  \"mode\": \"full\", \"keywords\": [\"zapatillas de correr\"],\n  \"country\": \"ES\", \"language\": \"es\",\n  \"timeRange\": \"past_90_days\", \"searchType\": \"youtube\"\n}\n```\n\nThis checks interest in YouTube searches for Spain over the past 90 days.\n\n## 🔁 Resume / checkpoint\n\nTo recover an interrupted run, use **Resurrect** on that same run in Apify Console.\nA saved, already-paid report can be delivered without collecting or charging for it again.\n\nWhen a collection or payment outcome is uncertain, the actor stops instead of automatically repeating it.\nCheck the run message before trying again. Starting a new run requests fresh reports and can create new charges.\n\n## 📡 Live status & storage records\n\nOpen **Storage → Key-value store → `status.html`** to follow progress and see the final next step.\nThe run also saves these records:\n\n| Storage key | Type | What it holds |\n|---|---|---|\n| `status.html` | HTML | Progress, delivered reports, budget information, and the run's message. |\n| `RUN_SUMMARY` | JSON | Report counts, billing status, timing, settings, and the stop reason. |\n| `USER_MESSAGE` | JSON | A plain-language result message and suggested next step. |\n| `FREE_LIMITS_APPLIED` | JSON | FREE restrictions applied during the run, when applicable. |\n| `SKIPPED_ITEMS` | JSON | Keywords skipped because of limits or errors, when present. |\n| `REPORT_STATE` | Encrypted JSON | The recovery journal; an internal record, not an output export. |\n\nUse dataset rows for your analysis. Use `RUN_SUMMARY` and `USER_MESSAGE` to monitor runs from your own workflow.\nIf billing confirmation is pending, the status records show it as pending rather than as a zero charge.\n\n## 🤖 Programmatic / API use\n\n**REST API:** start a comparison using your Apify token.\n\n```bash\ncurl -X POST \\\n  'https://api.apify.com/v2/acts/afanasenko~google-trends-scraper/runs' \\\n  -H \"Authorization: Bearer $APIFY_TOKEN\" \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"mode\":\"compare\",\"compareKeywords\":[\"tea\",\"coffee\"],\"country\":\"US\",\"language\":\"en\"}'\n```\n\nWait for the run to finish, then read its `defaultDatasetId` through the [Apify API](https://docs.apify.com/api/v2).\nSchedules and integrations can send completed results into your regular reporting workflow.\n\n**MCP and AI agents:** connect a compatible client to the [Apify MCP server](https://docs.apify.com/integrations/mcp).\nAn authorized agent can inspect the actor's inputs, run it, and read the results.\nFor example: *“Compare tea and coffee in the United States over the past 12 months.”*\n\n## 💡 Tips & Best Practices\n\n### Getting maximum results\n\n- Start with full mode to discover related queries and topics around one seed phrase.\n- Move your shortlisted phrases into comparison mode to assess them together.\n- Keep country, period, and search type consistent when reviewing a group of keywords.\n\n### Cost optimization\n\n- Compare 2–5 phrases together when you need relative demand: the group counts as one report.\n- Check your keywords before starting. A completed `no_data` check still uses a report charge.\n- Set Maximum cost per run before starting a batch, and reuse downloaded results for repeated analysis.\n\n### Performance\n\n- Keep full-report batches within 20 phrases. Larger lists are rejected before collection starts.\n- Use comparison mode when a single shared report answers your question.\n- Recover an interrupted run with Resurrect before starting a replacement run.\n\n### Data quality\n\n- Open `checkUrl` to spot-check a report in Google Trends with the same settings.\n- Read `sectionStatuses` before using a list; unavailable sections are not zero interest.\n- Keep `0`, `null`, and `Breakout` distinct. Do not convert missing values into measured zeros.\n\n## ❓ FAQ\n\n**How do I find seasonal keywords for SEO?** Run a full report over 12 months and inspect recurring peaks. Use related queries to expand your research.\n\n**Is there a free way to try this Google Trends scraper?** FREE accounts can check one full report or one comparison per run, up to three times per month, using Apify credits.\n\n**Can I use the official Google Trends API instead?** Google offers a [Trends API alpha with limited access](https://developers.google.com/search/apis/trends). This actor provides reports through Apify.\n\n**What alternatives should I use for keyword research?** Use Google Trends for manual exploration. Use a search-volume tool when you need monthly counts rather than relative interest.\n\n**Can I compare results from separate full reports?** Their peaks are normalized independently. Use comparison mode for a shared time scale; regional and time scales also differ.\n\n**Does a score of 100 mean 100 searches?** No. It is a relative index. Scores do not give absolute search counts or prove that one market has more searches.\n\n**Why are some values null or some sections unavailable?** The source did not supply those values. Comparison mode omits related lists; absent optional fields remain absent instead of becoming zero.\n\n**Why was a no-data report charged?** The check completed successfully but found no usable trend data. Errors, incomplete reports, and FREE locked rows do not trigger REPORT.\n\n**Why did I get a demo instead of my keywords?** The selected mode's list was empty. Both sections remain visible; fill `keywords` for full or `compareKeywords` for comparison.\n\n**Does an empty-input demo use my monthly allowance?** Yes. It is one normal report, announced as a demo. The full sample is running shoes; the comparison sample is tea and coffee.\n\n**What happens if collection or payment confirmation fails?** Check `USER_MESSAGE` and `RUN_SUMMARY`. Confirmed zero-cost failures may be retried; unknown outcomes are held to avoid duplicate purchases or charges.\n\n**How fast is a report?** Run time varies with the query and service availability. Open the live status page to follow progress.\n\n## 🔗 Other related actors (same author)\n\n| Your goal | Actor | Why choose it |\n|---|---|---|\n| Seasonality, relative demand, and keyword comparisons | **This Google Trends Scraper** | Timelines, regions, and related searches. |\n| Monthly search volumes and advertising metrics | [Keyword Search Volume](https://apify.com/afanasenko/keyword-search-volume) | Search volume and keyword metrics rather than trend indices. |\n| Links pointing to a website | [Backlink Scraper](https://apify.com/afanasenko/backlink-scraper) | Backlink research alongside keyword planning. |\n\n## 🛟 Support & feedback\n\nOpen an [issue in Apify Console](https://console.apify.com/actors/zyw0irn52b9UmsgFa/issues) with the run ID and your expected result.\nInclude the selected mode and settings so the result can be reproduced. Keep access tokens out of your message.\n\nIf the actor helps your research, a [Store review](https://apify.com/afanasenko/google-trends-scraper) helps other users choose it.\n\n## ⚖️ Is it legal to scrape Google Trends?\n\n[Google Trends data](https://developers.google.com/search/docs/monitor-debug/trends-start) describes aggregate search interest. This actor does not collect individual search histories or private accounts.\nUse the data in accordance with [Google's terms](https://policies.google.com/terms) and the rules that apply to your use case.\n",
      "changelog": "# Changelog\n\n## 0.0.13 — 2026-10-11\n\n- The upgrade hint now shows Apify's current starting price for paid plans: $19/month with $19 in platform credits (it said $29).\n\n## 0.0.12 — 2026-10-07\n\n- Updated the Store title, SEO title, and README heading to Google Trends Data Scraper — SEO Keyword Research Tool.\n\n## 0.0.11 — 2026-10-07\n\n- Rewrote the README using the canonical actor template: early output sample and quick start, input and pricing tables, recipes, recovery, FAQ, and related actors.\n- Added a verified real report sample with all report fields and accurate descriptions of the four dataset views.\n- Clarified FREE credits, empty-form demos, report billing, and same-run recovery without changing runtime or input defaults.\n\n## 0.0.10 — 2026-10-07\n\n- Organized the input introduction into short setup, FREE allowance and billing bullets, following the Instagram Profile Scraper layout.\n- Simplified monthly allowance wording to \"per month\" throughout customer-facing copy.\n\n## 0.0.9 — 2026-10-07\n\n- Moved the operation-mode selector above the collapsible input sections, matching the Instagram Profile Scraper form layout.\n\n## 0.0.8 — 2026-10-07\n\n- Removed sample keyword prefills from the input form; examples now appear only as placeholders.\n- Added a one-report comparison sample for empty comparison input, alongside the existing full-report sample.\n- Kept legacy API comparison inputs compatible and marked empty-form samples as test runs with a clear next step.\n\n## 0.0.7 — 2026-10-07\n\n- Organized the input form into a mode selector, separate full-report and comparison sections, and shared market and report settings.\n- Added a dedicated comparison keyword list and kept existing API comparison inputs compatible.\n- Updated the input reference and comparison examples.\n\n## 0.0.6 — 2026-10-07\n\n- Updated the Store and SEO title to Google Trends Scraper & Data — SEO Keyword Research.\n- Synchronized the README heading with the new title.\n\n## 0.0.5 — 2026-10-07\n\n- Release a FREE reservation after a confirmed zero-cost interruption before dispatch.\n- Keep dispatched requests with uncertain collection outcomes reserved.\n\n## 0.0.4 — 2026-10-07\n\n- Added report examples, input and output reference, normalization guidance and troubleshooting.\n- Documented pending billing confirmation in the status API.\n- Synchronized error masking with the canonical implementation.\n\n## 0.0.3 — 2026-10-07\n\n- Show billing confirmation as pending instead of a zero bill after an ambiguous acknowledgement.\n- Preserve the interrupted-run message when an in-flight request is cancelled.\n- Added an isolated private recovery-test entry point; production builds continue to start main.js.\n\n## 0.0.2 — 2026-10-07\n\n- Added complete input-field descriptions required by the platform schema validator.\n- Excluded local development dependency links from source control.\n\n## 0.0.1 — 2026-10-07\n\n- Added full Google Trends reports and comparisons of 2–5 keywords, eight time ranges and five search types.\n- Added one Trend report billing event, customer budget checks and one complete FREE report per run.\n- Added an atomic monthly FREE allowance, encrypted report recovery, live status and run messages.\n- Preserved missing values, zeros and rising labels; incomplete reports are not billed.\n"
    },
    "buildNumber": "0.0.13",
    "imageDigest": "d82d48ab287ff16f9c272e016d58f8ae7ef9a6ac5129c9b1572de6c153cf9642",
    "actVersion": {
      "sourceType": "SOURCE_FILES",
      "buildTag": "latest",
      "versionNumber": "0.0"
    },
    "usage": {
      "ACTOR_COMPUTE_UNITS": 0.04616777777777778
    }
  }
}