Paginated, filterable property search with ROI fields
GET /api/properties/bulk-info/
1 credit per property
What it returns
Paginated search across all US residential properties matching geo + price + bed/bath/sqft/year-built/DOM/lot filters. Each result row carries ROI-relevant fields (AVM bands, financing/holding/project-cost breakdowns, potential ROI) — designed to feed investor screening dashboards, not detail pages.
When to use it
- Build investor screening with multi-criteria filters (e.g. "active listings under $300k in zip 65802 with potential_roi > 0.15").
- Generate market reports: average AVM, average days on market, count of matches.
- Seed a recommendation engine with filtered candidate pools.
Performance
This is a slow endpoint — use a 60-second client timeout and cache responses.
Pricing
1 credit per property in the response. A page with 50 properties costs 50 credits. Use page_size to cap cost — for screening UI, smaller pages with manual paginate-on-demand is the cost-effective pattern.
Errors
| Status | Meaning |
|---|---|
| 400 | Invalid filter values (e.g. min_price > max_price, non-numeric beds_max). |
| 401 | Authentication failed. |
| 402 | No subscription or insufficient credits for the page size requested. |
| 503 / 504 | Backend datastore unavailable or query timed out. |
FAQ
What's the difference between property_status: "Active" and "Sold"?
Active queries residential_for_sale. Sold queries residential_sold (same backing as the dedicated sold-by-zip endpoint). Both share the same response shape.
Why is dom calculated rather than stored?
The MLS doesn't always carry days-on-market natively. When the field is absent, the endpoint computes it from list_date to sold_date (or to "now" for active listings).
Can I filter by neighborhood?
Not directly. Filter by city + state + zip; the response includes a neighborhood field for client-side post-filtering.
Is avm_confidence a percentage?
A 0.0–1.0 float. Higher = the AVM model is more confident in the band. Filter on avm_confidence > 0.7 for high-quality estimates only.
Parameters
city(query) — City name to search within. At least one of zip, city, or state is required.page(query) — 1-based page number. Defaults to 1.page_size(query) — Items per page. Defaults to 20. Caps your per-call credit cost.state(query) — 2-letter US state code. At least one of zip, city, or state is required.zip(query) — 5-digit US ZIP code to search within. At least one of zip, city, or state is required.
Responses
200400— Bad request — a required parameter is missing or failed validation. Costs 0 credits.401— Authentication failed — missing or invalid API key. Costs 0 credits.402— Payment required — no active subscription or insufficient credit balance. Costs 0 credits.503— Upstream data provider is temporarily unavailable — retry with backoff.504
More in Property Lookup
- Suggest US property addresses from a partial string —
GET /api/properties/auto-complete/
Up to 5 address suggestions matching a partial address string. - Full property record for a US residential property —
GET /api/properties/info/
Full property record for a single US residential property — address, coordinates, listing status and price, AVM-estimated value, size, days on market, building/lot/parking/interior breakdown, listing-office details, recent property history, and nearby school ratings. - Same as `info` but always force-fetches fresh data from the source —
GET /api/properties/updated-info/
Identical response shape to info — see that endpoint's docs for fields and FAQ.