{"openapi":"3.1.0","info":{"title":"MarkMyProperty public research API","version":"1.0.0","description":"First-party aggregate coverage and asking prices. No private contacts or passports. Not a published market price index."},"servers":[{"url":"https://markmyproperty.com"}],"paths":{"/api/v1/coverage":{"get":{"operationId":"coverage","responses":{"200":{"description":"Fresh aggregate platform inventory; complete may be false","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Coverage"}}}},"503":{"$ref":"#/components/responses/Unavailable"}}}},"/api/v1/asking-prices":{"get":{"operationId":"askingPrices","parameters":[{"name":"country","in":"query","schema":{"type":"string","pattern":"^[A-Z]{2}$"}},{"name":"currency","in":"query","schema":{"type":"string","pattern":"^[A-Z]{3}$"}},{"name":"propertyType","in":"query","schema":{"type":"string","enum":["apartment","house","plot","agricultural","commercial","industrial","other"]}},{"name":"offset","in":"query","schema":{"type":"integer","minimum":0,"maximum":99999,"default":0}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":50,"default":50}}],"responses":{"200":{"description":"Eligible cohorts or explicit insufficient_data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AskingPrices"}}}},"400":{"description":"Invalid filters"},"503":{"$ref":"#/components/responses/Unavailable"}}}},"/api/v1/methodology":{"get":{"operationId":"methodology","responses":{"200":{"description":"Sampling rules, exclusions and priceIndexStatus=not_published","content":{"application/json":{"schema":{"type":"object","required":["version","minimumSample","scope","priceIndexStatus","exclusions"],"properties":{"version":{"const":"mmp-asking-v1"},"minimumSample":{"const":30},"maximumListingAgeDays":{"const":90},"maximumCorpusAgeSeconds":{"const":600},"scope":{"type":"string"},"exclusions":{"type":"array","items":{"type":"string"}},"priceIndexStatus":{"const":"not_published"},"priceIndexReason":{"type":"string"},"privacy":{"type":"string"},"documentation":{"type":"string","format":"uri"},"units":{"type":"array","items":{"type":"string"}}}}}}}}}}},"components":{"responses":{"Unavailable":{"description":"Current complete data unavailable; no invented zero totals","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}}}},"schemas":{"Coverage":{"type":"object","required":["version","observedAt","complete","fresh","publicRecords","representedCountries","scope","countries"],"properties":{"version":{"const":"1"},"observedAt":{"type":["string","null"],"format":"date-time"},"complete":{"type":"boolean"},"fresh":{"type":"boolean"},"publicRecords":{"type":"integer","minimum":0},"representedCountries":{"type":"integer","minimum":0},"scope":{"type":"string"},"countries":{"type":"array","items":{"type":"object","required":["countryCode","country","publicRecords","path"],"properties":{"countryCode":{"type":"string"},"country":{"type":"string"},"publicRecords":{"type":"integer"},"path":{"type":"string"}}}}}},"AskingPrices":{"type":"object","required":["version","status","observedAt","methodology","scope","minimumSample","totalCohorts","nextOffset","data"],"properties":{"version":{"const":"1"},"status":{"enum":["available","insufficient_data"]},"observedAt":{"type":["string","null"],"format":"date-time"},"methodology":{"const":"mmp-asking-v1"},"scope":{"type":"string"},"minimumSample":{"const":30},"totalCohorts":{"type":"integer"},"nextOffset":{"type":["integer","null"]},"data":{"type":"array","maxItems":50,"items":{"$ref":"#/components/schemas/Cohort"}}}},"Cohort":{"type":"object","additionalProperties":false,"required":["countryCode","country","propertyType","currency","intent","pricePeriod","sampleSize","medianPerSqm","medianPerSqft","p25PerSqm","p75PerSqm"],"properties":{"countryCode":{"type":"string"},"country":{"type":"string"},"propertyType":{"type":"string"},"currency":{"type":"string"},"intent":{"const":"sell"},"pricePeriod":{"const":"sale"},"sampleSize":{"type":"integer","minimum":30},"medianPerSqm":{"type":"number"},"medianPerSqft":{"type":"number"},"p25PerSqm":{"type":"number"},"p75PerSqm":{"type":"number"}}}}}}