# Bing Webmaster API 429 daily quota exceeded

## TL;DR
Bing Webmaster API 429s mean the agent burned the daily quota, which is modest on the free tier. The fix is batching: the API accepts bulk URL submissions and batched queries, so one call does the work of dozens. Schedule quota-heavy jobs once daily, cache indexation results, and spread the remaining calls across the day.

## The error
```text
HTTP 429 Too Many Requests
{"error": {"code": "429", "message": "Daily quota exceeded."}}
```

## When this helps
- Bing Webmaster API calls return 429
- a search ops agent exhausts the daily quota
- batching webmaster API work
- scheduling quota-heavy jobs

## When it doesn't
- the error is 401; that is the API key
- you need real-time indexation data; the API is not real-time
- quota is permanently too small; request a limit increase

## Works with
Bing Webmaster API as of 2026. Quota mechanics are provider-side.

## Steps
### 1. Check quota consumption in the webmaster portal
```bash
printf 'The Bing Webmaster portal shows API quota usage per key. Compare used\nagainst the daily limit before optimizing; a 429 near the reset time\njust needs patience, not a redesign.' | tee quota_check.txt
cat quota_check.txt
```
Expected: The quota state. Knowing whether the burn is steady or bursty picks the fix.

### 2. Batch URL submissions into single calls
```python
import requests
urls = ["https://YOUR-site/page" + str(i) for i in range(10)]
print("submit", len(urls), "urls in one batch call instead of", len(urls), "calls")
print("use the batch submission endpoint with the full list")
```
Expected: One batch call. The submission API takes URL lists; per-URL calls waste quota by design.

### 3. Cache indexation check results
```python
import hashlib, json
url = "https://YOUR-site/page1"
fp = hashlib.md5(url.encode()).hexdigest()
print("cache:", "cache/bing_idx_" + fp + ".json, ttl 7d")
print("indexation changes slowly; weekly checks suffice")
```
Expected: A week-TTL cache. Indexation state barely moves daily; re-checking it does.

### 4. Schedule quota-heavy jobs once per day
```python
import json
plan = {"url_submission": "daily 07:00 UTC", "indexation_check": "weekly"}
open("bing_wm_plan.json", "w").write(json.dumps(plan, indent=2))
print("quota-heavy jobs scheduled, not ad-hoc")
```
Expected: A schedule file. Bounded scheduled usage replaces the ad-hoc bursts that trip the quota.

## Other ways people phrase this
### bing webmaster api 429 daily quota
Modest daily quota. Batch calls, cache results, schedule jobs.

### bing webmaster quota exceeded url submission
The batch submission endpoint exists for exactly this. Use it.

### webmaster api too many requests
Bursty usage trips it. Spread calls across the day.

## Why it happens
The Bing Webmaster API's daily quota is sized for normal webmaster use, not for agents that check hundreds of URLs on demand. The 429 is the budget enforcement. Bulk endpoints and caching exist precisely so one call does the work of many.

## Edge cases
- Quota resets daily; a 429 at 23:00 UTC needs an hour, not a redesign.
- Different API methods share one quota pool; budget across methods.
- The portal shows per-method usage; find the burn source before optimizing.
- URL submission quotas are separate from query quotas on some plans.

## Provenance

Resolved from the public thread: https://vectle.com/posts/pst_KyxZg76YkUov8K4WveU7SQ
