Yes — ATTOM Data Solutions has a public API. It’s a licensed, enterprise-grade property data feed covering roughly 160+ million U.S. parcels with deep tax, deed, and valuation history, but it’s built for licensed bulk buyers, not a same-day signup. Getting access means a sales conversation, a data license agreement, and — for most tiers — a multi-week onboarding process before your first call.
If you just need structured U.S. property data in your app today, that’s a real gap. Below: what the ATTOM API actually covers, what it costs, how access works, and the honest comparison to a productized alternative.
What the ATTOM API is
ATTOM Data Solutions aggregates public records, tax assessor data, deed/mortgage records, and valuation models across the majority of U.S. counties into a licensed data product covering over 150 million U.S. properties. The API (and matching bulk-file delivery) exposes that data through named endpoints — property basic profile, assessment/tax history, sales/transaction history, AVM (automated valuation), and more — organized around ATTOM’s own data dictionary rather than a single “look up one home” call.
It’s aimed at companies that need to license property data at scale: proptech platforms, lenders, insurers, government/municipal buyers, and data science teams running valuation or risk models across large geographies. It is not primarily marketed as a self-serve, sign-up-and-go developer API.
Access and pricing (as publicly known)
ATTOM doesn’t publish flat self-serve pricing on a card-swipe checkout — access is quote-based and tiered by data package, call volume, and license terms (some packages are also sold as flat-file/bulk deliveries rather than live API calls). In practice, getting started means:
- Request a demo/quote through ATTOM’s sales team.
- Scope the data package (property basic, tax, AVM, foreclosure, etc.) and license terms (internal use vs. redistribution).
- Sign a data license agreement.
- Onboard — commonly weeks, not hours, especially for redistribution or higher-volume licenses.
That’s a reasonable trade for teams that need contractual data guarantees and deep historical coverage at scale. It’s a poor fit if you need to ship a feature this week.
The honest fit: ATTOM vs. Zillapi
These solve different problems, and it’s worth being direct about which is which.
ATTOM = licensed bulk property data with enterprise onboarding. Broad historical tax/deed/AVM coverage, contractual data terms, sales-assisted access. That’s the right call when you need licensed data guarantees, deep historical depth, or bulk/redistribution rights.
Zillapi = same-day, credit-based, Zillow-sourced property data. One REST call to the Zillow API returns 300+ fields per home — price, Zestimate, photos, schools, tax, price history — across 160M+ U.S. parcels, no sales call and no contract. You get 100 free credits at signup (no card) and can be making calls in minutes via the quickstart.
Where Zillapi does not overlap ATTOM: it isn’t a licensed bulk-data product, doesn’t offer redistribution licensing, and doesn’t replace ATTOM’s deep historical tax/deed archives or AVM model access. If your use case is “license millions of records under contract for a lending or insurance model,” ATTOM’s route is the right one. If your use case is “pull current property data for homes as my app needs them,” Zillapi is built for exactly that — and you can start today. See the full head-to-head on pricing, coverage, and code at Zillow API vs ATTOM Data.
How to pull property data today (Zillapi)
If your need is per-property lookups rather than a licensed bulk feed, here’s the shape of a call. Base URL: https://api.zillapi.com/v1, authenticated with Authorization: Bearer zk_....
# Single property by its Zillow URL (1 credit per record)curl https://api.zillapi.com/v1/properties/by-url \ -H "Authorization: Bearer $ZILLOW_API_KEY" \ --data-urlencode "url=https://www.zillow.com/homedetails/17-Zelma-Dr-Greenville-SC-29617/11026031_zpid/" -Gimport os, requestsr = requests.get( "https://api.zillapi.com/v1/properties/by-url", params={"url": zillow_url}, headers={"Authorization": f"Bearer {os.environ['ZILLOW_API_KEY']}"}, timeout=60,)r.raise_for_status()print(r.json()["data"]["zpid"])const res = await fetch( `https://api.zillapi.com/v1/properties/by-url?url=${encodeURIComponent(zillowUrl)}`, { headers: { authorization: `Bearer ${process.env.ZILLOW_API_KEY}` } });const { data } = await res.json();console.log(data.zpid, data.address, data.price);Response shape: { "data": { "zpid": "11026031", "address": {...}, "price": 295000, "bedrooms": 3, "zestimate": 305100, "rentZestimate": 1850 }, "request_id": "..." }. Need tax or valuation history instead? Sub-resources work the same way — e.g. curl https://api.zillapi.com/v1/properties/11026031/tax-history -H "Authorization: Bearer $ZILLOW_API_KEY". Every call runs 1 credit per record for most endpoints (3 for by-address lookups), and failed calls are free.
ATTOM vs. Zillapi at a glance
| ATTOM Data API | Zillapi | |
|---|---|---|
| Access model | Sales-assisted, licensed | Self-serve signup |
| Time to first call | Weeks (typical) | Minutes |
| Pricing | Quote-based, tiered | $0 free / $5 mo / $54 yr (credits, as of Jul 2026) |
| Data source | Public records, tax, deed, AVM | Zillow-sourced (price, Zestimate, photos, schools, tax, history) |
| Best for | Licensed bulk data, deep historical archives, redistribution | Per-property lookups, app features, AI agents |
| Coverage | 150M+ properties (public records) | 160M+ U.S. parcels (Zillow-sourced) |
Get property data today
Skip the sales call if you don’t need one. Start free — 100 credits, no card and make your first call to api.zillapi.com/v1 in minutes.
Zillapi is an independent service, not affiliated with, endorsed by, or sponsored by Zillow Group, Inc. “Zillow” and “Zestimate” are trademarks of Zillow Group, Inc. “ATTOM” is a trademark of ATTOM Data Solutions. All marks are used here descriptively to refer to those services. See our Trademark & Affiliation page.