API INSTRUCTIONS
Pull your first deal records.
Create a key, keep it on your server, and call the endpoint that matches the data you need.
01
Quick start
- 1Create your account and key
Sign in to the dashboard. New accounts receive 25 one-time Sandbox credits; no card is required.
- 2Store the key securely
The full key appears once. Put it in a server-side environment variable such as
AZDM_API_KEY. Never expose it in browser code, source control, URLs, logs, or public chat. - 3Make a request
Send the key as a Bearer token and include a unique
Idempotency-Keyheader.
curl
curl 'https://azdealmap.com/api/v1/live-deals?zip=85004&limit=2' \
-H 'Authorization: Bearer YOUR_SERVER_SIDE_API_KEY' \
-H 'Idempotency-Key: demo-request-001'JavaScript
const response = await fetch("https://azdealmap.com/api/v1/live-deals?zip=85004&limit=2", {
headers: {
Authorization: `Bearer ${process.env.AZDM_API_KEY}`,
"Idempotency-Key": crypto.randomUUID()
}
});
if (!response.ok) throw new Error(`AZDM ${response.status}`);
const { data, meta } = await response.json();Python
import os, uuid, requests
r = requests.get(
"https://azdealmap.com/api/v1/live-deals",
params={"zip": "85004", "limit": 2},
headers={"Authorization": f"Bearer {os.environ['AZDM_API_KEY']}", "Idempotency-Key": str(uuid.uuid4())},
timeout=10,
)
r.raise_for_status()
data = r.json()02
Choose what to query
Base URL: https://azdealmap.com/api/v1
| Endpoint | What it returns | Supported filters | Credit cost |
|---|---|---|---|
GET /live-deals | Active off-market deals with asking price and address details. | limit (1–100), cursor, zip, city, status, min_price, max_price, updated_since (RFC 3339). Price values are integer cents. | 1 credit per deal record returned |
GET /properties/search | Find properties by address prefix, ZIP, or city. | address (3+ characters), zip, city; one is required. limit (1–25), cursor. | 1 credit per property record returned |
GET /properties/{property_id} | Pull details for one known property ID. | property_id in the path. | 1 credit per property |
GET /properties/{property_id}/events | Pull dated deal marketing and asking-price history for one property. | property_id in the path; from and to RFC 3339 timestamps required; limit (1–100), cursor. Date range may not exceed 366 days. | 2 credits per marketing event returned |
GET /markets/{zip} | Pull the latest available market stats for one ZIP. | Five-digit zip in the path; optional as_of RFC 3339 timestamp. | 5 credits per ZIP snapshot |
GET /usage | Check usage and credits charged to your account. | limit (1–100), cursor. | Free |
GET /health | Check whether the API is ready. | None. No API key required. | Free |
A record means one returned row or resource, not one HTTP request. Eligible repeat retrievals within 24 hours are not charged again. Errors and empty results cost zero.
03
Live-deal examples
Use only the filters you need. Asking-price filters are in cents. For a daily incremental pull, save the request start time, pass it as updated_since on the next run, and follow every returned cursor before advancing the saved time. Credits remain per returned resource under the same 24-hour dedupe contract.
# Two active deals in ZIP 85004
curl 'https://azdealmap.com/api/v1/live-deals?zip=85004&limit=2' \
-H 'Authorization: Bearer YOUR_SERVER_SIDE_API_KEY' \
-H 'Idempotency-Key: zip-85004-001'
# Daily incremental pull (RFC 3339)
curl 'https://azdealmap.com/api/v1/live-deals?updated_since=2026-08-05T09%3A00%3A00Z&limit=100' \
-H 'Authorization: Bearer YOUR_SERVER_SIDE_API_KEY' \
-H 'Idempotency-Key: daily-2026-08-06-page-1'
# Phoenix deals with asking prices from $150,000 to $350,000
curl 'https://azdealmap.com/api/v1/live-deals?city=Phoenix&min_price=15000000&max_price=35000000&limit=25' \
-H 'Authorization: Bearer YOUR_SERVER_SIDE_API_KEY' \
-H 'Idempotency-Key: phoenix-price-001'04
Credits, repeat retrievals, and limits
- Live deals
- 1 credit per deal record returned
- Property search
- 1 credit per property record returned
- Property detail
- 1 credit per property
- Deal history
- 2 credits per marketing event returned
- ZIP market stats
- 5 credits per ZIP snapshot
- Usage and balance
- Free
Eligible repeat retrievals of the same resource and representation within 24 hours are not charged again. At the 24-hour boundary, it can be charged again. Errors and empty results cost zero.
Results default to 25 records and generally allow up to 100; property search allows up to 25. Use the returned cursor for the next page. Sandbox allows 10 requests per minute; paid accounts allow 60. “Active” means active at the latest successful observation and does not guarantee a deal is still available.
What a live-deal response looks like
Clearly labeled example data — not a current private or live deal.
{
"data": [{
"deal_id": "deal_example_7f3a91",
"property_id": "prop_example_28bc04",
"street_address": "123 Example Desert Rd",
"city": "Sample City",
"state": "AZ",
"zip": "85000",
"status": "Active",
"ask_cents": 24500000,
"observed_at": "2026-08-01T15:30:00.000Z"
}],
"meta": {
"request_id": "00000000-0000-4000-8000-000000000000",
"as_of": "2026-08-01T15:31:00.000Z",
"next_cursor": null,
"has_more": false,
"credits_charged": 1,
"credits_remaining": 24
}
}Send deals to Google Sheets
Copy the compact Google Apps Script example. It reads the key from Script Properties, prompts for city, ZIP, and limit, calls the review API, and writes a clean deal table. The base URL is one clearly marked line to replace for production later.
05
Prompt for an AI coding assistant
Read the AZ Deal Map OpenAPI contract at https://azdealmap.com/developers/openapi.json and help me make a server-side API request. Read the key from the AZDM_API_KEY environment variable. Never put the key in client-side code, source control, logs, URLs, or public chat. Use a unique Idempotency-Key header and only supported parameters.Errors
Errors return {"error":{"code":"...","message":"...","request_id":"..."}} and cost zero credits. Common statuses are 400 for unsupported filters or headers, 401 for an invalid key, 403 for key scope or account access, 402 for insufficient credits or a spending limit, 404 when data is not found, 409 for an idempotency conflict, 429 for a rate limit, and 503 when serving data is unavailable. A 429 response includes a Retry-After header.
Data and license boundaries
Deal records show marketing activity, not title or ownership records, verified sales, MLS data, appraisals, or a guarantee that a deal remains available. Accuracy and freshness vary by source. Access does not permit resale, republication, lead-list creation, model training, archive reconstruction, or redistribution. Full archive exports require a separate license.