Plans, quotas and rate limits
One rule: the rack rate is 20% below the comparable published rate (pricing). One unit: a record returned. Each listing in a /v1/listings page, each /v1/listings/{id}, each listing from an MCP search, and each row in a download counts once. Counts, brokerages, stats and usage are free.
| Plan | Monthly | Included records | Overage | Hard cap | Rate limit | Max page | Contacts | Inactive rows |
|---|---|---|---|---|---|---|---|---|
| Free | $0 | 25 | none | 25 | 60 per minute | 100 | names only | no |
| Pay as you go | $0 | 500 | $0.560 | 1,000,000 | 600 per minute | 1000 | yes | yes |
How a request is checked
- Rate limit per key (requests per minute). Exceeding it returns
429 rate_limitedwithRetry-After. - Quota: if you have used your included records and the plan has no overage,
429 quota_exceeded. With overage, requests continue up to the hard cap. When fewer records remain than you asked for, the page is shortened rather than refused. - The query runs, the records are counted, and
meta.quota/X-Quota-*reflect the new total.
Periods and billing
Quotas reset on the first of each calendar month (UTC). Usage is reported to Stripe daily and billed in arrears on the monthly invoice through the graduated ladder. We email at 80% and 100% of included records. Upgrading takes effect immediately; downgrades and cancellations at period end.
Tips to use fewer records
- Count first (
include_total=1orcount_listings) and narrow filters. - Sync with
updated_sinceinstead of re-pulling. - Ask for the fields you need with
fields=; it does not change the record count but keeps pages fast.