Properties

Look up properties by address, reverse geocode by coordinates, batch process multiple addresses, and search with filters. Use the include parameter to enrich any lookup with flood, demographic, amenity, walk score, and housing data in a single request.

GET/v1/properties/lookup

Look up a property by street address. Creates the property record on first lookup using the Census Geocoder.

ParameterTypeDescription
streetrequiredstringStreet address (e.g., 1600 Pennsylvania Ave NW)
citystringCity name
staterequiredstringTwo-letter state code (e.g., DC)
zipstring5-digit ZIP code
includestringComma-separated enrichment: flood, walkscore, demographics, amenities, housing. Each counts as +1 request.
Example
curl -H "X-API-Key: pda_your_key" \
  "https://api.propertypulse.dev/v1/properties/lookup?street=1600+Pennsylvania+Ave+NW&city=Washington&state=DC&zip=20500"
Response
{
  "data": {
    "id": 1,
    "street_address": "1600 PENNSYLVANIA AVE NW",
    "city": "WASHINGTON",
    "state": "DC",
    "zip_code": "20500",
    "county": "District of Columbia",
    "fips_code": "11001",
    "latitude": 38.8987,
    "longitude": -77.0352,
    "census_tract": "980000",
    "property_type": "single_family"
  },
  "meta": { "source": "Census Geocoder" }
}

Enrichment with include

Add ?include=flood,walkscore,demographics,amenities,housing to any lookup, reverse, or get-by-ID request. Each section is fetched in parallel and merged into the response. Each included section costs one additional API request toward your rate limit.

Example with include
curl -H "X-API-Key: pda_your_key" \
  "https://api.propertypulse.dev/v1/properties/lookup?street=1600+Pennsylvania+Ave+NW&state=DC&include=flood,demographics"

# Response includes:
# data.flood = { "zone_code": "X", "flood_risk_level": "low", ... }
# data.demographics = { "median_household_income": 55000, ... }
GET/v1/properties/reverse

Look up a property by latitude/longitude. Returns the nearest property or creates one via reverse geocoding.

ParameterTypeDescription
latrequiredfloatLatitude
lngrequiredfloatLongitude
includestringComma-separated enrichment sections (same as lookup)
Example
curl -H "X-API-Key: pda_your_key" \
  "https://api.propertypulse.dev/v1/properties/reverse?lat=44.9429&lng=-123.0351"
Response
{
  "data": {
    "id": 42,
    "latitude": 44.9429,
    "longitude": -123.0351,
    "county": "Marion",
    "fips_code": "41047",
    "census_tract": "001200"
  },
  "meta": { "source": "Census Reverse Geocoder" }
}
POST/v1/properties/batch

Look up multiple addresses in a single request. Max 25 per batch. Each address counts as one API request.

ParameterTypeDescription
addressesrequiredarrayArray of address objects with street, city, state, zip
includestringQuery param: enrichment sections applied to each result
Request Body
{
  "addresses": [
    { "street": "1600 Pennsylvania Ave NW", "city": "Washington", "state": "DC" },
    { "street": "350 5th Ave", "city": "New York", "state": "NY", "zip": "10118" }
  ]
}
Response
{
  "data": {
    "results": [
      { "index": 0, "source": "database", "id": 1, "street_address": "1600 PENNSYLVANIA AVE NW", ... },
      { "index": 1, "source": "Census Geocoder", "id": 2, "street_address": "350 5TH AVE", ... }
    ],
    "errors": [],
    "total_requested": 2,
    "total_found": 2,
    "total_errors": 0
  }
}
GET/v1/properties/{property_id}

Get a property by its ID. Supports the include parameter for enrichment.

ParameterTypeDescription
includestringComma-separated enrichment sections
Example
curl -H "X-API-Key: pda_your_key" \
  "https://api.propertypulse.dev/v1/properties/1?include=flood,walkscore"
GET/v1/properties/search

Search properties with filters. Returns paginated results.

ParameterTypeDescription
zipstringFilter by ZIP code
citystringFilter by city
statestringFilter by state
property_typestringFilter by type (single_family, multi_family)
min_bedroomsintegerMinimum bedrooms
max_bedroomsintegerMaximum bedrooms
pageintegerPage number (default: 1)
per_pageintegerResults per page (1-100, default: 25)