Microsoft Copilot answers API
Copilot Scraper API: Microsoft Copilot Answers and Citations
Searlo's Copilot scraper API asks Microsoft Copilot your prompt on Bing and returns the answer, its citations and its citation pills (the source chips Copilot shows inside the answer) as JSON, for 8 credits per answer.
{ "searchTime": 0.17, "totalResults": 85000, "page": 1, "organic": [ { "position": 1, "title": "31.10. Connection Pools and Data Sources", "link": "www.postgresql.org/docs/…", "domain": "postgresql.org", "snippet": "For an environment without an application se…" }, { "position": 2, "domain": "medium.com", … }, { "position": 3, "domain": "stackoverflow.blog", … } ], "credits": 1}How can I get Microsoft Copilot's answers and citations through an API?
Send the prompt to GET /search/ai/copilot. Searlo asks Copilot Search on Bing in a real browser session, waits for the answer and returns the text, the citations, the citation pills and the cited domains as JSON. Each answer costs 8 credits: $2.40 per 1,000 answers at $0.30 per 1,000 credits.
It is the answer Bing shows an anonymous visitor, not Microsoft 365 Copilot or a signed-in account. It varies from run to run, and a live one typically takes 10 to 30 seconds.
- Endpoint
- GET https://api.searlo.tech/api/v1/search/ai/copilot?q=…&gl=us&hl=en
- Where the answer comes from
- Copilot Search on Bing, asked anonymously; gl and hl become Bing's market code, such as en-US
- Price
- 8 credits per answer: $2.40 per 1,000 at $0.30 per 1,000 credits, $1.60 on the Enterprise pack— our pricing
- Returned
- answer, answerMarkdown, citations, citationPills, sources, related, complete
- Latency and caching
- Typically 10-30 s live; the same request within 1 hour is served from cache unless cache=false
- AI citations vs Google's top 10
- On average 12% of URLs cited by ChatGPT, Gemini and Copilot rank in Google's top 10 for the same query (15,000 queries, August 2025)— Ahrefs
Third-party figures on this page last verified against the sources linked above. Prices change; if you find one of these stale, tell us and we will correct it.
What the Copilot scraper API returns
Microsoft's Copilot answers questions inside Bing, through Copilot Search, and shows its sources as small chips inside the answer. For a brand, those chips are the Bing Copilot citations that matter: they are where Copilot sends the reader. They are not a copy of Google's results either. In Ahrefs' study of 15,000 queries, on average only 12% of the URLs cited by ChatGPT, Gemini and Copilot ranked in Google's top 10 for the same query.
GET /search/ai/copilot asks Copilot Search for you, anonymously, in a real browser session, and reads the finished answer off the page. You get the answer text; citations in the same format as the other engines (index, url, title, domain); citationPills, with each chip's label, position and description; sources, the unique cited domains for share of voice; related, the follow-up questions Bing shows; and complete.
gl and hl become Bing's market code, written hl-GL, so gl=gb&hl=en asks as en-GB and you query the Copilot of the market you are measuring. Nothing signs in to a Microsoft account, and this is not Microsoft 365 Copilot.
Searlo is independent and is not affiliated with, endorsed by or sponsored by Microsoft. Microsoft and Copilot are trademarks of Microsoft.
Citation pills, field by field
| Pill field | What it holds |
|---|---|
| citationPillId | The pill's id, counting from 0 |
| position | Where the pill sits in the answer, counting from 1 |
| label | The text on the chip, usually the site name, such as RTINGS.com |
| title | The title of the cited page |
| url | The cited page's address |
| domain | The page's domain, www. removed |
| description | The snippet Copilot attaches to the source |
Ask Copilot in one request
Pass the prompt as q, with gl and hl for the Bing market. A live answer typically takes 10 to 30 seconds, so give your HTTP client a generous timeout.
curl "https://api.searlo.tech/api/v1/search/ai/copilot?q=best+noise+cancelling+headphones&gl=us&hl=en" \
-H "x-api-key: YOUR_API_KEY"
# The same question in Bing's en-GB market
curl "https://api.searlo.tech/api/v1/search/ai/copilot?q=best+noise+cancelling+headphones&gl=gb&hl=en" \
-H "x-api-key: YOUR_API_KEY"import requests
resp = requests.get(
"https://api.searlo.tech/api/v1/search/ai/copilot",
headers={"x-api-key": "YOUR_API_KEY"},
params={"q": "best noise cancelling headphones", "gl": "us", "hl": "en"},
timeout=180, # a live answer typically takes 10-30 seconds
)
resp.raise_for_status()
data = resp.json()
print(data["answer"][:300])
for pill in data.get("citationPills", []):
print(pill["position"], pill["label"], pill["url"])
print("cited domains:", data["sources"], "| complete:", data["complete"])const params = new URLSearchParams({
q: "best noise cancelling headphones",
gl: "us",
hl: "en",
});
const resp = await fetch(
`https://api.searlo.tech/api/v1/search/ai/copilot?${params}`,
{
headers: { "x-api-key": "YOUR_API_KEY" },
signal: AbortSignal.timeout(180_000), // live answers typically take 10-30 s
},
);
if (!resp.ok) throw new Error(`HTTP ${resp.status}`);
const data = await resp.json();
for (const pill of data.citationPills ?? []) console.log(pill.position, pill.label, pill.url);
console.log("cited domains:", data.sources);Example response (illustrative)
Real keys, illustrative values, shortened. Copilot is the only engine with citationPills; citations lists the same sources in the shared format. model is empty and threadUrl is null on Copilot.
{
"success": true,
"searchParameters": {
"q": "best noise cancelling headphones",
"type": "ai",
"engine": "copilot",
"mode": "ui",
"gl": "us",
"hl": "en"
},
"answer": "For noise cancelling, reviewers most often recommend over-ear models from Sony and Bose, with Apple's AirPods Max as an option for iPhone users. If you mostly fly, prioritize comfort and battery life…",
"answerMarkdown": "For noise cancelling, reviewers most often recommend over-ear models from Sony and Bose, with Apple's AirPods Max as an option for iPhone users. If you mostly fly, prioritize comfort and battery life…",
"citations": [
{ "index": 1, "url": "https://www.rtings.com/headphones/…", "title": "The Best Noise Cancelling Headphones", "domain": "rtings.com" },
{ "index": 2, "url": "https://www.soundguys.com/…", "title": "Best noise cancelling headphones", "domain": "soundguys.com" }
],
"sources": ["rtings.com", "soundguys.com"],
"citationPills": [
{
"citationPillId": 0,
"position": 1,
"label": "RTINGS.com",
"title": "The Best Noise Cancelling Headphones",
"url": "https://www.rtings.com/headphones/…",
"domain": "rtings.com",
"description": "Lab-tested picks across price ranges…"
},
{
"citationPillId": 1,
"position": 2,
"label": "soundguys.com",
"title": "Best noise cancelling headphones",
"url": "https://www.soundguys.com/…",
"domain": "soundguys.com",
"description": "Our favorite noise cancelling headphones for travel and commuting…"
}
],
"related": [
"Which headphones are best for flights?",
"Are noise cancelling earbuds as good as headphones?"
],
"model": "",
"threadUrl": null,
"complete": true,
"fetchedAt": "2026-09-29T10:02:37.118Z",
"source": "searlo.tech(copilot)",
"cached": false
}Response fields
| Key | Type | What it holds |
|---|---|---|
| answer | string | The answer as plain text |
| answerMarkdown | string | On Copilot, the same rendered text as answer |
| citations | array | Each cited page as { index, url, title, domain }, built from the pills |
| sources | array | The unique cited domains, www. removed: the list to count for share of voice |
| citationPills | array | Copilot's source chips, field by field as in the table above |
| related | array | The follow-up questions Bing shows, when it shows them |
| model | string | Empty on Copilot |
| threadUrl | null | Always null on Copilot |
| complete | boolean | false if the capture ended before the page stopped changing; incomplete answers are never cached |
| cached | boolean | true when the answer came from the 1-hour cache |
Request parameters
| Parameter | Required | Default | What it does |
|---|---|---|---|
| q | Yes | none | The prompt, up to 500 characters |
| gl | No | us | Country; with hl it forms Bing's market code (gl=us&hl=en is en-US). Routed through an exit in that country when one is available |
| hl | No | en | Language; the first half of Bing's market code |
| cache | No | true | false forces a fresh run, billed like any live call; otherwise the same request within 1 hour gets the stored answer |
Why a Copilot answer costs 8 credits
A Google web search on Searlo is 1 credit. A Copilot answer is 8, because it is produced live, in Copilot's own interface on Bing: a real browser session that loads the page, lets Copilot search and write, waits for the source chips to appear, and retries when Bing pushes back. That is the point, since it is exactly what a person searching on Bing is shown.
Each engine is priced on its own, because each costs a different amount to run live. Copilot and ChatGPT sit at 8 credits, Gemini at 4 and Perplexity at 2.
Credits are charged per successful call, live or cached. Refused or failed calls (HTTP 429 or 503, success: false) are refunded automatically. Packs are one-time purchases with no subscription; new users' credits are valid for 90 days.
What Copilot answers cost on each pack
| Pack | Price | Copilot answers | Per 1,000 answers |
|---|---|---|---|
| Micro | $3.99 | 625 | $6.38 |
| Starter | $9.99 | 2,500 | $4.00 |
| Builder | $29.99 | 9,375 | $3.20 |
| Scale | $74.99 | 31,250 | $2.40 |
| Pro | $199.99 | 112,500 | $1.78 |
| Enterprise | $799 | 500,000 | $1.60 |
Latency, caching and non-determinism
Copilot's answers are non-deterministic: the wording, the brands and the pills can change between runs of the same prompt. Sample each prompt several times and report rates, not single answers.
- A live answer typically takes 10 to 30 seconds while Copilot searches and writes. Run tracking jobs in the background; the samples allow 180 seconds.
- complete is false when the capture stopped before the page stopped changing. On Copilot that can happen after the answer text is whole, because Bing keeps loading widgets under it. Incomplete answers are never cached.
- The same request (prompt, gl and hl) within 1 hour returns the stored answer with cached: true. Pass cache=false for every sample you want independent.
- Send repeat samples one after another. Identical requests in flight at the same moment can be merged into one run: both are billed and both get the same answer.
- At capacity the API returns 429 with a Retry-After header. Wait that long and retry; the refused call costs nothing.
- Country targeting is best-effort: the request goes out through an exit in the gl country when one is available.
Compare Copilot with the other engines
AI visibility API
Share of voice across ChatGPT, Perplexity, Copilot and Gemini, with a complete Python workflow.
ChatGPT scraper API
Logged-out chatgpt.com answers and citations, 8 credits per answer.
Perplexity scraper API
perplexity.ai answers with numbered citations, 2 credits per answer.
Gemini scraper API
Signed-out Gemini web app answers and citations, 4 credits per answer.
Pair it with Google data
What teams track in Copilot
- Whether Copilot names your brand for your category's questions on Bing
- Which sites Copilot's citation pills send readers to in your market
- Share of voice on Bing's answer surface next to Google's AI Overviews
- Market-by-market checks using Bing's own market codes
- Client reporting for AEO and GEO agencies, per prompt and per week
FAQ
Copilot scraper API: FAQ
Is this the Microsoft Copilot API?
No. Searlo is independent and not affiliated with Microsoft. This endpoint captures the public Copilot answer on Bing, the one an anonymous visitor sees, and returns it as JSON. It does not use Microsoft 365 Copilot or any Microsoft account.
What are citation pills?
The small source chips Copilot places inside its answer, each labelled with a site name. citationPills returns them in order with citationPillId (from 0), position (from 1), label, title, url, domain and description. citations carries the same sources in the shared format, so code written for the other engines works unchanged.
How much does the Copilot scraper API cost?
8 credits per answer: $2.40 per 1,000 answers at $0.30 per 1,000 credits (the Scale pack), $1.60 on the Enterprise pack and $6.38 on the smallest. The 3,000 free credits cover 375 answers, and packs are one-time purchases with no subscription.
Can I ask Copilot from another country?
Yes. gl and hl become Bing's market code, so gl=gb&hl=en asks as en-GB, and the request goes out through an exit in that country when one is available. Treat country targeting as best-effort.
Why is complete sometimes false?
complete is false when the capture ended before the page stopped changing. On Copilot that can happen after the answer text is whole, because Bing keeps adding widgets under the answer. Incomplete answers are returned but never cached.
How long does a request take?
A live answer typically takes 10 to 30 seconds while Copilot searches and writes. The same request within an hour returns the cached answer without a new run, unless you pass cache=false.
What rate limits apply?
Copilot calls share your account's search rate limit, the same on every plan: 300 req/s, 10,000/min and 900,000/day. The tighter limit in practice is Copilot capacity. When it is full the API returns 429 with a Retry-After header, and the refused call is not charged.
Start tracking Copilot answers
3,000 free credits and no card: enough for 375 Copilot answers.