Estated Property Data API

Look up a U.S. property record by address (split, parsed, or combined) or by FIPS+APN. Returns a Property object containing address, parcel, structure, taxes, assessments, market_assessments, valuation, owner, deeds, and boundary (WKT + GeoJSON MultiPolygon). Authenticated via `token` query parameter.

Estated Property Data API is published by Estated on the APIs.io network, described by a machine-readable OpenAPI specification.

This API exposes 1 machine-runnable capability that can be deployed as REST, MCP, or Agent Skill surfaces via Naftiko and 1 JSON Schema definition.

Tagged areas include Property Data, Real Estate, Parcels, Deeds, and AVM. The published artifact set on APIs.io includes API documentation, an OpenAPI specification, a JSON-LD context, rate-limit docs, 1 Naftiko capability spec, and 1 JSON Schema.

Documentation

Specifications

Schemas & Data

Other Resources

OpenAPI Specification

estated-property-data-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Estated Property Data API
  version: '4.0'
  description: >-
    The Estated Property Data API (v4) returns assessor, parcel, structure,
    valuation, owner, deed, and boundary data for U.S. residential and
    commercial properties. Lookups can be performed using a split address
    (street_address + city + state), parsed address components, a single
    combined address string, or a FIPS code + APN pair. Each successful
    response returns a Property object containing metadata, address, parcel,
    structure, taxes, assessments, market_assessments, valuation, owner,
    deeds, and boundary sections. Estated was acquired by ATTOM Data in 2020
    and the underlying platform is being migrated to ATTOM infrastructure;
    existing tokens continue to work but documentation will be deprecated
    during 2026.
  contact:
    name: ATTOM Data (Estated)
    url: https://www.attomdata.com/contact-us/
  license:
    name: Commercial
    url: https://www.attomdata.com/terms-of-use/
servers:
  - url: https://apis.estated.com
    description: Production API endpoint
security:
  - tokenQuery: []
paths:
  /v4/property:
    get:
      operationId: getProperty
      summary: Get Property
      description: >-
        Retrieve a Property object for a U.S. address. Use the `combined_address`
        parameter for a single-string lookup, the parsed `street_number` /
        `street_name` / `street_suffix` family for tightly-parsed lookups, the
        `street_address` + `city` + `state` family for split lookups, or
        `fips` + `apn` for parcel-number lookups. All requests are HTTP GET.
      tags:
        - Property
      parameters:
        - name: token
          in: query
          required: true
          description: API token issued by Estated / ATTOM.
          schema:
            type: string
        - name: combined_address
          in: query
          required: false
          description: Full address in a single comma-separated string (street, city, state, zip).
          schema:
            type: string
        - name: street_address
          in: query
          required: false
          description: Full street address line including number, name, and suffix.
          schema:
            type: string
        - name: street_number
          in: query
          required: false
          schema:
            type: string
        - name: street_pre_direction
          in: query
          required: false
          schema:
            type: string
        - name: street_name
          in: query
          required: false
          schema:
            type: string
        - name: street_suffix
          in: query
          required: false
          schema:
            type: string
        - name: street_post_direction
          in: query
          required: false
          schema:
            type: string
        - name: unit_type
          in: query
          required: false
          schema:
            type: string
        - name: unit_number
          in: query
          required: false
          schema:
            type: string
        - name: city
          in: query
          required: false
          schema:
            type: string
        - name: state
          in: query
          required: false
          schema:
            type: string
        - name: zip_code
          in: query
          required: false
          schema:
            type: string
        - name: fips
          in: query
          required: false
          description: 5-digit FIPS county code (paired with `apn`).
          schema:
            type: string
        - name: apn
          in: query
          required: false
          description: Assessor parcel number (paired with `fips`).
          schema:
            type: string
      responses:
        '200':
          description: A property envelope containing data, metadata, and warnings.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PropertyEnvelope'
        '400':
          description: Request error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
        '401':
          description: Authorization error (invalid, deactivated, or exhausted token).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
        '429':
          description: Throttled due to high request rate.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
        '500':
          description: Internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
components:
  securitySchemes:
    tokenQuery:
      type: apiKey
      in: query
      name: token
  schemas:
    PropertyEnvelope:
      type: object
      properties:
        data:
          $ref: '#/components/schemas/Property'
        metadata:
          $ref: '#/components/schemas/ResponseMetadata'
        warnings:
          type: array
          items:
            $ref: '#/components/schemas/Warning'
    ErrorEnvelope:
      type: object
      properties:
        data:
          nullable: true
        metadata:
          $ref: '#/components/schemas/ResponseMetadata'
        warnings:
          type: array
          items:
            $ref: '#/components/schemas/Warning'
        error:
          type: object
          properties:
            code:
              type: string
              description: Estated error code (APE01, ISE01-09, EE01, RE01-RE06, AE02-AE04).
            message:
              type: string
    ResponseMetadata:
      type: object
      properties:
        attom_id:
          type: integer
          description: Unique ATTOM ID associated with the property.
        publishing_date:
          type: string
          format: date
          description: Date the assessor roll data was published.
    Warning:
      type: object
      properties:
        code:
          type: string
          description: Warning code (PW01, PW02, APW01, APW02).
        message:
          type: string
    Property:
      type: object
      properties:
        metadata:
          $ref: '#/components/schemas/ResponseMetadata'
        address:
          $ref: '#/components/schemas/Address'
        parcel:
          $ref: '#/components/schemas/Parcel'
        structure:
          $ref: '#/components/schemas/Structure'
        taxes:
          type: array
          items:
            $ref: '#/components/schemas/Tax'
        assessments:
          type: array
          items:
            $ref: '#/components/schemas/Assessment'
        market_assessments:
          type: array
          items:
            $ref: '#/components/schemas/Assessment'
        valuation:
          $ref: '#/components/schemas/Valuation'
        owner:
          $ref: '#/components/schemas/Owner'
        deeds:
          type: array
          items:
            $ref: '#/components/schemas/Deed'
        boundary:
          $ref: '#/components/schemas/Boundary'
    Address:
      type: object
      properties:
        street_number: { type: string }
        street_pre_direction: { type: string }
        street_name: { type: string }
        street_suffix: { type: string }
        street_post_direction: { type: string }
        unit_type: { type: string }
        unit_number: { type: string }
        formatted_street_address: { type: string }
        city: { type: string }
        state: { type: string }
        zip_code: { type: string }
        zip_plus_four_code: { type: string }
        carrier_code: { type: string }
        latitude: { type: number, format: float }
        longitude: { type: number, format: float }
        geocoding_accuracy: { type: string }
        census_tract: { type: string }
    Parcel:
      type: object
      properties:
        apn_original: { type: string }
        apn_unformatted: { type: string }
        apn_previous: { type: string }
        fips_code: { type: string }
        depth_ft: { type: number, format: float }
        frontage_ft: { type: number, format: float }
        area_sq_ft: { type: integer }
        area_acres: { type: number, format: float }
        county_name: { type: string }
        county_land_use_code: { type: string }
        county_land_use_description: { type: string }
        standardized_land_use_category: { type: string }
        standardized_land_use_type: { type: string }
        location_descriptions:
          type: array
          items: { type: string }
        zoning: { type: string }
        building_count: { type: integer }
        tax_account_number: { type: string }
        legal_description: { type: string }
        lot_code: { type: string }
        lot_number: { type: string }
        subdivision: { type: string }
        municipality: { type: string }
        section_township_range: { type: string }
    Structure:
      type: object
      properties:
        year_built: { type: integer }
        effective_year_built: { type: integer }
        stories: { type: string }
        rooms_count: { type: integer }
        beds_count: { type: integer }
        baths: { type: number, format: float }
        partial_baths_count: { type: integer }
        units_count: { type: integer }
        parking_type: { type: string }
        parking_spaces_count: { type: integer }
        pool_type: { type: string }
        architecture_type: { type: string }
        construction_type: { type: string }
        exterior_wall_type: { type: string }
        foundation_type: { type: string }
        roof_material_type: { type: string }
        roof_style_type: { type: string }
        heating_type: { type: string }
        heating_fuel_type: { type: string }
        air_conditioning_type: { type: string }
        fireplaces: { type: string }
        basement_type: { type: string }
        quality: { type: string }
        condition: { type: string }
        flooring_types:
          type: array
          items: { type: string }
        plumbing_fixtures_count: { type: integer }
        interior_wall_type: { type: string }
        water_type: { type: string }
        sewer_type: { type: string }
        total_area_sq_ft: { type: integer }
        amenities:
          type: array
          items: { type: string }
        other_improvements:
          type: array
          items:
            $ref: '#/components/schemas/AreaItem'
        other_rooms:
          type: array
          items:
            $ref: '#/components/schemas/AreaItem'
        other_features:
          type: array
          items:
            $ref: '#/components/schemas/AreaItem'
        other_areas:
          type: array
          items:
            $ref: '#/components/schemas/AreaItem'
    AreaItem:
      type: object
      properties:
        type: { type: string }
        sq_ft: { type: string }
    Tax:
      type: object
      properties:
        year: { type: integer }
        amount: { type: integer }
        exemptions:
          type: array
          items: { type: string }
        rate_code_area: { type: string }
    Assessment:
      type: object
      properties:
        year: { type: integer }
        land_value: { type: integer }
        improvement_value: { type: integer }
        total_value: { type: integer }
    Valuation:
      type: object
      properties:
        value: { type: integer }
        high: { type: integer }
        low: { type: integer }
        forecast_standard_deviation: { type: integer }
        date: { type: string, format: date }
    Owner:
      type: object
      properties:
        name: { type: string }
        second_name: { type: string, deprecated: true }
        formatted_street_address: { type: string }
        unit_type: { type: string }
        unit_number: { type: string }
        city: { type: string }
        state: { type: string }
        zip_code: { type: string }
        zip_plus_four_code: { type: string }
        owner_occupied: { type: string }
    Deed:
      type: object
      properties:
        document_type: { type: string }
        recording_date: { type: string, format: date }
        original_contract_date: { type: string, format: date }
        deed_book: { type: string }
        deed_page: { type: string }
        document_id: { type: string }
        sale_price: { type: integer }
        sale_price_description: { type: string }
        transfer_tax: { type: number, format: float }
        distressed_sale: { type: boolean }
        real_estate_owned: { type: string }
        seller_first_name: { type: string }
        seller_last_name: { type: string }
        seller2_first_name: { type: string }
        seller2_last_name: { type: string }
        seller_address: { type: string }
        seller_unit_number: { type: string }
        seller_city: { type: string }
        seller_state: { type: string }
        seller_zip_code: { type: string }
        seller_zip_plus_four_code: { type: string }
        buyer_first_name: { type: string }
        buyer_last_name: { type: string }
        buyer2_first_name: { type: string }
        buyer2_last_name: { type: string }
    Boundary:
      type: object
      description: Parcel boundary geometry.
      properties:
        wkt:
          type: string
          description: Well-Known Text MultiPolygon representation.
        geojson:
          type: object
          description: GeoJSON MultiPolygon representation of the parcel.
          properties:
            type:
              type: string
              example: MultiPolygon
            coordinates:
              type: array
              items:
                type: array