URL: /code/integrations/bing-webmaster · Id: `page:/code/integrations/bing-webmaster`

# Bing Webmaster

> Your agents verify your site on Bing, push every page you publish to each IndexNow engine, and read the Bing searches that show you.

Your agents verify your site on Bing, push every page you publish to each IndexNow engine, and read the Bing searches that show you.

```text title="Run it · Ask"
Publish my rent ledger template page and show me what Bing receives.
```

```ts title="Run it · SDK"
import { $ } from 'startup-builder'

const result = await $.try.Content.publish({ content: 'content/rent-ledger-template' })
```

```json title="Run it · Response"
{
  "$type": "Content",
  "mode": "try",
  "stored": false,
  "status": "published",
  "url": "https://leaseline.app/rent-ledger-template",
  "effects": [
    {
      "indexnow": {
        "host": "leaseline.app",
        "urlList": [
          "https://leaseline.app/rent-ledger-template"
        ],
        "keyLocation": "https://leaseline.app/2f9c41e7b8a04d6e.txt",
        "reaches": "every IndexNow engine"
      }
    },
    {
      "searchConsole": "sitemap resubmitted"
    }
  ]
}
```

- **Connect:** Verify your domain, 2 grants
- **Runs through:** [Your account or a browser agent](/code/integrations#three-ways)
- **First run:** Push your newest page to Bing and every IndexNow engine, free on your account
- **Sites:** [Bing](/venues#bing)

## Connect once
1. Connect your Domain with `Domain.connect`; the platform adds the site to Bing, verifies it from your DNS and places an IndexNow key file at the site root.
2. For a site already in Bing Webmaster, paste the API key from its settings into `Integration.connect` with `system: 'seo'` and `venue: 'bing'`.
3. Publish as you do; every page that goes live is pushed within a minute.

| Grant | What it unlocks | Scope |
| --- | --- | --- |
| Your IndexNow key | Every new or changed URL pushed to Bing and the other IndexNow engines, proved by the key file on your Domain | `keyLocation: /<key>.txt` |
| An API key | Search queries, clicks and impressions for a site you added to Bing yourself | `apikey` |

| To | Do this |
| --- | --- |
| Pause | `Integration.pause` stops the pushes and the reads at once; the key file stays on your Domain, so resuming needs no new proof. |
| Reconnect | `Integration.reconnect` writes a fresh key file and DNS record and keeps the Integration’s id, so nothing imports twice. |
| Disconnect | `Integration.revoke` removes the key file and stops every push; your site stays in Bing, and every reading stays in your records. |

## What your agents do
| Ask | Verb | Runs through | Price |
| --- | --- | --- | --- |
| Add my site to Bing and verify it when I connect the domain. | [`Domain.connect`](https://startupbuilder.dev/business/nouns/domain/connect) | Your account | Free |
| Push every page I publish to Bing the moment it goes live. | [`Content.publish`](https://startupbuilder.dev/business/nouns/content/publish) | Your account | Free |
| Show me the Bing searches that showed my site last week. | [`Metric.query`](/code/apps/analytics-and-experiments/query) | Your account | Free |
| Read Bing’s crawl errors and indexed pages for my site, signed in as me. | [`Metric.query`](/code/apps/analytics-and-experiments/query) | A browser agent | About 1.6¢ a step |

Calls on your own account are free.

## What it holds
| Noun | The account’s object | When | Which side leads |
| --- | --- | --- | --- |
| [Domain](https://startupbuilder.dev/business/nouns/domain) | `site` | You connect your Domain | Your records |
| [Page](https://startupbuilder.dev/business/nouns/page) | `urlList entry` | A page goes live or changes | Your records |
| [Keyword](https://startupbuilder.dev/business/nouns/keyword) | `query stats` | Each week’s searches settle | The account |

## Events and webhooks
| Direction | Event |
| --- | --- |
| Emits | `Domain.verified`, `Content.published`, `Keyword.measured` |

Any Event can wake a Workflow, and a Watch delivers it to your endpoint, signed ([Events and webhooks](/code/events)).

## Limits
| What | Limit | Call |
| --- | --- | --- |
| One push | Up to 10,000 URLs in one IndexNow request; a full site goes in one push | [`Content.publish`](https://startupbuilder.dev/business/nouns/content/publish) |
| Every IndexNow engine | A URL pushed once reaches every engine that takes IndexNow, so there is nothing to submit twice | [`Content.publish`](https://startupbuilder.dev/business/nouns/content/publish) |
| The key | 8 to 128 characters of letters, digits and dashes, in a file on your Domain; a missing file turns pushes away with `needs-reauth` | Every call |

## Field map
| Our field | Bing Webmaster’s field | Notes | Calls |
| --- | --- | --- | --- |
| `Content.url` | `urlList[]` | Each URL on your host | [`Content.publish`](https://startupbuilder.dev/business/nouns/content/publish) |
| `Domain.hostname` | `host` | None. | [`Content.publish`](https://startupbuilder.dev/business/nouns/content/publish) |
| `Metric.breakdown` | `query or page` | None. | [`Metric.query`](/code/apps/analytics-and-experiments/query) |

## What try does here
Returns the URLs IndexNow would receive and the key file it would check; nothing is pushed.

## How long a connection lasts
A connection lasts as long as the verification record stays on your domain; the platform checks it daily.

The platform asks you to reconnect 7 days before it runs out; until you do, a call that needs it refuses with [`needs-reauth`](/code/refusals#needs-reauth).

## Formats
| Site | Format | Size | Limits |
| --- | --- | --- | --- |
| [Bing](/venues#bing) | Responsive search ad | None. | Up to 15 headlines of 30 characters and 4 descriptions of 90; three enabled per ad group |

## Plays and strategies
| Kind | Where |
| --- | --- |
| Plays | [Editorial SEO](/plays/editorial-seo), [Programmatic SEO](/plays/programmatic-seo), [Category hubs](/plays/category-hubs), [Switch kit](/plays/switch-kit), [Answer engine optimization](/plays/aeo) |
| Strategies | [Launch and search](/strategy/launch-and-search) |

## Used by
- **Workflows:** [Index the site](/capabilities/get-indexed/index-the-site)
- **Services:** [Ranked page](/capabilities/make-content/ranked-page)

## Reference

| Call | Path | Price |
| --- | --- | --- |
| [`Domain.connect`](https://startupbuilder.dev/business/nouns/domain/connect) | `POST /domains/connect` | Free |
| [`Content.publish`](https://startupbuilder.dev/business/nouns/content/publish) | `POST /content/publish` | Free |
| [`Metric.query`](/code/apps/analytics-and-experiments/query) | `POST /metrics/query` | Free |
| [`Metric.query`](/code/apps/analytics-and-experiments/query) | `POST /metrics/query` | About 1.6¢ a step |