Developers and AI agents
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.
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.
| Limit | Free tier |
|---|---|
| Requests per day | 100 |
| Requests per minute | 20 |
| Addresses per batch | 25 |
Over a limit returns 429 with a retryAfter (seconds).
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.
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" }
}
| Endpoint | What it does |
|---|---|
GET /api/v1/property/{id} | PII-safe property facts + estimate by id or address slug. |
POST /api/v1/estimates | Batch up to 25 addresses in one call. |
GET /openapi.json | The full OpenAPI 3.1 spec. |
Every error is a standard envelope:
{ "error": true, "code": "bad_key", "message": "...", "docUrl": "https://makeme1031.com/docs" }