About
Programmatic access to the property database: search by address, parcel, or MLS id, fetch property details and attributes, run your saved property filters, organize properties with tags and lists, and skip-trace owners. All operations go through the developer API gateway — one endpoint, called byoperationId. If you haven’t set up a key yet, start with the
Developer API Overview.
Property idsThe search operations (
findProperties, findPropertiesByParcel,
findPropertiesByMlsId) return the property id to use everywhere else —
pass it as-is to getProperty, getRelatedProperties, tag/list operations,
and skip tracing.Operations
Lookup and search (READ scope)
Address/parcel/MLS searches are paginated
findProperties, findPropertiesByParcel, and findPropertiesByMlsId return up
to 50 matches per call (a larger limit is clamped) but take an offset,
and return totalCount + hasMore — so you can page through the full result set:
send offset: 0, then offset: 50, and so on until hasMore is false. See
Result limits & truncation.Saved filters (READ + WRITE scopes)
Relay filter warningsA successful save or update can return
warnings. These are not errors: the
filter was persisted, but its criteria may deserve attention — for example,
selecting same-named counties from different states. Show every warning to
the user and correct the tree if it reveals an unintended selection.Cities and counties are identified by id, not by nameA
cityFilters condition takes the id from searchCities as its value
(with label set to "Name, ST", e.g. "Memphis, TN"), and a
countyFilters condition takes the 5-digit fips from searchCounties.
saveFilter and updateFilter reject a bare city or county name: 11,347
US city names occur in more than one state, and a county name compiles to a
county_fips term that would match nothing. Resolve the name to an id first.Tags and lists (READ + WRITE scopes)
Skip tracing (ADMIN scope)
Properties are global, not org-ownedUnlike deals or contacts, a property isn’t owned by any one organization — it’s
shared reference data. So property operations are not org-guarded on the
property id: any valid property id (esId) is readable, and referencing one never
returns
403 forbidden. Your scope (READ / WRITE / ADMIN) still gates
what you can do. The tags and lists you organize properties with are yours,
though — a tag or list id from another org returns 403 forbidden. Saved filters
you create are tied to your organization by the key. See
Authorization for the model.