# Bing Copilot AI Answers API | Microsoft AEO Monitoring (`johnvc/bing-copilot-api`) Actor

Track Bing Copilot AI answers for any query: Microsoft AI-generated answers, structured text blocks, cited sources, and brand mentions as clean JSON. The fourth engine in the AEO suite with Google AI Overview, Naver AI Overview, and Brave AI Mode. Pay per query. MCP-ready for AI agents.

- **URL**: https://apify.com/johnvc/bing-copilot-api.md
- **Developed by:** [John](https://apify.com/johnvc) (community)
- **Categories:** AI, SEO tools, MCP servers
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$15.00 / 1,000 copilot query resolveds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Bing Copilot AI Answers API | Microsoft AEO Monitoring

> **Track what Microsoft's answer engine says about any topic - and whether it cites YOUR brand - as clean, structured JSON.**

Bing Copilot is the AI answer layer of Microsoft's search stack: for a growing share of queries, users read its generated answer instead of clicking ten blue links. If you do answer-engine optimization (AEO), you need to know what that answer says, which sources it cites, and whether your brand is in it. This API resolves any query to its Copilot answer: the headline summary, the full structured answer (headings, lists, tables, code), every cited reference, and an optional brand-mention check.

This is the **fourth engine in the AEO suite**, next to [Google AI Overview](https://apify.com/johnvc/google-ai-overview-api?fpr=9n7kx3), [Naver AI Overview](https://apify.com/johnvc/naver-ai-overview-api?fpr=9n7kx3), and [Brave AI Mode](https://apify.com/johnvc/brave-ai-mode-api?fpr=9n7kx3). Same input shape, same output style: monitor all four answer engines with one pipeline.

### What you get for every query

| Field | Description |
|---|---|
| **Answer header** | The one-paragraph headline answer |
| **Markdown** | The full answer rendered as a single markdown document, ready for diffing and LLM pipelines |
| **Text blocks** | The raw structured blocks: paragraphs, headings, nested lists, tables, code blocks |
| **References** | Every cited source with title, link, snippet, and source name |
| **Brand check** | `brandMentioned` boolean when you set `brandToTrack` |
| **Extras** | Featured video, image and video result links when present |
| **Summary** | A one-line human-readable summary built for AI agents |

### Use cases

- **AEO / GEO brand monitoring** - is your brand cited when Copilot answers "best crm for startups"? Track it weekly across your whole keyword set.
- **Citation-source analysis** - which domains does Microsoft's answer engine trust for your category? Target those for PR and content placement.
- **Competitor share-of-voice** - run the same query list with each competitor as `brandToTrack` and compare mention rates.
- **Content strategy** - see the exact structure (headings, tables, steps) the answer engine prefers for your keywords, and shape your content to match.
- **Answer drift tracking** - store the markdown over time and diff how the AI answer changes after your content updates.

### Input

```json
{
  "queries": ["best crm for startups", "best help desk software"],
  "brandToTrack": "Salesforce"
}
````

| Parameter | Type | Notes |
|---|---|---|
| `query` / `queries` | string / array | The question(s) to resolve. At least one required. |
| `brandToTrack` | string | Optional. Adds a `brandMentioned` boolean to every answer row. |

Answers typically take about 10 seconds per query to generate upstream - that is the answer engine thinking, not the actor being slow.

### Example output

```json
{
  "result_type": "copilot_answer",
  "query": "best crm for startups",
  "answerPresent": true,
  "answerHeader": "The best CRM for startups depends on budget and team size, with HubSpot, Pipedrive, and Salesforce among the most recommended.",
  "markdown": "## Top CRM picks\n\n- HubSpot: generous free tier\n- Pipedrive: pipeline-first UX\n- Salesforce: scales with you",
  "references": [
    { "index": 0, "title": "Best CRMs for Startups (2026)", "link": "https://example.com/best-crms", "source": "Example" }
  ],
  "brandToTrack": "Salesforce",
  "brandMentioned": true,
  "summary": "The best CRM for startups depends on budget and team size, with HubSpot, Pipedrive, and Salesforce among the most recommended.",
  "fetched_at": "2026-07-06T15:37:00+00:00"
}
```

### Pricing

Pay-per-event: one flat charge per query resolved, whether you run one query or a thousand. No setup fee, no per-row surprises: one query, one answer, one charge.

### How to get started

1. [View on Apify Store](https://apify.com/johnvc/bing-copilot-api?fpr=9n7kx3) and click **Try for free**.
2. Enter a query (and optionally the brand you want to track).
3. Run it and read the answer, citations, and brand check as JSON, CSV, or via the API.

Monitoring the full AEO landscape? Pair this with [Google AI Overview](https://apify.com/johnvc/google-ai-overview-api?fpr=9n7kx3), [Naver AI Overview](https://apify.com/johnvc/naver-ai-overview-api?fpr=9n7kx3), and [Brave AI Mode](https://apify.com/johnvc/brave-ai-mode-api?fpr=9n7kx3).

### 🔌 Use this API from Claude (MCP)

Add this actor as a tool in [Claude Code](https://claude.ai/referral/uIlpa7nPLg) (free trial), [Claude Cowork](https://claude.ai/referral/uIlpa7nPLg) (free trial), or any other MCP client, via the hosted Apify MCP server. Use this actor-specific URL:

https://mcp.apify.com/?tools=actors,docs,johnvc/bing-copilot-api

Setup walkthrough:

https://www.youtube.com/watch?v=jREWahDGhJM

Apify MCP integration docs: https://docs.apify.com/platform/integrations/mcp

Then ask things like: *"Check whether Acme is mentioned when Microsoft's AI answers 'best project management software', and list the cited sources."*

### FAQ

#### Why does a query take around 10 seconds?

The answer engine generates its response live, which typically takes 8 to 13 seconds upstream. Batch your queries into one run with the `queries` list; they are processed sequentially with one charge each.

#### What if there is no AI answer for my query?

You still get a row with `answerPresent: false` and a note, so your monitoring pipeline can tell "no answer" apart from "run failed". The query is still charged, since the engine was queried.

#### How is `brandMentioned` computed?

Case-insensitive match of your `brandToTrack` string across the full answer text (all blocks) and the cited references (titles, links, snippets, and source names).

#### Can I set the country or language?

Not yet: the upstream answer engine currently exposes no country or language controls for this answer surface. If Microsoft adds them, they will be added here.

Last Updated: 2026.07.06

# Actor input Schema

## `query` (type: `string`):

REQUIRED (or use `queries`). A question or search phrase to resolve, e.g. 'best crm for startups'. Anything you would type into the answer engine works.

## `queries` (type: `array`):

Provide a list of queries to resolve in one run, e.g. \['best crm for startups', 'best help desk software']. Each query returns one AI answer row.

## `brandToTrack` (type: `string`):

Optional brand or product name, e.g. 'Salesforce'. Each answer row then includes a `brandMentioned` boolean showing whether the brand appears in the AI answer text or its cited sources.

## Actor input object example

```json
{
  "query": "best crm for startups"
}
```

# Actor output Schema

## `allResults` (type: `string`):

All dataset items from this run, including any error rows.

## `answers` (type: `string`):

The AI answers table view.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "query": "best crm for startups"
};

// Run the Actor and wait for it to finish
const run = await client.actor("johnvc/bing-copilot-api").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "query": "best crm for startups" }

# Run the Actor and wait for it to finish
run = client.actor("johnvc/bing-copilot-api").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "query": "best crm for startups"
}' |
apify call johnvc/bing-copilot-api --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=johnvc/bing-copilot-api",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Bing Copilot AI Answers API | Microsoft AEO Monitoring",
        "description": "Track Bing Copilot AI answers for any query: Microsoft AI-generated answers, structured text blocks, cited sources, and brand mentions as clean JSON. The fourth engine in the AEO suite with Google AI Overview, Naver AI Overview, and Brave AI Mode. Pay per query. MCP-ready for AI agents.",
        "version": "0.0",
        "x-build-id": "3533UkZfdjcJJCr7k"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/johnvc~bing-copilot-api/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-johnvc-bing-copilot-api",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/johnvc~bing-copilot-api/runs": {
            "post": {
                "operationId": "runs-sync-johnvc-bing-copilot-api",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/johnvc~bing-copilot-api/run-sync": {
            "post": {
                "operationId": "run-sync-johnvc-bing-copilot-api",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "query": {
                        "title": "Search Query",
                        "type": "string",
                        "description": "REQUIRED (or use `queries`). A question or search phrase to resolve, e.g. 'best crm for startups'. Anything you would type into the answer engine works."
                    },
                    "queries": {
                        "title": "Search Queries",
                        "type": "array",
                        "description": "Provide a list of queries to resolve in one run, e.g. ['best crm for startups', 'best help desk software']. Each query returns one AI answer row.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "brandToTrack": {
                        "title": "Brand to Track",
                        "type": "string",
                        "description": "Optional brand or product name, e.g. 'Salesforce'. Each answer row then includes a `brandMentioned` boolean showing whether the brand appears in the AI answer text or its cited sources."
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
