Skip to main content

Rate Limits

API requests are rate-limited per API key based on your plan tier.

Limits by plan

TierRequests/secondRequests/minuteRequests/day
Standard51005,000
Professional1550025,000
EnterpriseCustomCustomCustom

The Free tier does not include API access.

Rate limit headers

When rate limiting is active, every response includes these headers:

HeaderDescription
X-RateLimit-LimitYour per-minute request allowance
X-RateLimit-RemainingRequests remaining in the current window
X-RateLimit-ResetUnix timestamp when the window resets
Retry-AfterSeconds to wait before retrying (only on 429 responses)

Handling 429 responses

When you exceed your rate limit, the API returns HTTP 429 Too Many Requests. Build retry logic with exponential backoff:

import time
import requests

def call_with_retry(url, headers, json_body, max_retries=3):
for attempt in range(max_retries):
resp = requests.post(url, headers=headers, json=json_body)
if resp.status_code == 429:
wait = int(resp.headers.get("Retry-After", 2 ** attempt))
time.sleep(wait)
continue
return resp
raise Exception("Rate limit exceeded after retries")

Tips for staying under limits

  • Use batch endpoints for bulk processing — one request processes up to 500 properties instead of 500 individual calls
  • Use the Comprehensive endpoint to fetch multiple data types in a single call instead of hitting each endpoint separately
  • Cache responses — identical requests within the 5-minute idempotency window return cached results at zero credit cost
  • Request only what you need — fewer comparables and fewer census keys mean fewer credits consumed

Credit usage

For per-endpoint credit costs, plans, and pricing details, see the Credits & Pricing page.

Checking your usage

View your current credit balance, rate limit status, and usage history at dashboard.padstats.io.