Menu · Getting started
Getting started

Rate and payload limits

Per-minute rate limits, daily row quotas, page sizes, range caps, and how to pull large amounts of data.

View as Markdown
Limit Default Applies to
Requests 120 per minute each key
Lookup calls 20 per minute each key, on the calls marked lookup below
Requests from one network 600 per minute each source IP, all keys
Rows per day 250,000 each key, every row returned
Lead rows per day 50,000 each key, rows containing a lead's details
CMAs per day 200 each brokerage, all keys together (POST /cma; reading a stored CMA is free). Your CSM can change it
Public record calls per day 500 each brokerage, all keys together (/public-records/lookup and /public-records/{recordId}/history). One home per call: not for bulk exports
Page size 100 default, 500 max list calls
Page size with lead details 200 max /leads, /leads/activity, /leads/lookup and /properties/{propertyId}/viewers
Date range 93 days at day, 400 days at week, 36 months at month series calls
Response size 2 MB, then the rest is on the next page every call
Series length 2,000 rows per response series calls
Request body 64 KB webhook management calls

Lookup calls search Ruuster's records on demand rather than from prepared reports, so they have their own, lower limit: /leads, /leads/lookup, /leads/{leadId}/emails, /properties/lookup, POST /cma and the /public-records calls.

Every response carries your current position:

x-ratelimit-limit: 120
x-ratelimit-remaining: 117
x-ratelimit-reset: 1790863260        (unix seconds when the minute window resets)
x-daily-rows-limit: 250000
x-daily-rows-remaining: 248310

Over a limit you get 429 with a Retry-After header in seconds: rate_limited for per-minute limits, daily_quota_exceeded for daily row limits (they reset at midnight America/Chicago). Wait that long before retrying. Your CSM can raise limits for a specific integration.

Pulling large amounts of data

  • Add ?countOnly=1 to any list call to get { "total": n } without rows, so you can size a sync.
  • Use /properties/engagement instead of one call per listing.
  • Use /leads/activity to find active leads instead of paging the whole roster.
  • Planned: changedSince to pull only what changed since your last sync.
  • The API is built for incremental pulls, not full dumps. If you need a one-time full export, talk to your CSM about options.

Items marked Planned on these pages aren't available yet. They're listed in the changelog and move out of Planned when they ship.