# Bing Webmaster Tools

Bing Webmaster Tools reports how a site performs in Bing search and how Bingbot crawls it. Connect with a Bing API key or by signing in with Microsoft (read-only); One API for Agents calls the Bing Webmaster API on your behalf.

- Provider id: `bing`
- Auth: API key, Sign in with Microsoft (OAuth)
- Google scopes: `webmaster.read`
- Raw endpoints: 14. Smart tools: 4.
- Machine-readable schemas: `GET https://api.oneapiforagents.com/v1/providers/bing`

## Smart tools

Curated calls with compact output for agents. Over MCP each one is a tool with the same name.

### bing_top_queries

Top Bing search queries by clicks for a site over the last N days, with impressions, CTR and average position. Bing updates this weekly.

| Name | Type | Required | Notes |
| --- | --- | --- | --- |
| `siteUrl` | string | yes | Site as added in Bing, e.g. "https://example.com/" |
| `days` | integer | no | How many days back from the latest available data Default `28`. (7–180) |
| `limit` | integer | no | Maximum rows to return Default `25`. (1–1000) |

```sh
curl https://api.oneapiforagents.com/v1/call \
  -H "Authorization: Bearer $ONEAPI_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "provider": "bing",
    "tool": "bing_top_queries",
    "input": {
      "siteUrl": "https://example.com/",
      "days": 28,
      "limit": 10
    }
  }'
```

### bing_top_pages

Top pages in Bing search by clicks for a site over the last N days, with impressions, CTR and average position.

| Name | Type | Required | Notes |
| --- | --- | --- | --- |
| `siteUrl` | string | yes | Site as added in Bing, e.g. "https://example.com/" |
| `days` | integer | no | How many days back from the latest available data Default `28`. (7–180) |
| `limit` | integer | no | Maximum rows to return Default `25`. (1–1000) |

```sh
curl https://api.oneapiforagents.com/v1/call \
  -H "Authorization: Bearer $ONEAPI_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "provider": "bing",
    "tool": "bing_top_pages",
    "input": {
      "siteUrl": "https://example.com/",
      "days": 28,
      "limit": 10
    }
  }'
```

### bing_crawl_health

Crawl health for a site in Bing: pages in index, crawl and HTTP error totals over the last N days, and the URLs with crawl issues (most linked first).

| Name | Type | Required | Notes |
| --- | --- | --- | --- |
| `siteUrl` | string | yes | Site as added in Bing, e.g. "https://example.com/" |
| `days` | integer | no | How many days back from the latest available data Default `30`. (1–180) |
| `issueLimit` | integer | no | Default `25`. (0–500) |

```sh
curl https://api.oneapiforagents.com/v1/call \
  -H "Authorization: Bearer $ONEAPI_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "provider": "bing",
    "tool": "bing_crawl_health",
    "input": {
      "siteUrl": "sc-domain:example.com"
    }
  }'
```

### bing_list_sites

Sites on the connected Bing Webmaster account and whether each is verified.

No input.

```sh
curl https://api.oneapiforagents.com/v1/call \
  -H "Authorization: Bearer $ONEAPI_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "provider": "bing",
    "tool": "bing_list_sites",
    "input": {}
  }'
```

## Raw endpoints

Passthrough to the provider API. `path` fills URL placeholders, `query` the query string and `body` the JSON body. The response is the provider's own body.

### GetUserSites

List the sites on this Bing Webmaster account, with verification status.

`GET https://ssl.bing.com/webmaster/api.svc/json/GetUserSites`

No input.

```json
{
  "provider": "bing",
  "endpoint": "GetUserSites"
}
```

### GetQueryStats

Top search queries with clicks, impressions and average positions, by week. Updated weekly.

`GET https://ssl.bing.com/webmaster/api.svc/json/GetQueryStats`

| Name | Type | Required | Notes |
| --- | --- | --- | --- |
| `query.siteUrl` | string | yes | Site as added in Bing, e.g. "https://example.com/" |

```json
{
  "provider": "bing",
  "endpoint": "GetQueryStats",
  "input": {
    "query": {
      "siteUrl": "sc-domain:example.com"
    }
  }
}
```

### GetPageStats

Top pages with clicks, impressions and average positions (the page URL is in `Query`). Updated weekly.

`GET https://ssl.bing.com/webmaster/api.svc/json/GetPageStats`

| Name | Type | Required | Notes |
| --- | --- | --- | --- |
| `query.siteUrl` | string | yes | Site as added in Bing, e.g. "https://example.com/" |

```json
{
  "provider": "bing",
  "endpoint": "GetPageStats",
  "input": {
    "query": {
      "siteUrl": "sc-domain:example.com"
    }
  }
}
```

### GetRankAndTrafficStats

Daily clicks and impressions for the whole site. Updated daily.

`GET https://ssl.bing.com/webmaster/api.svc/json/GetRankAndTrafficStats`

| Name | Type | Required | Notes |
| --- | --- | --- | --- |
| `query.siteUrl` | string | yes | Site as added in Bing, e.g. "https://example.com/" |

```json
{
  "provider": "bing",
  "endpoint": "GetRankAndTrafficStats",
  "input": {
    "query": {
      "siteUrl": "sc-domain:example.com"
    }
  }
}
```

### GetQueryPageStats

Pages that ranked for one query, with clicks, impressions and positions.

`GET https://ssl.bing.com/webmaster/api.svc/json/GetQueryPageStats`

| Name | Type | Required | Notes |
| --- | --- | --- | --- |
| `query.siteUrl` | string | yes | Site as added in Bing, e.g. "https://example.com/" |
| `query.query` | string | yes |  |

```json
{
  "provider": "bing",
  "endpoint": "GetQueryPageStats",
  "input": {
    "query": {
      "siteUrl": "sc-domain:example.com",
      "query": "example"
    }
  }
}
```

### GetPageQueryStats

Queries that led to one page, with clicks, impressions and positions.

`GET https://ssl.bing.com/webmaster/api.svc/json/GetPageQueryStats`

| Name | Type | Required | Notes |
| --- | --- | --- | --- |
| `query.siteUrl` | string | yes | Site as added in Bing, e.g. "https://example.com/" |
| `query.page` | string | yes |  |

```json
{
  "provider": "bing",
  "endpoint": "GetPageQueryStats",
  "input": {
    "query": {
      "siteUrl": "sc-domain:example.com",
      "page": "https://example.com/pricing"
    }
  }
}
```

### GetQueryTrafficStats

Daily clicks and impressions for one query.

`GET https://ssl.bing.com/webmaster/api.svc/json/GetQueryTrafficStats`

| Name | Type | Required | Notes |
| --- | --- | --- | --- |
| `query.siteUrl` | string | yes | Site as added in Bing, e.g. "https://example.com/" |
| `query.query` | string | yes |  |

```json
{
  "provider": "bing",
  "endpoint": "GetQueryTrafficStats",
  "input": {
    "query": {
      "siteUrl": "sc-domain:example.com",
      "query": "example"
    }
  }
}
```

### GetCrawlStats

Daily crawl stats for the last 6 months: pages crawled, in index, HTTP code counts, robots.txt blocks.

`GET https://ssl.bing.com/webmaster/api.svc/json/GetCrawlStats`

| Name | Type | Required | Notes |
| --- | --- | --- | --- |
| `query.siteUrl` | string | yes | Site as added in Bing, e.g. "https://example.com/" |

```json
{
  "provider": "bing",
  "endpoint": "GetCrawlStats",
  "input": {
    "query": {
      "siteUrl": "sc-domain:example.com"
    }
  }
}
```

### GetCrawlIssues

URLs with crawl issues. `Issues` is a bit flag: 1 Code301, 2 Code302, 4 Code4xx, 8 Code5xx, 16 BlockedByRobotsTxt, 32 ContainsMalware, 64 ImportantUrlBlockedByRobotsTxt, 128 DnsErrors, 256 TimeOutErrors.

`GET https://ssl.bing.com/webmaster/api.svc/json/GetCrawlIssues`

| Name | Type | Required | Notes |
| --- | --- | --- | --- |
| `query.siteUrl` | string | yes | Site as added in Bing, e.g. "https://example.com/" |

```json
{
  "provider": "bing",
  "endpoint": "GetCrawlIssues",
  "input": {
    "query": {
      "siteUrl": "sc-domain:example.com"
    }
  }
}
```

### GetFeeds

Sitemaps and feeds submitted for the site.

`GET https://ssl.bing.com/webmaster/api.svc/json/GetFeeds`

| Name | Type | Required | Notes |
| --- | --- | --- | --- |
| `query.siteUrl` | string | yes | Site as added in Bing, e.g. "https://example.com/" |

```json
{
  "provider": "bing",
  "endpoint": "GetFeeds",
  "input": {
    "query": {
      "siteUrl": "sc-domain:example.com"
    }
  }
}
```

### GetUrlSubmissionQuota

How many URLs can still be submitted today and this month.

`GET https://ssl.bing.com/webmaster/api.svc/json/GetUrlSubmissionQuota`

| Name | Type | Required | Notes |
| --- | --- | --- | --- |
| `query.siteUrl` | string | yes | Site as added in Bing, e.g. "https://example.com/" |

```json
{
  "provider": "bing",
  "endpoint": "GetUrlSubmissionQuota",
  "input": {
    "query": {
      "siteUrl": "sc-domain:example.com"
    }
  }
}
```

### GetKeywordStats

Bing search volume history for a keyword (not tied to your site).

`GET https://ssl.bing.com/webmaster/api.svc/json/GetKeywordStats`

| Name | Type | Required | Notes |
| --- | --- | --- | --- |
| `query.q` | string | yes |  |
| `query.country` | string | no | Country code, e.g. "us" |
| `query.language` | string | no | Language, e.g. "en-US" |

```json
{
  "provider": "bing",
  "endpoint": "GetKeywordStats",
  "input": {
    "query": {
      "q": "example"
    }
  }
}
```

### SubmitUrl

Submit one URL for indexing. Uses the site's daily quota.

`POST https://ssl.bing.com/webmaster/api.svc/json/SubmitUrl` (writes; needs read-write access)

| Name | Type | Required | Notes |
| --- | --- | --- | --- |
| `body.siteUrl` | string | yes | Site as added in Bing, e.g. "https://example.com/" |
| `body.url` | string (uri) | yes |  |

```json
{
  "provider": "bing",
  "endpoint": "SubmitUrl",
  "input": {
    "body": {
      "siteUrl": "sc-domain:example.com",
      "url": "https://example.com/"
    }
  }
}
```

### SubmitUrlBatch

Submit up to 500 URLs for indexing. Uses the site's daily quota.

`POST https://ssl.bing.com/webmaster/api.svc/json/SubmitUrlBatch` (writes; needs read-write access)

| Name | Type | Required | Notes |
| --- | --- | --- | --- |
| `body.siteUrl` | string | yes | Site as added in Bing, e.g. "https://example.com/" |
| `body.urlList` | array<string (uri)> | yes |  |

```json
{
  "provider": "bing",
  "endpoint": "SubmitUrlBatch",
  "input": {
    "body": {
      "siteUrl": "sc-domain:example.com",
      "urlList": [
        "https://example.com/"
      ]
    }
  }
}
```
