ATTOM Data logo

ATTOM Data

Overview

ATTOM Data is a commercial real-estate data provider covering ~150M U.S. properties with public-records-grade data: assessments, sales history, AVMs, ownership, schools, foreclosure events. Access requires a paid ATTOM API subscription — there is no free tier suitable for production use, and a sales conversation with ATTOM is part of standard onboarding.

Setup guide

Get your API key

  1. Visit the ATTOM developer portal and sign in (or contact ATTOM Sales if you don't yet have an account — https://www.attomdata.com/contact/ is the entry point).
  2. Once logged in, your API key is shown on the My Account / Subscriptions page.
  3. Copy the key value — it's a single opaque string that ATTOM authenticates via the apikey header (lowercase, verbatim).

Add it to Ingest

In the Ingest UI under Connectors → ATTOM Data, paste the key. Ingest stores it in AWS Secrets Manager under the key apikey.

Mind the limits

ATTOM does not publish a per-second rate cap, so the Ingest runtime defaults to a conservative 2 req/sec with AIMD backoff on 429 responses. Errors with status 400 (no results — treated as an empty payload, not a failure), 401 (bad key), 403 (out-of-scope endpoint for your subscription), or 404 (no record found) are handled inline.

The response envelope is:

{ "status": { "code": 0, "msg": "SuccessWithResult", "total": 1, "page": 1, "pagesize": 10 },
  "property": [ { ... } ] }

status.code == 0 means success with results; status.code == 400 means success with zero results (the connector treats this as an empty array, not an error).

Pick endpoints

ATTOM endpoints fall into two groups:

  • Seedproperty_id resolves an address to ATTOM's internal attomId. This is the gateway endpoint; almost every other endpoint expects an attomId. salestrend is the one independent endpoint, providing zip-level market trends.
  • Per-property (joined to property_id)property_expandedprofile, sale_detail, saleshistory_expanded, assessment_detail, assessmenthistory, avm_detail, avmhistory, rental_avm, allevents, school_search. Enable the ones your use case needs; each is orthogonal.

For most customers the property_expandedprofile + sale_detail + assessment_detail triad covers the canonical "property snapshot" use case. AVM endpoints are for valuation work; the schools endpoint is for housing/relocation tools.

Supported streams

10 endpoints are available out of the box. Each endpoint syncs into its own Iceberg table in Snowflake.

EndpointDescriptionReference
allevents
allevents
assessment_detail
assessment_detail
assessmenthistory
assessmenthistory
avm_detail
avm_detail
avmhistory
avmhistory
property_expandedprofile
property_expandedprofile
property_id
property_id
rental_avm
rental_avm
sale_detail
sale_detail
saleshistory_expanded
saleshistory_expanded

Authentication

Auth type
API Key
Sent as header
apikey

Performance & limits

Rate limit
Conservative 2 req/sec by default; ATTOM does not publish a per-second cap and relies on AIMD backoff. Pagination uses `page` (1-indexed) + `pagesize` (max 100), but the runtime fetches single pages and enumerates more pages via additional generator rows.
Automatic backoff
Ingest throttles requests to the published rate limit and retries with exponential backoff on transient errors. You don't need to handle 429s, retries, or pagination yourself.

Resources