Keyword Suggestions from Google, YouTube, Bing and Baidu Autocomplete

Turn a list of seed keywords into the long-tail queries people actually type, across four search boxes, in any country and language.

Run on Apify →See pricing

What it does

Autocomplete is one of the most direct signals of what people search for: every suggestion is a query real users type. Collecting it by hand means typing a seed, then the seed plus each letter of the alphabet, in every search engine you care about. The Keyword Suggestions actor does that in bulk.

Give it seed keywords and pick engines: Google, YouTube, Bing and Baidu. With a-z expansion (the default) each seed is also sent as "seed a" to "seed z", which usually returns a few hundred unique long-tail keywords per seed and engine. questions expansion adds who, what, why, how, can, is and similar words in front of the seed; prepositions adds for, with, vs, near and others after it. Results are deduplicated across the expansion.

You get one row per seed and engine with each suggestion's text, position and the exact query that produced it, or a flat row per keyword for spreadsheets. It costs $0.30 per 1,000 seeds per engine without expansion and $1 per 1,000 with expansion, billed per seed and engine rather than per keyword. Empty and rate-limited rows are free.

How it works

  1. You provide seeds, choose engines and an expansion mode, and set country and language for the market.
  2. Each seed is expanded into its query set (1 request with none, 27 with a-z, 14 with questions, 13 with prepositions) and sent to each engine's public suggest endpoint.
  3. Requests are paced politely: at most 2 in flight and at least 350 ms apart per host, with back-off on HTTP 429.
  4. Suggestions are deduplicated per seed and engine (case- and whitespace-insensitive) and capped at maxSuggestionsPerSeed.
  5. Each complete seed and engine row is charged once; rows with no suggestions, partial failures or rate limits are free.

Input example

A typical run input (JSON). Every field is also available as a form in the Apify console.

{
  "seeds": [
    "coffee maker",
    "running shoes"
  ],
  "engines": [
    "google",
    "youtube",
    "bing"
  ],
  "expansion": "a-z",
  "country": "us",
  "language": "en",
  "dedupe": true,
  "outputMode": "grouped"
}
All input fields
FieldTypeRequiredDefaultWhat it does
seedsarrayyesKeywords to get suggestions for, e.g. coffee maker. Each seed is sent to every selected engine. Duplicates (case-insensitive) are removed.
enginesarrayno["google", "youtube", "bing"]Autocomplete sources. google and youtube use Google's public suggest endpoint (suggestqueries.google.com; youtube = YouTube search suggestions). bing uses Bing's OpenSearch suggestion feed. baidu uses Baidu's suggest…
expansionstringno"a-z"How each seed is expanded. none: the seed only (1 request, about 10 suggestions; $0.0003 per seed x engine). a-z: the seed plus 'seed a' … 'seed z' (27 requests, up to ~270 long-tail suggestions). questions…
countrystringno"us"Two-letter country code (us, gb, de, fr, in …). Sent to Google/YouTube as gl and to Bing as the market (language-COUNTRY, e.g. en-US).
languagestringno"en"Two-letter language code (en, de, fr, es …). Sent to Google/YouTube as hl and to Bing as part of the market.
maxSuggestionsPerSeedintegerno500Cap on the suggestions kept in one seed x engine row (after dedupe). Same price whatever the cap.
dedupebooleannotrueDrop a suggestion already returned by an earlier expansion query for the same seed and engine (case- and whitespace-insensitive; first occurrence wins).
outputModestringno"grouped"grouped: one row per seed x engine with suggestions[] (text, position, query, modifier) and count. flat: one row per suggestion, ready for a spreadsheet. Billing is the same in both modes: per seed x engine, never per…

Output example

In the sample each row is one seed on one engine, with the suggestion count and the keywords found by the a-z expansion.

seedenginecountryexpansioncountkeywords
coffee makergoogleusa-z263coffee maker, coffee maker with grinder, coffee maker walmart, … coffee maker zojirushi review
coffee makeryoutubeusa-z254coffee maker, coffee maker machine, coffee maker review, … zojirushi coffee maker cleaning
coffee makerbingusa-z349coffee maker, coffee makers on sale, coffee maker with grinder, … coffee maker zojirushi
running shoesgoogleusa-z250running shoes, running shoes for women, running shoes for men, … running shoes zurich

Pricing

Pay per event: you are charged only for the results you receive, with no subscription. Set a maximum total charge on any run and it stops cleanly at the cap.

Charged forWhenPricePer 1,000Worked example
Seed expandedCharged per seed x engine row with suggestions, expansion none (1 request)$0.0003$0.301,000 seeds on Google = $0.30; on Google + YouTube + Bing = $0.90
Seed expanded fullCharged per seed x engine row with suggestions, expansion a-z (27 requests), questions (14) or prepositions (13)$0.001$1100 seeds with a-z on Google + YouTube + Bing = $0.30 for ~75,000 keywords
Actor Start (platform start fee)Charged when the Actor starts running. Number of events charged depends on Actor memory (one event per GB, minimum one event).$0.00005—One run at 128 MB = $0.00000625

Prices are read from the live Apify Store listing when this page is built. The listing is always authoritative.

Try Keyword Suggestions on Apify. Pay only for the results you get.

Run on Apify →

Use cases

Long-tail keyword research

Expand a list of head terms with a-z to see the specific variants people search, such as brands, sizes and use cases, then group them into content topics.

FAQ and blog topic ideas

Use questions expansion to collect how, why and can questions around a topic. They map well to FAQ sections and article headings.

YouTube titles and tags

Select the youtube engine to see what viewers type into YouTube search, which often differs from web search, and use it when writing video titles and tags.

Comparison and buying intent

prepositions expansion surfaces queries like "seed vs", "seed for" and "seed near", which point to comparison pages and local or purchase intent. Check rising terms with Google Trends.

How it compares

ActorForge Keyword SuggestionsTyping into search boxes manuallyPaid keyword research suites
Bulk seeds and engines in one runYesNoYes
Google, YouTube, Bing and BaiduYesYes, one at a timeVaries
Search volumeNo, suggestions onlyNoUsually yes
Keyword difficulty and CPCNoNoUsually yes
Country and language targetingYesPartialYes
Cost$0.30-$1 per 1,000 seeds per engineFree, but slowSubscription

Autocomplete tells you what people type, not how often. If you need search volumes, difficulty or CPC, a paid keyword suite is the right tool; this actor is a cheap way to generate the candidate list to feed into one.

Limits and honest notes

FAQ

How do I scrape Google autocomplete suggestions in bulk?

Put your keywords in seeds, keep google in engines and choose an expansion. With a-z, each seed sends 27 queries and the suggestions are deduplicated into one row per seed. Suggestions come from Google's public suggest endpoint.

Does it give search volume?

No. Suggestions are what each engine shows for that query, country and language at run time. They indicate what people type but are not search volumes.

Why is flat mode not more expensive?

Billing is per seed and engine, never per keyword. Flat mode (one row per suggestion) costs exactly the same as grouped mode: $0.0003 per seed and engine without expansion, $0.001 with a-z, questions or prepositions.

Why don't you support Amazon or DuckDuckGo suggestions?

They are left out on purpose: Amazon, DuckDuckGo and Naver disallow it in robots.txt, eBay bans automated access, and Yahoo and Yandex restrict it in their terms.

What happens if Google rate-limits the run?

The actor waits 5 seconds, then 20. If the engine keeps answering 429, or answers 401/403 once, that engine stops for the rest of the run and its remaining rows come back as rate-limited, free. Re-run later to fill them in.

Use it from code

Run the actor through the Apify API with the input above.

cURL

curl -X POST "https://api.apify.com/v2/acts/actor-forge~keyword-suggestions/run-sync-get-dataset-items" \
  -H "Authorization: Bearer $APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"seeds": ["coffee maker", "running shoes"], "engines": ["google", "youtube", "bing"], "expansion": "a-z", "country": "us", "language": "en", "dedupe": true, "outputMode": "grouped"}'

JavaScript (Node.js)

// Node.js 18+ (built-in fetch). Set APIFY_TOKEN in your environment.
const input = {
  "seeds": [
    "coffee maker",
    "running shoes"
  ],
  "engines": [
    "google",
    "youtube",
    "bing"
  ],
  "expansion": "a-z",
  "country": "us",
  "language": "en",
  "dedupe": true,
  "outputMode": "grouped"
};

const res = await fetch(
  "https://api.apify.com/v2/acts/actor-forge~keyword-suggestions/run-sync-get-dataset-items",
  {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.APIFY_TOKEN}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify(input),
  }
);
const items = await res.json();
console.log(items.length, items[0]);

Python

# pip install apify-client   (set APIFY_TOKEN in your environment)
import os
from apify_client import ApifyClient

client = ApifyClient(os.environ["APIFY_TOKEN"])
run_input = {
    "seeds": [
        "coffee maker",
        "running shoes"
    ],
    "engines": [
        "google",
        "youtube",
        "bing"
    ],
    "expansion": "a-z",
    "country": "us",
    "language": "en",
    "dedupe": True,
    "outputMode": "grouped"
}

run = client.actor("actor-forge/keyword-suggestions").call(run_input=run_input)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

The run-sync-get-dataset-items endpoint waits for the run (up to 5 minutes) and returns the dataset rows directly. For longer runs, start the run asynchronously and read the dataset when it finishes, as the Python example does. Replace APIFY_TOKEN with your own token from the Apify console.

Related actors

Google Trends Scraper — Trending Now & Interest Over Time

Google Trends scraper and API: Trending Now searches for 125 countries from the official feed (traffic, start time, picture, news articles), plus…

$0.50 per 1,000 · trend result

SEO Audit Crawler — On-Page SEO Checker for Whole Sites

Crawl a whole website and audit every page for technical and on-page SEO: titles, meta descriptions, H1s, canonicals, noindex, duplicates, broken…

$6 per 1,000 · page audited

Google Ads Transparency Scraper — Competitor Ads | $0.60/1K

Scrape competitor ads from the Google Ads Transparency Center by domain, advertiser name or ID: format, first/last shown, regions, impressions, ad…

$0.60 per 1,000 · ad result

YouTube Search Scraper (Official API) — Videos by Keyword

Bring your own free YouTube API key. YouTube search by keyword with sort, date, region, language and length filters — every result enriched with…

$0.30 per 1,000 · video result

Try Keyword Suggestions on Apify. Pay only for the results you get.

Run on Apify →

More SEO & Marketing Intelligence tools · All actors