Bing Suggest API
Returns the suggestions Bing shows as people type a keyword, in one of 10 markets. One keyword per GET, or up to 10,000 in a batch job.
https://rankfield.dev/v1/bing/suggest?query={keyword}Send Authorization: Bearer YOUR_API_KEY. Get a free key; no account needed.
Parameters#
| Name | Type | Description |
|---|---|---|
query | string | The keyword, 1 to 200 printable characters. |
market | string | en-US, en-GB, en-CA, en-AU, en-IN, en-NG, fr-FR, de-DE, es-ES or pt-BR. Any other: 400 Unsupported market. |
Response#
| Field | Type | Description |
|---|---|---|
source | string | bing-suggest. |
query market | string | What you asked. |
count | integer | How many suggestions came back. |
suggestions | array of strings | In Bing's order. |
Errors#
Errors come as {"error":"…"} with the HTTP status.
| Status | When |
|---|---|
400 | The query is empty or too long ({"error":"query must contain 1–200 printable characters"}), or a job holds more than 10,000 keywords (Supply 1–10000 queries). |
401 | The key is missing, unknown or revoked. |
429 | The engine is busy (its request budget is full for the moment), or a job's deadline cannot be met (capacityLimited: true). Wait for Retry-After. |
503 | Collection is paused, cooling down, timed out or unavailable. Wait for Retry-After. |
Price and limits#
- Free; no per-call charge.
- No per-key limits for now. Each job takes up to 10,000 keywords, and you can run as many jobs as you like. When an engine is busy it answers
429or503withRetry-After. GET …/usageshows the keywords you sent today.
Up to 10,000 keywords in one job#
POST /v1/bing/suggest/jobs with a unique Idempotency-Key header and {"queries":[…],"delivery":"priority"}. delivery sets how fast the whole batch must finish: live 6 seconds, priority 60 seconds, standard 300 seconds (the default). A batch that cannot meet it answers 429 with capacityLimited: true and Retry-After: retry later or pick a longer tier.
Follow GET /v1/bing/suggest/jobs/{id}, then read GET /v1/bing/suggest/jobs/{id}/results?cursor=0 and keep passing the returned cursor while hasMore is true. Results arrive as they finish; each carries its index in your list. POST /v1/bing/suggest/jobs/{id}/cancel stops a job.
Reference: https://rankfield.dev/docs/suggest/start-a-job
curl -X POST "https://rankfield.dev/v1/bing/suggest/jobs" \
-H "Authorization: Bearer $RANKFIELD_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: kw-2026-10-25" \
-d '{"queries":["seo tools","keyword research"],"delivery":"priority"}'import os
import requests
response = requests.post(
"https://rankfield.dev/v1/bing/suggest/jobs",
headers={"Authorization": f"Bearer {os.environ['RANKFIELD_API_KEY']}", "Content-Type": "application/json", "Idempotency-Key": "kw-2026-10-25"},
json={"queries": ["seo tools", "keyword research"], "delivery": "priority"},
)
print(response.json())const response = await fetch("https://rankfield.dev/v1/bing/suggest/jobs", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.RANKFIELD_API_KEY}`,
"Content-Type": "application/json",
"Idempotency-Key": "kw-2026-10-25",
},
body: JSON.stringify({"queries":["seo tools","keyword research"],"delivery":"priority"}),
});
console.log(await response.json());Notes#
- Suggestions show what people type, not how often: they are not search volumes.
See also#
- Full reference: https://rankfield.dev/docs/suggest/get-bing-suggestions
- MCP tools on
https://rankfield.dev/mcp:get_bing_suggestions,start_bing_suggest_job,get_bing_suggest_results - Try it with your key: the API playground
- This page as Markdown: /endpoints/bing-suggest.md