# Rate limits

| What | Limit |
|---|---|
| REST API | **600** requests per key per hour |
| MCP | Shares the REST counter |
| Records per page | Up to 200–1000 depending on the endpoint (`adet`) |
| Sanctions screening | Up to 500 names per request |
| Quick lookup (`/api/v1/ara/`) | Also 300 queries per key per hour |
| Webhooks | Up to 5 addresses |

Over the limit you get `429 hiz_siniri`. The `Retry-After` header and `hata_ayrinti.tekrar_sn` give the seconds until the window resets; wait that long and retry.

```python
import time

import requests


def ulawk_get(adres, basliklar, deneme=5):
    for _ in range(deneme):
        r = requests.get(adres, headers=basliklar, timeout=30)
        ayrinti = (r.json().get("hata_ayrinti") or {}) if r.headers.get("Content-Type", "").startswith("application/json") else {}
        if r.ok or not ayrinti.get("tekrar_denenebilir"):
            return r
        time.sleep(int(r.headers.get("Retry-After") or ayrinti.get("tekrar_sn") or 60))
    return r
```

## Good practice

- Fetch daily changes in one call (`GET /api/v1/degisiklikler/?gun=1`) or use webhooks rather than polling every company.
- The public `/api/katalog/` and `/durum.json` are cached (Cache-Control); no need to poll them often.
- Need a higher limit? Write to info@ulawk.com.
