Rate Limits
Rate limits for governed MLS access are set by each MLS's governance policy — not by your Conduit plan. Each MLS chooses a policy template that defines per-minute, per-hour, and per-day limits.
[i]Governance rate limits vs billing thresholds
Policy rate limits
Each MLS selects a governance policy template. The three standard templates define the following rate limits:
| Policy | Per minute | Per hour | Per day | Max results/query |
|---|---|---|---|---|
| Standard Access | 60 | 1,000 | 10,000 | 50 |
| Restricted Access | 20 | 300 | 3,000 | 25 |
| Open Data | 120 | 5,000 | 50,000 | 100 |
MLSs can also create custom policies with different rate limits.
How rate limits are enforced
Rate limits are enforced per-vendor-per-MLS. If you access multiple MLSs, each MLS has its own independent rate limit window. Limits are checked in order: per-minute first, then per-hour, then per-day. The first limit hit triggers a 429 response.
Rate limit headers
Every governed response includes rate limit headers:
| Header | Description |
|---|---|
X-RateLimit-Remaining | Remaining requests in the tightest active window |
X-RateLimit-Reset | Unix timestamp (seconds) when the window resets |
429 response format
When rate limited, the gateway returns a 429 with details about which limit was exceeded:
{
"error": "governance_rate_limit_exceeded",
"message": "MLS policy per_minute rate limit exceeded.",
"limit_name": "per_minute",
"retry_after": 42
}The retry_after value is in seconds. Wait at least that long before retrying.
Best practices
X-RateLimit-Remaining and throttle before hitting the limit.