The autocomplete dropdown in a search box hides a free, real-time keyword database. This article compiles the suggestion APIs for Baidu, Bing, Google, 360, Sogou, and Taobao — with parameter references and response formats — ready to use for keyword research, SEO analysis, and search tool development.
Why Are Autocomplete APIs Valuable?
Search engine autocomplete suggestions are driven by real user behavior, and they offer several key advantages:
- Real-time: they reflect what users are actively searching for right now
- Intent-rich: every suggestion comes from genuine user input, making commercial intent easy to read
- Free to access: no registration or API key required
- Long-tail friendly: packed with long-tail keywords that are highly valuable for SEO
Protocol Overview
Most autocomplete APIs use JSONP, where you pass a callback function name in the URL and the server wraps the JSON response in a function call: callbackName({...}). A few APIs return plain JSON instead.
Keywords must be URL-encoded with encodeURIComponent() before being passed as a parameter — for example, the Chinese characters "土薯" encode to %E5%9C%9F%E8%96%AF.
API Reference by Platform
1. Baidu
Endpoint:
https://suggestion.baidu.com/su?wd={keyword}&cb={callbackName}
| Parameter | Description |
|---|---|
wd |
Keyword (URL-encoded) |
cb |
JSONP callback function name |
Example request:
https://suggestion.baidu.com/su?wd=seo+tools&cb=mySugCallback
Example response:
mySugCallback({q:"seo tools",p:false,s:["seo tools free","seo tools online","seo tools for website","seo tools chrome extension","seo tools list","seo tools ranking","seo tools 2025","seo tools keyword research","seo tools comparison","seo tools plugin"]});
Suggestions are in the
sfield (array), up to 10 results.
2. Bing
Endpoint:
https://api.bing.com/qsonhs.aspx?q={keyword}&type=cb&cb={callbackName}
| Parameter | Description |
|---|---|
q |
Keyword (URL-encoded) |
type |
Fixed as cb to trigger JSONP mode |
cb |
JSONP callback function name |
Example request:
https://api.bing.com/qsonhs.aspx?q=seo+tools&type=cb&cb=mySugCallback
Example response:
if(typeof mySugCallback == 'function') mySugCallback({"AS":{"Query":"seo tools","FullResults":1,"Results":[{"Type":"VS","Suggests":[{"Txt":"seo tools free","Type":"MT","Sk":""},{"Txt":"seo tools online","Type":"MT","Sk":"MT1"}]},{"Type":"AS","Suggests":[{"Txt":"seo tools for small business","Type":"LT","Sk":"MT2"},{"Txt":"seo tools ranking","Type":"UT","Sk":"MT2LT1"}]}]}});
Suggestions are distributed across
AS.Results[*].Suggests[*].Txt.Resultsmay contain multiple groups (typesVS,AS, etc.) — iterate all groups to collect every suggestion.
3. Google
Endpoint:
https://suggestqueries.google.com/complete/search?client=firefox&hl=en&q={keyword}&callback={callbackName}
| Parameter | Description |
|---|---|
client |
Fixed as firefox to trigger JSONP response format |
hl |
Language code — use en for English, zh-CN for Simplified Chinese |
q |
Keyword (URL-encoded) |
callback |
JSONP callback function name |
Example request:
https://suggestqueries.google.com/complete/search?client=firefox&hl=en&q=seo+tools&callback=mySugCallback
Example response:
mySugCallback && mySugCallback(["seo tools", ["seo tools free", "seo tools online", "seo tools for beginners"], [], {
"google:suggestsubtypes": [[512], [512], [512]]
}])
Suggestions are in the second element of the returned array (index
[1]).
4. 360 (so.com)
Endpoint:
https://sug.so.360.cn/suggest?encodein=utf-8&encodeout=utf-8&format=json&word={keyword}&callback={callbackName}
| Parameter | Description |
|---|---|
word |
Keyword (URL-encoded) |
encodein |
Input encoding, fixed as utf-8 |
encodeout |
Output encoding, fixed as utf-8 |
callback |
JSONP callback function name |
Example request:
https://sug.so.360.cn/suggest?encodein=utf-8&encodeout=utf-8&format=json&word=seo+tools&callback=mySugCallback
Example response:
mySugCallback({"errorcode":0,"query":"seo tools","result":[{"word":"seo tools free"},{"word":"seo tools online"},{"word":"seo tools for website ranking"}],"version":"revise"})
Suggestions are in
result[*].word.
5. Sogou
Endpoint:
https://sor.html5.qq.com/api/getsug?key={keyword}
| Parameter | Description |
|---|---|
key |
Keyword (URL-encoded) |
Example request:
https://sor.html5.qq.com/api/getsug?key=seo+tools
Example response:
window.sogou.sug(["seo tools", ["seo tools free", "seo tools online", "seo tools for beginners", "seo tools comparison", "seo tools list"], ...], -1)
This API does not support a custom callback name — it always calls the global function
window.sogou.sug. Suggestions are in the second element of the returned array (index[1]).
6. Taobao (Product Suggestions)
Endpoint:
https://suggest.taobao.com/sug?code=utf-8&q={keyword}&callback={callbackName}
| Parameter | Description |
|---|---|
q |
Keyword (URL-encoded) |
code |
Encoding format, fixed as utf-8 |
callback |
JSONP callback function name |
Example request (using "phone case"):
https://suggest.taobao.com/sug?code=utf-8&q=phone+case&callback=mySugCallback
Example response:
mySugCallback({"result":[["phone case","100"],["phone case iphone 15","100"],["phone case with strap","100"],["phone case wallet","100"],["phone case clear","100"]]})
Unlike search engines, Taobao suggestions skew toward product categories, making this API well-suited for e-commerce keyword research. Suggestions are in
result[*][0]; the second element is a relative popularity weight (not actual sales volume).
Quick Comparison
| Platform | Protocol | Keyword Param | Callback Param | Suggestion Path |
|---|---|---|---|---|
| Baidu | JSONP | wd |
cb |
s[] |
| Bing | JSONP | q |
cb |
AS.Results[*].Suggests[*].Txt |
| JSONP | q |
callback |
[1][] |
|
| 360 | JSONP | word |
callback |
result[*].word |
| Sogou | Fixed callback | key |
N/A (calls window.sogou.sug) |
[1][] |
| Taobao | JSONP | q |
callback |
result[*][0] |
Important Notes
- Personal and tool use only: These are internal APIs used by each platform and are not licensed for commercial use. Do not use them for large-scale scraping or commercial products.
- Rate limiting: High-frequency requests may trigger rate limits or IP blocks. Keep a gap of at least 300ms between requests.
- Encoding: Always pass keywords through
encodeURIComponent()— raw special characters and non-ASCII text will likely cause requests to fail. - JSONP timeouts: JSONP cannot natively catch network errors. Set a timeout fallback to prevent callbacks from hanging indefinitely.
Looking for an online tool that queries multiple engines at once? Try Toolshu Keyword Suggestions for side-by-side autocomplete comparison across search engines.
Article URL:https://toolshu.com/en/article/search-suggestion-api
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 。




Loading...