Technical Documentation
Once you have the Reonomy IDs for properties of interest (see Searching for properties), the API supports multiple ways to obtain information about those properties:
# of properties | Use | See |
---|---|---|
One per request | GET /property/{id} | Individual properties |
Up to 250 per request | POST /property/bulk | Multiple properties |
Large quantities | Bulk data feeds | About bulk data feeds |
Requests to GET /v2/property/{property_id}
are rate limited to 5 requests per second. Requests to POST /v2/property/bulk
are limited to 2 requests per second and 20 requests per minute.
If you exceed the rate limit for a given time period, the API returns HTTP status code 429
and you must wait before submitting additional requests.
GET /property/{property_id}
This endpoint takes a Reonomy property ID and returns basic information about the property. See Searching for properties to learn how to obtain the ID for a specific property.
For information about the attributes returned in the response, click any highlighted attribute name in the example, or see the response definition for GET /property/{property_id}
for a full list.
Note that this example includes several attributes that are only available for New York City properties (block_id
, borough_id
, etc.). Those attributes are marked NYC properties only in the description.
If you run the query and get an AuthorizationException
, use the Access Token button in the top navigation bar to set your API access token.
GET /property/{property_id}?detail_type=<type>
The detail_type
query parameter lets you request detail information (mortgages
, taxes
, etc.) for the specified property. If you omit the parameter, the API returns basic
property information.
Note: You can specify multiple instances of this parameter in the query string, as shown in the example.
The response includes information for the detail types specified using the detail_type
query parameter, or basic
information if you didn't use the parameter in the request.
For information about the attributes returned in the response, click any highlighted attribute name in the example, or see the response definition for GET /property/{property_id}
.
Personally identifiable information (PII) is data that may be used to identify a particular person, and includes names, addresses, emails, etc. Some Reonomy property detail types include PII, and the Data dictionary identifies which fields may contain PII. For example, mortgage data includes the borrower name, the lender name, and the mortgage signatory information, and these are tagged as PII.
PII is included by default, but if you want to exclude it from the API response, you can do so using the filter_pii
query parameter, as shown in the example.
POST /property/bulk
This endpoint takes up to 250 Reonomy property IDs and returns information about the specified properties. See Searching for properties to learn how to obtain IDs for properties that match certain search criteria.
You can request as many of the available property detail types as you want (basic
, mortgages
, etc.). You can also specify whether you want to exclude personally identifiable information (PII).
Requests to POST /v2/property/bulk
are rate limited at:
To download large quantities of property data, use bulk data feeds.
The reponse is a list with one item per property ID. For information about the attributes returned in the response, click any highlighted attribute name in the example, or see the response definition for POST /property/bulk
for a full list.
Note that this example includes several attributes that are only available for New York City properties (block_id
, borough_id
, etc.). Those attributes are marked NYC properties only in the description.
If you run the query and get an AuthorizationException
, use the Access Token button in the top navigation bar to set your API access token.
The ownership
detail type returns information about property ownership that includes the likely owners and their contact information (addresses, emails, and phone numbers).
GET /v2/property/{property_id} | POST /v2/property/bulk |
---|---|
Specify the property's Reonomy ID as the path parameter | Specify the property's Reonomy ID in the property_ids request body parameter |
Set the detail_type query parameter to ownership | Set the detail_type request body parameter to ownership |
The response contains a contacts
array with contact information for some or all of the following:
The structure of the response is described below. For information about individual attributes, click any highlighted attribute name in the example, or see the response definition in GET /v2/property/{property_id}
for a full list.
In the API response, each object in the contacts
array (there are two in this example) represents an individual
or a company
with connections to the property:
contact_type: "individual"
, the object includes a persons
list with a single object containing the person's name and contact information.contact_type: "company"
, the object includes a persons
list that may include one or more objects representing individuals associated with the company, along with their contact information.In addition to the persons
list and the contact_type
, each object includes the following attributes:
is_signatory
: true
if the person is the mortgage signatory (the signer of the most recent mortgage on the property). The signatory is always an individual (not a company).match_score
: Indicates the confidence that this is the true owner and determines the order in which contacts are listed. The mortgage signatory always receives a match_score
of 101 and is always the first contact in the list.is_green_match
: true
for items where the match_score
is greater than 50. Unlike the web app, the API does not return "gray" matches, so all contacts in the API response will have is_green_match: true
.company
( for contact_type: "company"
only): Includes any available information (headcount, sales volume, etc.), as well as the parent_id
if there's a known parent company. If there is a known parent company, it is included as a separate object in the contacts
array. For each person in the persons
list, the API response specifies:
display
is the first_name
and last_name
combined)Expand the nodes in the treeview on the right to see the fields for each information category.
For contact_type: "company"
, the company
node includes any available information (headcount, sales volume, etc.), as well as a parent_id
if there's a known parent company. If there is, the parent company is included as a separate object in the contacts
array. Similarly, if the parent company has a known parent company, we include its parent_id
, etc. You can use these IDs to determine the ownership hierarchy.
The example shows a property with two contact_type: "company"
objects in the contacts
array:
company
node for array item 1, you can see a parent_id
listed (37928b1f-5bc1-5355-8496-17e0274d81fe
). company
node for array item 2, you can see its id
is 37928b1f-5bc1-5355-8496-17e0274d81fe
, so we know it's the parent of the first company.The API response is designed to be machine readable, not human readable. Depending on your use case, you may need to extract the fields of interest from the JSON response and create a flatter, more accessible format.
The sample code shows how you might do this in Python or Javascript. Follow a similar pattern for other languages. If you've entered your API access token (click the Access Token button at the top right), you can enter a Reonomy property ID below and click the ► RUN button to see a table generated from the response using the sample code.
contacts = []
for group in response['contacts']:
company = group['company']['name'] if 'company' in group else ''
is_signatory = group['is_signatory']
match_score = group['match_score']
for person in group['persons']:
# Construct an 'addresses' string from its components
addresses = [
f"{address['line1']}, {address['city']}, "
f"{address['state_code']} {address['postal_code']}"
for address in person['addresses']
]
# Build a 'contact' object from the response data
contact = {
'name': person['display'],
'match_score': match_score,
'is_signatory': is_signatory,
'company': company,
'job_title': '; '.join([job['title'] for job in person['jobs']]),
'addresses': '; '.join(addresses),
'phones': '; '.join([phone['number'] for phone in person['phones']]),
'emails': '; '.join([email['address'] for email in person['emails']]),
}
contacts.append(contact)
Enter a Reonomy property ID and click the ► RUN button to run your request against the Reonomy API.
The POST /v2/search/property-shapes
endpoint returns the shape files for one or more parcel shape IDs (returned by GET /v2/properties/{id}
), or for all parcels contained within or intersecting with the specified bounding box (the red rectangle in the example).
Each shape file that's returned includes the geometry and properties of the specified parcel, including the street address. The geometry specifies a list of coordinate pairs defining the vertices of the parcel according to the GeoJSON specification.
For more information, see POST /search/property-shapes (requires a valid API access token to view).