{
  "data": {
    "id": "9hAh7UqGFMaiIDlEq",
    "actId": "l720olFLJbUgIME9n",
    "userId": "zq8lKbpLzTjGDayPC",
    "startedAt": "2026-10-24T10:40:13.869Z",
    "finishedAt": "2026-10-24T10:40:17.271Z",
    "status": "SUCCEEDED",
    "meta": {
      "origin": "CLI"
    },
    "stats": {
      "durationMillis": 3336,
      "runTimeSecs": 3.336,
      "computeUnits": 0.0037066666666666667,
      "imageSizeBytes": 354983936
    },
    "options": {
      "useCache": true,
      "betaPackages": false,
      "memoryMbytes": 4096,
      "diskMbytes": 8192
    },
    "createdByOrganizationMemberUserId": "GK9YjZRyQZVzOdoH5",
    "exitCode": 0,
    "inputSchema": "{\n  \"title\": \"Google Autocomplete Keyword Expansion Scraper Input\",\n  \"description\": \"Expand seed keywords into long-tail Google autocomplete suggestions with eight expansion modes, 134 markets, 78 languages and optional recursion.\",\n  \"type\": \"object\",\n  \"schemaVersion\": 1,\n  \"properties\": {\n    \"keywords\": {\n      \"title\": \"Seed keywords\",\n      \"type\": \"array\",\n      \"description\": \"One or more seeds. 1-3 word seeds return the most suggestions. Each seed is expanded according to `mode`.\",\n      \"editor\": \"stringList\",\n      \"default\": [\n        \"python tutorial\"\n      ],\n      \"prefill\": [\n        \"python tutorial\"\n      ]\n    },\n    \"mode\": {\n      \"title\": \"Expansion mode\",\n      \"type\": \"string\",\n      \"description\": \"How each seed is expanded. `all` runs every strategy; `exact` queries only the seed; `alphabet` adds a-z and 0-9 before and after; `questions` uses locale question words; `modifiers` adds prepositions and buyer-intent words; `related` adds trailing-space, wildcard, local, review and price variants.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"all\",\n        \"exact\",\n        \"alphabet\",\n        \"questions\",\n        \"modifiers\",\n        \"prepositions\",\n        \"comparisons\",\n        \"related\"\n      ],\n      \"enumTitles\": [\n        \"All strategies (deepest)\",\n        \"Exact seed only\",\n        \"Alphabet + digits (a-z, 0-9, prefix and suffix)\",\n        \"Question words (locale-aware)\",\n        \"Modifiers (prepositions + buyer intent)\",\n        \"Prepositions only\",\n        \"Comparisons (vs / or / versus)\",\n        \"Related (wildcard, near me, review, price)\"\n      ],\n      \"default\": \"all\",\n      \"prefill\": \"exact\"\n    },\n    \"country\": {\n      \"title\": \"Country (gl)\",\n      \"type\": \"string\",\n      \"description\": \"Google market used for the `gl` parameter. Changes ranking and local phrasing. 134 markets were verified against the live endpoint; the legacy `ALL` value maps to US.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"US\",\n        \"GB\",\n        \"CA\",\n        \"AU\",\n        \"NZ\",\n        \"IE\",\n        \"DE\",\n        \"FR\",\n        \"ES\",\n        \"IT\",\n        \"NL\",\n        \"BE\",\n        \"AT\",\n        \"CH\",\n        \"PT\",\n        \"GR\",\n        \"CZ\",\n        \"PL\",\n        \"SE\",\n        \"NO\",\n        \"DK\",\n        \"FI\",\n        \"HU\",\n        \"RO\",\n        \"BG\",\n        \"HR\",\n        \"SK\",\n        \"SI\",\n        \"EE\",\n        \"LV\",\n        \"LT\",\n        \"LU\",\n        \"MT\",\n        \"CY\",\n        \"IS\",\n        \"LI\",\n        \"MC\",\n        \"AD\",\n        \"SM\",\n        \"JP\",\n        \"KR\",\n        \"CN\",\n        \"TW\",\n        \"HK\",\n        \"MO\",\n        \"IN\",\n        \"PK\",\n        \"BD\",\n        \"LK\",\n        \"NP\",\n        \"AF\",\n        \"ID\",\n        \"TH\",\n        \"VN\",\n        \"PH\",\n        \"MY\",\n        \"SG\",\n        \"BN\",\n        \"MM\",\n        \"KH\",\n        \"LA\",\n        \"TL\",\n        \"BR\",\n        \"MX\",\n        \"AR\",\n        \"CL\",\n        \"CO\",\n        \"PE\",\n        \"VE\",\n        \"EC\",\n        \"BO\",\n        \"PY\",\n        \"UY\",\n        \"GT\",\n        \"CR\",\n        \"PA\",\n        \"DO\",\n        \"PR\",\n        \"CU\",\n        \"SV\",\n        \"HN\",\n        \"NI\",\n        \"JM\",\n        \"TT\",\n        \"BB\",\n        \"RU\",\n        \"TR\",\n        \"UA\",\n        \"BY\",\n        \"KZ\",\n        \"UZ\",\n        \"AZ\",\n        \"AM\",\n        \"GE\",\n        \"MD\",\n        \"RS\",\n        \"BA\",\n        \"MK\",\n        \"AL\",\n        \"ME\",\n        \"XK\",\n        \"ZA\",\n        \"NG\",\n        \"EG\",\n        \"MA\",\n        \"DZ\",\n        \"TN\",\n        \"KE\",\n        \"GH\",\n        \"ET\",\n        \"UG\",\n        \"TZ\",\n        \"RW\",\n        \"ZW\",\n        \"SN\",\n        \"CI\",\n        \"CM\",\n        \"MZ\",\n        \"AO\",\n        \"ZM\",\n        \"AE\",\n        \"SA\",\n        \"IL\",\n        \"QA\",\n        \"KW\",\n        \"BH\",\n        \"OM\",\n        \"JO\",\n        \"LB\",\n        \"SY\",\n        \"IQ\",\n        \"IR\",\n        \"YE\",\n        \"PS\",\n        \"ALL\"\n      ],\n      \"enumTitles\": [\n        \"United States\",\n        \"United Kingdom\",\n        \"Canada\",\n        \"Australia\",\n        \"New Zealand\",\n        \"Ireland\",\n        \"Germany\",\n        \"France\",\n        \"Spain\",\n        \"Italy\",\n        \"Netherlands\",\n        \"Belgium\",\n        \"Austria\",\n        \"Switzerland\",\n        \"Portugal\",\n        \"Greece\",\n        \"Czechia\",\n        \"Poland\",\n        \"Sweden\",\n        \"Norway\",\n        \"Denmark\",\n        \"Finland\",\n        \"Hungary\",\n        \"Romania\",\n        \"Bulgaria\",\n        \"Croatia\",\n        \"Slovakia\",\n        \"Slovenia\",\n        \"Estonia\",\n        \"Latvia\",\n        \"Lithuania\",\n        \"Luxembourg\",\n        \"Malta\",\n        \"Cyprus\",\n        \"Iceland\",\n        \"Liechtenstein\",\n        \"Monaco\",\n        \"Andorra\",\n        \"San Marino\",\n        \"Japan\",\n        \"South Korea\",\n        \"China\",\n        \"Taiwan\",\n        \"Hong Kong\",\n        \"Macao\",\n        \"India\",\n        \"Pakistan\",\n        \"Bangladesh\",\n        \"Sri Lanka\",\n        \"Nepal\",\n        \"Afghanistan\",\n        \"Indonesia\",\n        \"Thailand\",\n        \"Vietnam\",\n        \"Philippines\",\n        \"Malaysia\",\n        \"Singapore\",\n        \"Brunei\",\n        \"Myanmar\",\n        \"Cambodia\",\n        \"Laos\",\n        \"Timor-Leste\",\n        \"Brazil\",\n        \"Mexico\",\n        \"Argentina\",\n        \"Chile\",\n        \"Colombia\",\n        \"Peru\",\n        \"Venezuela\",\n        \"Ecuador\",\n        \"Bolivia\",\n        \"Paraguay\",\n        \"Uruguay\",\n        \"Guatemala\",\n        \"Costa Rica\",\n        \"Panama\",\n        \"Dominican Republic\",\n        \"Puerto Rico\",\n        \"Cuba\",\n        \"El Salvador\",\n        \"Honduras\",\n        \"Nicaragua\",\n        \"Jamaica\",\n        \"Trinidad and Tobago\",\n        \"Barbados\",\n        \"Russia\",\n        \"Turkey\",\n        \"Ukraine\",\n        \"Belarus\",\n        \"Kazakhstan\",\n        \"Uzbekistan\",\n        \"Azerbaijan\",\n        \"Armenia\",\n        \"Georgia\",\n        \"Moldova\",\n        \"Serbia\",\n        \"Bosnia and Herzegovina\",\n        \"North Macedonia\",\n        \"Albania\",\n        \"Montenegro\",\n        \"Kosovo\",\n        \"South Africa\",\n        \"Nigeria\",\n        \"Egypt\",\n        \"Morocco\",\n        \"Algeria\",\n        \"Tunisia\",\n        \"Kenya\",\n        \"Ghana\",\n        \"Ethiopia\",\n        \"Uganda\",\n        \"Tanzania\",\n        \"Rwanda\",\n        \"Zimbabwe\",\n        \"Senegal\",\n        \"Cote d'Ivoire\",\n        \"Cameroon\",\n        \"Mozambique\",\n        \"Angola\",\n        \"Zambia\",\n        \"United Arab Emirates\",\n        \"Saudi Arabia\",\n        \"Israel\",\n        \"Qatar\",\n        \"Kuwait\",\n        \"Bahrain\",\n        \"Oman\",\n        \"Jordan\",\n        \"Lebanon\",\n        \"Syria\",\n        \"Iraq\",\n        \"Iran\",\n        \"Yemen\",\n        \"Palestine\",\n        \"All markets (legacy — maps to US)\"\n      ],\n      \"default\": \"US\",\n      \"prefill\": \"US\"\n    },\n    \"language\": {\n      \"title\": \"Language (hl)\",\n      \"type\": \"string\",\n      \"description\": \"Language used for the `hl` parameter and for the locale-aware question and modifier words. 19 languages have native expansion vocabularies; the rest fall back to English modifiers.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"en\",\n        \"es\",\n        \"fr\",\n        \"de\",\n        \"it\",\n        \"pt\",\n        \"nl\",\n        \"pl\",\n        \"sv\",\n        \"no\",\n        \"da\",\n        \"fi\",\n        \"cs\",\n        \"el\",\n        \"hu\",\n        \"ro\",\n        \"bg\",\n        \"hr\",\n        \"sk\",\n        \"sl\",\n        \"et\",\n        \"lv\",\n        \"lt\",\n        \"ga\",\n        \"is\",\n        \"mt\",\n        \"ru\",\n        \"uk\",\n        \"be\",\n        \"sr\",\n        \"bs\",\n        \"mk\",\n        \"sq\",\n        \"ar\",\n        \"tr\",\n        \"he\",\n        \"fa\",\n        \"ur\",\n        \"ku\",\n        \"ja\",\n        \"ko\",\n        \"zh-CN\",\n        \"zh-TW\",\n        \"hi\",\n        \"bn\",\n        \"ta\",\n        \"te\",\n        \"ml\",\n        \"mr\",\n        \"gu\",\n        \"kn\",\n        \"pa\",\n        \"ne\",\n        \"si\",\n        \"my\",\n        \"id\",\n        \"th\",\n        \"vi\",\n        \"ms\",\n        \"tl\",\n        \"km\",\n        \"lo\",\n        \"sw\",\n        \"am\",\n        \"ha\",\n        \"yo\",\n        \"ig\",\n        \"zu\",\n        \"xh\",\n        \"af\",\n        \"az\",\n        \"kk\",\n        \"uz\",\n        \"ky\",\n        \"tg\",\n        \"mn\",\n        \"ka\",\n        \"hy\"\n      ],\n      \"enumTitles\": [\n        \"English\",\n        \"Spanish\",\n        \"French\",\n        \"German\",\n        \"Italian\",\n        \"Portuguese\",\n        \"Dutch\",\n        \"Polish\",\n        \"Swedish\",\n        \"Norwegian\",\n        \"Danish\",\n        \"Finnish\",\n        \"Czech\",\n        \"Greek\",\n        \"Hungarian\",\n        \"Romanian\",\n        \"Bulgarian\",\n        \"Croatian\",\n        \"Slovak\",\n        \"Slovenian\",\n        \"Estonian\",\n        \"Latvian\",\n        \"Lithuanian\",\n        \"Irish\",\n        \"Icelandic\",\n        \"Maltese\",\n        \"Russian\",\n        \"Ukrainian\",\n        \"Belarusian\",\n        \"Serbian\",\n        \"Bosnian\",\n        \"Macedonian\",\n        \"Albanian\",\n        \"Arabic\",\n        \"Turkish\",\n        \"Hebrew\",\n        \"Persian\",\n        \"Urdu\",\n        \"Kurdish\",\n        \"Japanese\",\n        \"Korean\",\n        \"Chinese (Simplified)\",\n        \"Chinese (Traditional)\",\n        \"Hindi\",\n        \"Bengali\",\n        \"Tamil\",\n        \"Telugu\",\n        \"Malayalam\",\n        \"Marathi\",\n        \"Gujarati\",\n        \"Kannada\",\n        \"Punjabi\",\n        \"Nepali\",\n        \"Sinhala\",\n        \"Burmese\",\n        \"Indonesian\",\n        \"Thai\",\n        \"Vietnamese\",\n        \"Malay\",\n        \"Tagalog\",\n        \"Khmer\",\n        \"Lao\",\n        \"Swahili\",\n        \"Amharic\",\n        \"Hausa\",\n        \"Yoruba\",\n        \"Igbo\",\n        \"Zulu\",\n        \"Xhosa\",\n        \"Afrikaans\",\n        \"Azerbaijani\",\n        \"Kazakh\",\n        \"Uzbek\",\n        \"Kyrgyz\",\n        \"Tajik\",\n        \"Mongolian\",\n        \"Georgian\",\n        \"Armenian\"\n      ],\n      \"default\": \"en\",\n      \"prefill\": \"en\"\n    },\n    \"source\": {\n      \"title\": \"Google surface\",\n      \"type\": \"string\",\n      \"description\": \"Which Google autocomplete surface to query: web, YouTube or Shopping. `all` runs all three and multiplies the request count.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"web\",\n        \"youtube\",\n        \"shopping\",\n        \"all\"\n      ],\n      \"enumTitles\": [\n        \"Google web\",\n        \"YouTube\",\n        \"Google Shopping\",\n        \"All three surfaces\"\n      ],\n      \"default\": \"web\",\n      \"prefill\": \"web\"\n    },\n    \"maxItems\": {\n      \"title\": \"Max records\",\n      \"type\": \"integer\",\n      \"description\": \"Hard cap on dataset records across all seeds and sources. Flat mode counts suggestions; tree mode counts one record per seed/source.\",\n      \"minimum\": 1,\n      \"maximum\": 50000,\n      \"default\": 5000,\n      \"prefill\": 3\n    },\n    \"maxSuggestionsPerSeed\": {\n      \"title\": \"Max suggestions per seed\",\n      \"type\": \"integer\",\n      \"description\": \"Cap on suggestions collected for one seed, applied after all expansion queries have run. Defaults to 2,000 when omitted (legacy maxItemsPerKeyword is honoured).\",\n      \"minimum\": 1,\n      \"maximum\": 10000,\n      \"prefill\": 3\n    },\n    \"minLength\": {\n      \"title\": \"Min characters\",\n      \"type\": \"integer\",\n      \"description\": \"Drop suggestions shorter than this many characters.\",\n      \"minimum\": 1,\n      \"maximum\": 200\n    },\n    \"maxLength\": {\n      \"title\": \"Max characters\",\n      \"type\": \"integer\",\n      \"description\": \"Drop suggestions longer than this many characters.\",\n      \"minimum\": 1,\n      \"maximum\": 500\n    },\n    \"containsKeyword\": {\n      \"title\": \"Must contain\",\n      \"type\": \"string\",\n      \"description\": \"Keep only suggestions containing this substring (case-insensitive). Prefix with `!` to exclude matches instead.\",\n      \"editor\": \"textfield\"\n    },\n    \"outputFormat\": {\n      \"title\": \"Output shape\",\n      \"type\": \"string\",\n      \"description\": \"`flat` emits one row per suggestion. `tree` emits one row per seed and source with a nested suggestions array (the legacy shape).\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"flat\",\n        \"tree\"\n      ],\n      \"enumTitles\": [\n        \"Flat (one row per suggestion)\",\n        \"Tree (nested per seed)\"\n      ],\n      \"default\": \"flat\",\n      \"prefill\": \"flat\"\n    },\n    \"expansionDepth\": {\n      \"title\": \"Recursion depth\",\n      \"type\": \"string\",\n      \"description\": \"Re-query the first 15 discovered suggestions to go one or two levels deeper. Off for the cheapest run.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"0\",\n        \"1\",\n        \"2\"\n      ],\n      \"enumTitles\": [\n        \"Off (mode only)\",\n        \"One extra level (top 15 suggestions)\",\n        \"Two extra levels\"\n      ],\n      \"default\": \"0\",\n      \"prefill\": \"0\"\n    },\n    \"dedupeAcrossSeeds\": {\n      \"title\": \"Dedupe across seeds\",\n      \"type\": \"boolean\",\n      \"description\": \"Emit a phrase only once per run. Off keeps every seed complete; on removes overlaps between seeds.\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"includeIntent\": {\n      \"title\": \"Add intent tags\",\n      \"type\": \"boolean\",\n      \"description\": \"Add a deterministic intent tag (question, comparison, local, transactional, commercial, informational) where a language vocabulary matches.\",\n      \"default\": true,\n      \"prefill\": false\n    }\n  },\n  \"required\": [\n    \"keywords\"\n  ]\n}",
    "readme": "# Google Autocomplete Keyword Expansion Scraper\n\nTurn a short seed keyword into the long-tail phrases people actually type into Google — then keep the provenance that makes the list usable: which query surfaced each phrase, where it ranked, which market and language it came from, and Google's own relevance score.\n\nSuggestions come straight from Google's public autocomplete endpoint. No login, no API key, no browser, no cookies.\n\n## What it does\n\n- Runs one of eight expansion modes per seed, from a single exact query to a full sweep that combines alphabet, digits, questions, modifiers, comparisons and related variants.\n- Adds letters and numbers **before and after** the seed (`coffee a`, `coffee 1`, `a coffee`, `1 coffee`), not just the usual A–Z suffix.\n- Uses native question and modifier vocabularies for 19 languages, so Spanish and Japanese seeds are expanded with Spanish and Japanese words instead of English ones.\n- Can query Google web, YouTube and Shopping in one run.\n- Optionally re-queries the first 15 discoveries one or two levels deeper.\n- Targets 134 verified Google markets and 78 verified interface languages.\n- Caps the run with a global record limit and a per-seed suggestion limit. The per-seed cap limits collected rows rather than aborting the A–Z sweep, so a full alphabet sweep is never silently cut short.\n- Keeps the old flat and tree record shapes, so existing tasks and integrations keep working.\n\n## Modes\n\n| Mode | What it sends | Typical unique phrases per seed |\n|---|---|---:|\n| `exact` | The seed only. | 10–15 |\n| `alphabet` | `seed a` … `seed z`, `seed 0` … `seed 9`, and the same tokens before the seed. | ~1,000 |\n| `questions` | Native question words before and after the seed. | ~300–450 |\n| `prepositions` | Native prepositions after the seed. | ~50–150 |\n| `comparisons` | `vs`, `or`, `versus` after the seed and `vs seed`. | ~15–50 |\n| `modifiers` | Prepositions plus buyer-intent words before and after the seed. | ~300–470 |\n| `related` | Trailing-space, wildcard, near-me, review and price variants. | ~30–70 |\n| `all` | The deduplicated union of every strategy. | ~1,100–2,000 |\n\nCounts are for mainstream 1–3 word seeds. Obscure or long seeds return far fewer suggestions because Google completes prefixes, not topics.\n\n## Output\n\nOne flat row per suggestion (default):\n\n| Field | Meaning |\n|---|---|\n| `keyword` / `text` | The suggested phrase. `text` is the legacy alias. |\n| `seed` / `source_keyword` | The seed this phrase came from. `source_keyword` is the legacy alias. |\n| `type` | Which expansion produced it: `suggestion`, `alphabet`, `question`, `modifier`, `preposition`, `comparison`, `related` or `recursive`. |\n| `position` | Its 1-based rank in Google's response to that query. |\n| `expansion_query` | The exact query sent to Google, when different from the seed. |\n| `locale`, `country`, `language` | The market and interface language used. |\n| `source` | `web`, `youtube` or `shopping`. |\n| `sourceUrl` | The exact Suggest request URL, for traceability. |\n| `relevance` | Google's own ranking score for the phrase, when the chrome dialect returns it. |\n| `suggestion_type`, `sub_types` | Google's raw suggestion tag and numeric sub-type codes. |\n| `verbatim_relevance` | Google's query-level verbatim score. |\n| `depth`, `parent_keyword` | Recursion level and the query that produced a deeper suggestion. |\n| `is_question`, `word_count`, `intent` | Deterministic local tags. `intent` is added when a language vocabulary matches. |\n| `mode`, `recordType`, `scrapedAt` | Run metadata and the legacy record marker. |\n\n`tree` mode emits one record per seed and source with a nested `suggestions[]` array and a `type_counts` summary. Its legacy keys (`source_keyword`, `mode`, `country`, `language`, `suggestion_count`, `suggestions`, `scrapedAt`) are unchanged.\n\n## Input\n\n| Field | Default | Notes |\n|---|---|---|\n| `keywords` | `[\"python tutorial\"]` | Required. One or more seeds; 1–3 words work best. |\n| `mode` | `all` | One of the eight modes above. |\n| `country` | `US` | 134 verified Google markets, plus a legacy `ALL` value that maps to `US`. |\n| `language` | `en` | 78 verified Google languages. |\n| `source` | `web` | `web`, `youtube`, `shopping` or `all`. |\n| `maxItems` | `5000` | Global record cap. Flat counts suggestions; tree counts seed/source records. |\n| `maxSuggestionsPerSeed` | – | Cap on collected suggestions per seed; the depth-0 query plan still runs. |\n| `minLength`, `maxLength` | unset | Drop suggestions outside the character range. |\n| `containsKeyword` | unset | Keep suggestions containing a substring; prefix with `!` to exclude. |\n| `outputFormat` | `flat` | `flat` or legacy `tree`. |\n| `expansionDepth` | `0` | `0`, `1` or `2`: re-query the first 15 discoveries. |\n| `dedupeAcrossSeeds` | `false` | Emit a phrase only once per run. |\n| `includeIntent` | `true` | Add the deterministic intent tag. |\n\nOld tasks that send `maxItemsPerKeyword` still work: it maps to `maxSuggestionsPerSeed`. `country: \"ALL\"` is mapped to `US` with a warning because Google has no `ALL` market.\n\nThe input prefill is one `python tutorial` seed in `exact` mode, capped at 3 records.\n\n### Examples\n\nExact, cheapest run:\n\n```json\n{\"keywords\": [\"coffee\"], \"mode\": \"exact\", \"maxItems\": 3}\n```\n\nFull English sweep with one extra recursion level:\n\n```json\n{\"keywords\": [\"running shoes\"], \"mode\": \"all\", \"country\": \"US\", \"language\": \"en\", \"expansionDepth\": 1, \"maxItems\": 5000}\n```\n\nSpanish market with native question words on the web and YouTube:\n\n```json\n{\"keywords\": [\"café\"], \"mode\": \"questions\", \"country\": \"ES\", \"language\": \"es\", \"source\": \"all\"}\n```\n\nLegacy nested output:\n\n```json\n{\"keywords\": [\"coffee\"], \"mode\": \"all\", \"outputFormat\": \"tree\", \"maxSuggestionsPerKeyword\": 100}\n```\n\n## How it works\n\nEach mode turns the seed into a fixed, deduplicated list of Suggest queries. The actor sends them with a browser-like client, reads the JSON array Google returns, and normalises four response dialects (chrome, firefox, safari, and the JSONP variants). It detects a block from the status code, an HTML content type, a `/sorry` URL or the \"unusual traffic\" page, and switches from a direct connection to its included Apify datacenter proxy. If the automatic proxy cannot be created, it retries with the lighter firefox dialect. There is no proxy setting to configure, no login and no API key.\n\n## FAQ\n\n**Do I need a proxy or a Google account?**\nNo. The actor starts with a direct connection and uses its included Apify proxy only after Google blocks the direct one. There is nothing to configure and no credential to supply.\n\n**How many suggestions will one seed return?**\nIt depends on the seed and mode. A mainstream 1–3 word seed with `all` typically returns 1,100–2,000 unique phrases. A long or obscure seed can return fewer than 100 because autocomplete only completes prefixes.\n\n**Why are there no search-volume numbers?**\nGoogle autocomplete does not expose search volume. `relevance` is Google's internal ranking score for the phrase, and it is useful for ordering, not for estimating monthly searches. Use a separate keyword-volume source if you need exact demand.\n\n**What is the difference between country and language?**\n`country` (`gl`) changes which suggestions Google considers locally relevant. `language` (`hl`) changes the interface language and the native question/modifier words the actor uses. Setting both gives the most authentic local list.\n\n**Can I get the same phrase from two seeds?**\nBy default yes, because each seed stays complete. Turn on `dedupeAcrossSeeds` to emit each phrase once per run.\n\n**What does recursion do?**\n`expansionDepth` 1 re-queries the first 15 suggestions, and depth 2 re-queries the first 15 results of that pass. It costs about 15 extra requests per level and can add hundreds of phrases, especially with `exact`.\n\n**Why is a phrase I know missing?**\nGoogle filters some commercial, medical and political suggestions, and it varies results by market and time. The actor reports what Google returns; it does not invent missing phrases.\n\n**Does the actor work with non-Latin scripts?**\nYes. It preserves the original script and corrects the response charset, including Japanese, Korean, Chinese, Russian, Arabic, Hebrew, Greek, Polish, Turkish, Thai, Vietnamese and the Indic languages.\n\n**Is this affiliated with Google?**\nNo. It reads Google's public autocomplete endpoint and is not operated by or affiliated with Google. You are responsible for how you use the output.\n\n## Limits\n\n- Google's autocomplete endpoint is undocumented and can change or throttle without notice.\n- Heavy direct traffic can be blocked; the actor then switches to its included Apify datacenter proxy automatically. No residential proxy is used.\n- Autocomplete completes prefixes, so very long seeds return little.\n- There is no pagination: each query returns at most 15 suggestions (10 on the fallback dialect). Coverage comes from more queries, not more pages.\n- Google may omit suggestions for sensitive or highly commercial queries.\n- No search volume, CPC, difficulty, People Also Ask or entity metadata is fabricated.\n",
    "actorDefinition": {
      "actorSpecification": 1,
      "name": "google-autocomplete-keyword-expansion-scraper",
      "title": "Google Autocomplete Keyword Expansion Scraper",
      "description": "Expand 1-3 word seeds into long-tail Google autocomplete keywords with eight modes, prefix+suffix A-Z, 0-9, locale-aware questions, related variants, 134 markets, 78 languages, YouTube and Shopping sources.",
      "version": "1.0",
      "buildTag": "latest",
      "dockerfile": "../Dockerfile",
      "readme": "# Google Autocomplete Keyword Expansion Scraper\n\nTurn a short seed keyword into the long-tail phrases people actually type into Google — then keep the provenance that makes the list usable: which query surfaced each phrase, where it ranked, which market and language it came from, and Google's own relevance score.\n\nSuggestions come straight from Google's public autocomplete endpoint. No login, no API key, no browser, no cookies.\n\n## What it does\n\n- Runs one of eight expansion modes per seed, from a single exact query to a full sweep that combines alphabet, digits, questions, modifiers, comparisons and related variants.\n- Adds letters and numbers **before and after** the seed (`coffee a`, `coffee 1`, `a coffee`, `1 coffee`), not just the usual A–Z suffix.\n- Uses native question and modifier vocabularies for 19 languages, so Spanish and Japanese seeds are expanded with Spanish and Japanese words instead of English ones.\n- Can query Google web, YouTube and Shopping in one run.\n- Optionally re-queries the first 15 discoveries one or two levels deeper.\n- Targets 134 verified Google markets and 78 verified interface languages.\n- Caps the run with a global record limit and a per-seed suggestion limit. The per-seed cap limits collected rows rather than aborting the A–Z sweep, so a full alphabet sweep is never silently cut short.\n- Keeps the old flat and tree record shapes, so existing tasks and integrations keep working.\n\n## Modes\n\n| Mode | What it sends | Typical unique phrases per seed |\n|---|---|---:|\n| `exact` | The seed only. | 10–15 |\n| `alphabet` | `seed a` … `seed z`, `seed 0` … `seed 9`, and the same tokens before the seed. | ~1,000 |\n| `questions` | Native question words before and after the seed. | ~300–450 |\n| `prepositions` | Native prepositions after the seed. | ~50–150 |\n| `comparisons` | `vs`, `or`, `versus` after the seed and `vs seed`. | ~15–50 |\n| `modifiers` | Prepositions plus buyer-intent words before and after the seed. | ~300–470 |\n| `related` | Trailing-space, wildcard, near-me, review and price variants. | ~30–70 |\n| `all` | The deduplicated union of every strategy. | ~1,100–2,000 |\n\nCounts are for mainstream 1–3 word seeds. Obscure or long seeds return far fewer suggestions because Google completes prefixes, not topics.\n\n## Output\n\nOne flat row per suggestion (default):\n\n| Field | Meaning |\n|---|---|\n| `keyword` / `text` | The suggested phrase. `text` is the legacy alias. |\n| `seed` / `source_keyword` | The seed this phrase came from. `source_keyword` is the legacy alias. |\n| `type` | Which expansion produced it: `suggestion`, `alphabet`, `question`, `modifier`, `preposition`, `comparison`, `related` or `recursive`. |\n| `position` | Its 1-based rank in Google's response to that query. |\n| `expansion_query` | The exact query sent to Google, when different from the seed. |\n| `locale`, `country`, `language` | The market and interface language used. |\n| `source` | `web`, `youtube` or `shopping`. |\n| `sourceUrl` | The exact Suggest request URL, for traceability. |\n| `relevance` | Google's own ranking score for the phrase, when the chrome dialect returns it. |\n| `suggestion_type`, `sub_types` | Google's raw suggestion tag and numeric sub-type codes. |\n| `verbatim_relevance` | Google's query-level verbatim score. |\n| `depth`, `parent_keyword` | Recursion level and the query that produced a deeper suggestion. |\n| `is_question`, `word_count`, `intent` | Deterministic local tags. `intent` is added when a language vocabulary matches. |\n| `mode`, `recordType`, `scrapedAt` | Run metadata and the legacy record marker. |\n\n`tree` mode emits one record per seed and source with a nested `suggestions[]` array and a `type_counts` summary. Its legacy keys (`source_keyword`, `mode`, `country`, `language`, `suggestion_count`, `suggestions`, `scrapedAt`) are unchanged.\n\n## Input\n\n| Field | Default | Notes |\n|---|---|---|\n| `keywords` | `[\"python tutorial\"]` | Required. One or more seeds; 1–3 words work best. |\n| `mode` | `all` | One of the eight modes above. |\n| `country` | `US` | 134 verified Google markets, plus a legacy `ALL` value that maps to `US`. |\n| `language` | `en` | 78 verified Google languages. |\n| `source` | `web` | `web`, `youtube`, `shopping` or `all`. |\n| `maxItems` | `5000` | Global record cap. Flat counts suggestions; tree counts seed/source records. |\n| `maxSuggestionsPerSeed` | – | Cap on collected suggestions per seed; the depth-0 query plan still runs. |\n| `minLength`, `maxLength` | unset | Drop suggestions outside the character range. |\n| `containsKeyword` | unset | Keep suggestions containing a substring; prefix with `!` to exclude. |\n| `outputFormat` | `flat` | `flat` or legacy `tree`. |\n| `expansionDepth` | `0` | `0`, `1` or `2`: re-query the first 15 discoveries. |\n| `dedupeAcrossSeeds` | `false` | Emit a phrase only once per run. |\n| `includeIntent` | `true` | Add the deterministic intent tag. |\n\nOld tasks that send `maxItemsPerKeyword` still work: it maps to `maxSuggestionsPerSeed`. `country: \"ALL\"` is mapped to `US` with a warning because Google has no `ALL` market.\n\nThe input prefill is one `python tutorial` seed in `exact` mode, capped at 3 records.\n\n### Examples\n\nExact, cheapest run:\n\n```json\n{\"keywords\": [\"coffee\"], \"mode\": \"exact\", \"maxItems\": 3}\n```\n\nFull English sweep with one extra recursion level:\n\n```json\n{\"keywords\": [\"running shoes\"], \"mode\": \"all\", \"country\": \"US\", \"language\": \"en\", \"expansionDepth\": 1, \"maxItems\": 5000}\n```\n\nSpanish market with native question words on the web and YouTube:\n\n```json\n{\"keywords\": [\"café\"], \"mode\": \"questions\", \"country\": \"ES\", \"language\": \"es\", \"source\": \"all\"}\n```\n\nLegacy nested output:\n\n```json\n{\"keywords\": [\"coffee\"], \"mode\": \"all\", \"outputFormat\": \"tree\", \"maxSuggestionsPerKeyword\": 100}\n```\n\n## How it works\n\nEach mode turns the seed into a fixed, deduplicated list of Suggest queries. The actor sends them with a browser-like client, reads the JSON array Google returns, and normalises four response dialects (chrome, firefox, safari, and the JSONP variants). It detects a block from the status code, an HTML content type, a `/sorry` URL or the \"unusual traffic\" page, and switches from a direct connection to its included Apify datacenter proxy. If the automatic proxy cannot be created, it retries with the lighter firefox dialect. There is no proxy setting to configure, no login and no API key.\n\n## FAQ\n\n**Do I need a proxy or a Google account?**\nNo. The actor starts with a direct connection and uses its included Apify proxy only after Google blocks the direct one. There is nothing to configure and no credential to supply.\n\n**How many suggestions will one seed return?**\nIt depends on the seed and mode. A mainstream 1–3 word seed with `all` typically returns 1,100–2,000 unique phrases. A long or obscure seed can return fewer than 100 because autocomplete only completes prefixes.\n\n**Why are there no search-volume numbers?**\nGoogle autocomplete does not expose search volume. `relevance` is Google's internal ranking score for the phrase, and it is useful for ordering, not for estimating monthly searches. Use a separate keyword-volume source if you need exact demand.\n\n**What is the difference between country and language?**\n`country` (`gl`) changes which suggestions Google considers locally relevant. `language` (`hl`) changes the interface language and the native question/modifier words the actor uses. Setting both gives the most authentic local list.\n\n**Can I get the same phrase from two seeds?**\nBy default yes, because each seed stays complete. Turn on `dedupeAcrossSeeds` to emit each phrase once per run.\n\n**What does recursion do?**\n`expansionDepth` 1 re-queries the first 15 suggestions, and depth 2 re-queries the first 15 results of that pass. It costs about 15 extra requests per level and can add hundreds of phrases, especially with `exact`.\n\n**Why is a phrase I know missing?**\nGoogle filters some commercial, medical and political suggestions, and it varies results by market and time. The actor reports what Google returns; it does not invent missing phrases.\n\n**Does the actor work with non-Latin scripts?**\nYes. It preserves the original script and corrects the response charset, including Japanese, Korean, Chinese, Russian, Arabic, Hebrew, Greek, Polish, Turkish, Thai, Vietnamese and the Indic languages.\n\n**Is this affiliated with Google?**\nNo. It reads Google's public autocomplete endpoint and is not operated by or affiliated with Google. You are responsible for how you use the output.\n\n## Limits\n\n- Google's autocomplete endpoint is undocumented and can change or throttle without notice.\n- Heavy direct traffic can be blocked; the actor then switches to its included Apify datacenter proxy automatically. No residential proxy is used.\n- Autocomplete completes prefixes, so very long seeds return little.\n- There is no pagination: each query returns at most 15 suggestions (10 on the fallback dialect). Coverage comes from more queries, not more pages.\n- Google may omit suggestions for sensitive or highly commercial queries.\n- No search volume, CPC, difficulty, People Also Ask or entity metadata is fabricated.\n",
      "input": {
        "title": "Google Autocomplete Keyword Expansion Scraper Input",
        "description": "Expand seed keywords into long-tail Google autocomplete suggestions with eight expansion modes, 134 markets, 78 languages and optional recursion.",
        "type": "object",
        "schemaVersion": 1,
        "properties": {
          "keywords": {
            "title": "Seed keywords",
            "type": "array",
            "description": "One or more seeds. 1-3 word seeds return the most suggestions. Each seed is expanded according to `mode`.",
            "editor": "stringList",
            "default": [
              "python tutorial"
            ],
            "prefill": [
              "python tutorial"
            ]
          },
          "mode": {
            "title": "Expansion mode",
            "type": "string",
            "description": "How each seed is expanded. `all` runs every strategy; `exact` queries only the seed; `alphabet` adds a-z and 0-9 before and after; `questions` uses locale question words; `modifiers` adds prepositions and buyer-intent words; `related` adds trailing-space, wildcard, local, review and price variants.",
            "editor": "select",
            "enum": [
              "all",
              "exact",
              "alphabet",
              "questions",
              "modifiers",
              "prepositions",
              "comparisons",
              "related"
            ],
            "enumTitles": [
              "All strategies (deepest)",
              "Exact seed only",
              "Alphabet + digits (a-z, 0-9, prefix and suffix)",
              "Question words (locale-aware)",
              "Modifiers (prepositions + buyer intent)",
              "Prepositions only",
              "Comparisons (vs / or / versus)",
              "Related (wildcard, near me, review, price)"
            ],
            "default": "all",
            "prefill": "exact"
          },
          "country": {
            "title": "Country (gl)",
            "type": "string",
            "description": "Google market used for the `gl` parameter. Changes ranking and local phrasing. 134 markets were verified against the live endpoint; the legacy `ALL` value maps to US.",
            "editor": "select",
            "enum": [
              "US",
              "GB",
              "CA",
              "AU",
              "NZ",
              "IE",
              "DE",
              "FR",
              "ES",
              "IT",
              "NL",
              "BE",
              "AT",
              "CH",
              "PT",
              "GR",
              "CZ",
              "PL",
              "SE",
              "NO",
              "DK",
              "FI",
              "HU",
              "RO",
              "BG",
              "HR",
              "SK",
              "SI",
              "EE",
              "LV",
              "LT",
              "LU",
              "MT",
              "CY",
              "IS",
              "LI",
              "MC",
              "AD",
              "SM",
              "JP",
              "KR",
              "CN",
              "TW",
              "HK",
              "MO",
              "IN",
              "PK",
              "BD",
              "LK",
              "NP",
              "AF",
              "ID",
              "TH",
              "VN",
              "PH",
              "MY",
              "SG",
              "BN",
              "MM",
              "KH",
              "LA",
              "TL",
              "BR",
              "MX",
              "AR",
              "CL",
              "CO",
              "PE",
              "VE",
              "EC",
              "BO",
              "PY",
              "UY",
              "GT",
              "CR",
              "PA",
              "DO",
              "PR",
              "CU",
              "SV",
              "HN",
              "NI",
              "JM",
              "TT",
              "BB",
              "RU",
              "TR",
              "UA",
              "BY",
              "KZ",
              "UZ",
              "AZ",
              "AM",
              "GE",
              "MD",
              "RS",
              "BA",
              "MK",
              "AL",
              "ME",
              "XK",
              "ZA",
              "NG",
              "EG",
              "MA",
              "DZ",
              "TN",
              "KE",
              "GH",
              "ET",
              "UG",
              "TZ",
              "RW",
              "ZW",
              "SN",
              "CI",
              "CM",
              "MZ",
              "AO",
              "ZM",
              "AE",
              "SA",
              "IL",
              "QA",
              "KW",
              "BH",
              "OM",
              "JO",
              "LB",
              "SY",
              "IQ",
              "IR",
              "YE",
              "PS",
              "ALL"
            ],
            "enumTitles": [
              "United States",
              "United Kingdom",
              "Canada",
              "Australia",
              "New Zealand",
              "Ireland",
              "Germany",
              "France",
              "Spain",
              "Italy",
              "Netherlands",
              "Belgium",
              "Austria",
              "Switzerland",
              "Portugal",
              "Greece",
              "Czechia",
              "Poland",
              "Sweden",
              "Norway",
              "Denmark",
              "Finland",
              "Hungary",
              "Romania",
              "Bulgaria",
              "Croatia",
              "Slovakia",
              "Slovenia",
              "Estonia",
              "Latvia",
              "Lithuania",
              "Luxembourg",
              "Malta",
              "Cyprus",
              "Iceland",
              "Liechtenstein",
              "Monaco",
              "Andorra",
              "San Marino",
              "Japan",
              "South Korea",
              "China",
              "Taiwan",
              "Hong Kong",
              "Macao",
              "India",
              "Pakistan",
              "Bangladesh",
              "Sri Lanka",
              "Nepal",
              "Afghanistan",
              "Indonesia",
              "Thailand",
              "Vietnam",
              "Philippines",
              "Malaysia",
              "Singapore",
              "Brunei",
              "Myanmar",
              "Cambodia",
              "Laos",
              "Timor-Leste",
              "Brazil",
              "Mexico",
              "Argentina",
              "Chile",
              "Colombia",
              "Peru",
              "Venezuela",
              "Ecuador",
              "Bolivia",
              "Paraguay",
              "Uruguay",
              "Guatemala",
              "Costa Rica",
              "Panama",
              "Dominican Republic",
              "Puerto Rico",
              "Cuba",
              "El Salvador",
              "Honduras",
              "Nicaragua",
              "Jamaica",
              "Trinidad and Tobago",
              "Barbados",
              "Russia",
              "Turkey",
              "Ukraine",
              "Belarus",
              "Kazakhstan",
              "Uzbekistan",
              "Azerbaijan",
              "Armenia",
              "Georgia",
              "Moldova",
              "Serbia",
              "Bosnia and Herzegovina",
              "North Macedonia",
              "Albania",
              "Montenegro",
              "Kosovo",
              "South Africa",
              "Nigeria",
              "Egypt",
              "Morocco",
              "Algeria",
              "Tunisia",
              "Kenya",
              "Ghana",
              "Ethiopia",
              "Uganda",
              "Tanzania",
              "Rwanda",
              "Zimbabwe",
              "Senegal",
              "Cote d'Ivoire",
              "Cameroon",
              "Mozambique",
              "Angola",
              "Zambia",
              "United Arab Emirates",
              "Saudi Arabia",
              "Israel",
              "Qatar",
              "Kuwait",
              "Bahrain",
              "Oman",
              "Jordan",
              "Lebanon",
              "Syria",
              "Iraq",
              "Iran",
              "Yemen",
              "Palestine",
              "All markets (legacy — maps to US)"
            ],
            "default": "US",
            "prefill": "US"
          },
          "language": {
            "title": "Language (hl)",
            "type": "string",
            "description": "Language used for the `hl` parameter and for the locale-aware question and modifier words. 19 languages have native expansion vocabularies; the rest fall back to English modifiers.",
            "editor": "select",
            "enum": [
              "en",
              "es",
              "fr",
              "de",
              "it",
              "pt",
              "nl",
              "pl",
              "sv",
              "no",
              "da",
              "fi",
              "cs",
              "el",
              "hu",
              "ro",
              "bg",
              "hr",
              "sk",
              "sl",
              "et",
              "lv",
              "lt",
              "ga",
              "is",
              "mt",
              "ru",
              "uk",
              "be",
              "sr",
              "bs",
              "mk",
              "sq",
              "ar",
              "tr",
              "he",
              "fa",
              "ur",
              "ku",
              "ja",
              "ko",
              "zh-CN",
              "zh-TW",
              "hi",
              "bn",
              "ta",
              "te",
              "ml",
              "mr",
              "gu",
              "kn",
              "pa",
              "ne",
              "si",
              "my",
              "id",
              "th",
              "vi",
              "ms",
              "tl",
              "km",
              "lo",
              "sw",
              "am",
              "ha",
              "yo",
              "ig",
              "zu",
              "xh",
              "af",
              "az",
              "kk",
              "uz",
              "ky",
              "tg",
              "mn",
              "ka",
              "hy"
            ],
            "enumTitles": [
              "English",
              "Spanish",
              "French",
              "German",
              "Italian",
              "Portuguese",
              "Dutch",
              "Polish",
              "Swedish",
              "Norwegian",
              "Danish",
              "Finnish",
              "Czech",
              "Greek",
              "Hungarian",
              "Romanian",
              "Bulgarian",
              "Croatian",
              "Slovak",
              "Slovenian",
              "Estonian",
              "Latvian",
              "Lithuanian",
              "Irish",
              "Icelandic",
              "Maltese",
              "Russian",
              "Ukrainian",
              "Belarusian",
              "Serbian",
              "Bosnian",
              "Macedonian",
              "Albanian",
              "Arabic",
              "Turkish",
              "Hebrew",
              "Persian",
              "Urdu",
              "Kurdish",
              "Japanese",
              "Korean",
              "Chinese (Simplified)",
              "Chinese (Traditional)",
              "Hindi",
              "Bengali",
              "Tamil",
              "Telugu",
              "Malayalam",
              "Marathi",
              "Gujarati",
              "Kannada",
              "Punjabi",
              "Nepali",
              "Sinhala",
              "Burmese",
              "Indonesian",
              "Thai",
              "Vietnamese",
              "Malay",
              "Tagalog",
              "Khmer",
              "Lao",
              "Swahili",
              "Amharic",
              "Hausa",
              "Yoruba",
              "Igbo",
              "Zulu",
              "Xhosa",
              "Afrikaans",
              "Azerbaijani",
              "Kazakh",
              "Uzbek",
              "Kyrgyz",
              "Tajik",
              "Mongolian",
              "Georgian",
              "Armenian"
            ],
            "default": "en",
            "prefill": "en"
          },
          "source": {
            "title": "Google surface",
            "type": "string",
            "description": "Which Google autocomplete surface to query: web, YouTube or Shopping. `all` runs all three and multiplies the request count.",
            "editor": "select",
            "enum": [
              "web",
              "youtube",
              "shopping",
              "all"
            ],
            "enumTitles": [
              "Google web",
              "YouTube",
              "Google Shopping",
              "All three surfaces"
            ],
            "default": "web",
            "prefill": "web"
          },
          "maxItems": {
            "title": "Max records",
            "type": "integer",
            "description": "Hard cap on dataset records across all seeds and sources. Flat mode counts suggestions; tree mode counts one record per seed/source.",
            "minimum": 1,
            "maximum": 50000,
            "default": 5000,
            "prefill": 3
          },
          "maxSuggestionsPerSeed": {
            "title": "Max suggestions per seed",
            "type": "integer",
            "description": "Cap on suggestions collected for one seed, applied after all expansion queries have run. Defaults to 2,000 when omitted (legacy maxItemsPerKeyword is honoured).",
            "minimum": 1,
            "maximum": 10000,
            "prefill": 3
          },
          "minLength": {
            "title": "Min characters",
            "type": "integer",
            "description": "Drop suggestions shorter than this many characters.",
            "minimum": 1,
            "maximum": 200
          },
          "maxLength": {
            "title": "Max characters",
            "type": "integer",
            "description": "Drop suggestions longer than this many characters.",
            "minimum": 1,
            "maximum": 500
          },
          "containsKeyword": {
            "title": "Must contain",
            "type": "string",
            "description": "Keep only suggestions containing this substring (case-insensitive). Prefix with `!` to exclude matches instead.",
            "editor": "textfield"
          },
          "outputFormat": {
            "title": "Output shape",
            "type": "string",
            "description": "`flat` emits one row per suggestion. `tree` emits one row per seed and source with a nested suggestions array (the legacy shape).",
            "editor": "select",
            "enum": [
              "flat",
              "tree"
            ],
            "enumTitles": [
              "Flat (one row per suggestion)",
              "Tree (nested per seed)"
            ],
            "default": "flat",
            "prefill": "flat"
          },
          "expansionDepth": {
            "title": "Recursion depth",
            "type": "string",
            "description": "Re-query the first 15 discovered suggestions to go one or two levels deeper. Off for the cheapest run.",
            "editor": "select",
            "enum": [
              "0",
              "1",
              "2"
            ],
            "enumTitles": [
              "Off (mode only)",
              "One extra level (top 15 suggestions)",
              "Two extra levels"
            ],
            "default": "0",
            "prefill": "0"
          },
          "dedupeAcrossSeeds": {
            "title": "Dedupe across seeds",
            "type": "boolean",
            "description": "Emit a phrase only once per run. Off keeps every seed complete; on removes overlaps between seeds.",
            "default": false,
            "prefill": false
          },
          "includeIntent": {
            "title": "Add intent tags",
            "type": "boolean",
            "description": "Add a deterministic intent tag (question, comparison, local, transactional, commercial, informational) where a language vocabulary matches.",
            "default": true,
            "prefill": false
          }
        },
        "required": [
          "keywords"
        ]
      },
      "output": {
        "actorOutputSchemaVersion": 1,
        "title": "Google Autocomplete Keyword Expansion Scraper Output",
        "description": "Keyword suggestions with seed, expansion type, position, locale, source URL, Google relevance and optional recursion depth.",
        "properties": {
          "suggestions": {
            "type": "string",
            "title": "Keyword suggestions",
            "description": "Dataset containing all scraped Google autocomplete keyword suggestions.",
            "template": "{{links.apiDefaultDatasetUrl}}/items"
          }
        }
      },
      "storages": {
        "dataset": {
          "actorSpecification": 1,
          "views": {
            "overview": {
              "title": "Keyword suggestions",
              "transformation": {
                "fields": [
                  "keyword",
                  "seed",
                  "type",
                  "position",
                  "locale",
                  "relevance",
                  "source"
                ]
              },
              "display": {
                "component": "table",
                "properties": {}
              }
            }
          }
        }
      }
    },
    "buildNumber": "1.0.2",
    "imageDigest": "498541a569ecb21966bc1059a2d8f0aae9b0bc02b13ec1b69464bf087e586323",
    "actVersion": {
      "sourceType": "SOURCE_FILES",
      "buildTag": "latest",
      "versionNumber": "1.0"
    },
    "usage": {
      "ACTOR_COMPUTE_UNITS": 0.0037066666666666667
    }
  }
}