Developers and AI agents

MakeMe Estimate API

Pass a commercial-real-estate address and get a MakeMe Estimate, the Zillow-style estimate for commercial real estate. One proprietary number, callable. Coverage is expanding; an address we do not have an estimate for yet returns a tracked not-found.

Authentication

Every request needs an API key. Mint one from your account page (it is shown once; store it safely). Send it as a bearer token:

Authorization: Bearer mk_live_YOUR_KEY

Or pass it as ?api_key= on the URL.

Free tier and limits

LimitFree tier
Requests per day100
Requests per minute20
Addresses per batch25

Over a limit returns 429 with a retryAfter (seconds).

Estimate one building

POST /api/v1/estimate with an address or a propertyId. The address can be a free-text string (a Google Places formattedAddress like "1600 7th Ave, Seattle, WA 98101, USA" is fine, the trailing country is handled) or a structured object ({ "line1": "...", "city": "...", "state": "WA", "zip": "..." }; Google-ish aliases street/locality/region/postalCode are accepted).

curl -X POST https://makeme1031.com/api/v1/estimate \
  -H "Authorization: Bearer mk_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"address":"1600 7th Ave, Seattle, WA"}'

A market-ready building returns the estimate:

{
  "found": true,
  "property": {
    "id": "kc-...", "slug": "1600-7th-ave-seattle-wa",
    "address": { "line1": "1600 7th Ave", "city": "Seattle", "state": "WA", "zip": "98101" },
    "assetType": "office", "buildingSizeSqFt": 12345, "yearBuilt": 1990,
    "countyAssessedValueCents": 1234500000,
    "url": "https://makeme1031.com/p/1600-7th-ave-seattle-wa"
  },
  "makeMeEstimate": {
    "midCents": 1500000000, "lowCents": 1300000000, "highCents": 1750000000,
    "confidence": "medium", "pricePerSqFtCents": 121500,
    "asOf": "2026-06-24", "methodologyUrl": "https://makeme1031.com/methodology"
  },
  "disclaimer": "This is an estimate, not an appraisal.",
  "coverageStatus": "market_ready"
}

A building we have but cannot estimate (county data incomplete, a public or civic asset, or owner-suppressed) returns found: true with makeMeEstimate: null and a coverageStatus. We never return county assessed value as the estimate.

When we do not have it yet

An address we do not have a MakeMe Estimate for yet returns a tracked not-found with coverageStatus: "not_covered". This is not an invalid-address error: we accept the address and simply do not have an estimate for it yet. We log the request so we can see demand and prioritize adding it as coverage expands. Switch on coverageStatus (or found) to handle it.

{
  "found": false,
  "status": "not_in_directory",
  "coverageStatus": "not_covered",
  "message": "We do not have a MakeMe Estimate for this address yet. We have logged your request and are expanding coverage.",
  "requestId": "er_...",
  "query": { "address": "456 Oak Ave, Tacoma, WA" }
}

More endpoints

EndpointWhat it does
GET /api/v1/property/{id}PII-safe property facts + estimate by id or address slug.
POST /api/v1/estimatesBatch up to 25 addresses in one call.
GET /openapi.jsonThe full OpenAPI 3.1 spec.

Errors

Every error is a standard envelope:

{ "error": true, "code": "bad_key", "message": "...", "docUrl": "https://makeme1031.com/docs" }
The honest fine print. The MakeMe Estimate is an estimate, not an appraisal, and no appraiser is involved. Every payload runs through our privacy firewall: no owner identity, no owner mailing address, and no tenant names ever leave the server. Everything comes from public records and our models, provided as is, without warranty. We are not a broker and we do not represent any buyer or seller. See our methodology.