Data API reference

The Alpine Market public Data API (v1) exposes property facts, comparables, and the recorded transaction registry, read-only, over HTTPS. Every response is wrapped in the same envelope so you always know how fresh, confident, and licensed a value is, not just what it is.

The envelope

Every endpoint below returns this shape. data holds the payload (an object, an array, or null when nothing was found or the API is unavailable). The metadata fields sit alongside it.

{
  "data": /* endpoint-specific payload, or null */,
  "as_of": "2026-07-09T08:00:00.000Z",       // ISO timestamp the data was current as of
  "source_summary": "Plain-English data source",
  "confidence": 0.82,                          // 0-1, or null if not applicable
  "licence": "Terms governing reuse of this response",
  "visibility": "public",                      // the tier this response was filtered to
  "data_quality_notes": null                   // caveats, or null
}

Licence and confidence model

Every material fact in Alpine Market carries a source, a confidence score, and a licence, all the way down to the individual field (see property_facts in our data model). The public API surfaces a response-level roll-up of that provenance today; per-field provenance is on the roadmap for professional-tier API access. A missing or null confidence means the value is a directly-observed fact rather than a modeled estimate, not that it is untrustworthy.

What is not in this API

Owner and transaction-party identity (buyer, seller, notary, broker names) is excluded from every public endpoint, by construction: the routes below never query the parties or transaction_parties tables. That data is available to verified professional accounts only, through the Alpine Professional terminal, not this API.

Access and rate limits

All endpoints are read-only GET requests and require no authentication during this preview. Rate limiting is planned before general availability; heavy or automated use should wait for an API key. Bulk export and commercial licensing are handled through Alpine Professional.

Endpoints

GET/api/v1/search/address

Search properties by free-text address. Ranked by match exactness then data completeness.

Query params: q (required): search text matched against street, postal code, city.

Example request

GET /api/v1/search/address?q=Bahnhofstrasse%20Zurich

Example response

{
  "data": [
    {
      "property_id": "6a1c...e2f0",
      "address": "Bahnhofstrasse 1, 8001 Zurich",
      "canton": "ZH",
      "property_type": "office"
    }
  ],
  "as_of": "2026-07-09T08:00:00.000Z",
  "source_summary": "Alpine Market property index: aggregated Swiss listing portals plus enrichment from official registries.",
  "confidence": null,
  "licence": "Alpine Market Public Data API v1: evaluation and non-commercial use...",
  "visibility": "public",
  "data_quality_notes": null
}
GET/api/v1/properties/{id}

Core physical and cadastral facts for one property: address, geo, rooms, areas, year built, energy label, EGID/EDID/EWID. Public fields only.

Example request

GET /api/v1/properties/6a1c1e2f-0000-0000-0000-000000000000

Example response

{
  "data": {
    "property_id": "6a1c...e2f0",
    "category": "residential",
    "property_type": "apartment",
    "city": "Zurich",
    "canton": "ZH",
    "postal_code": "8001",
    "rooms": 3.5,
    "living_area_sqm": 82,
    "year_built": 1998,
    "data_completeness_score": 74,
    "...": "..."
  },
  "as_of": "2026-07-09T08:00:00.000Z",
  "source_summary": "Alpine Market property index (Swiss listing portals, enriched from official registries).",
  "confidence": 0.74,
  "licence": "Alpine Market Public Data API v1: evaluation and non-commercial use...",
  "visibility": "public",
  "data_quality_notes": null
}
GET/api/v1/properties/{id}/transactions

Recorded sale/transfer history for the property: registered prices and dates. Never includes buyer, seller, notary, or broker names.

Example request

GET /api/v1/properties/6a1c1e2f-0000-0000-0000-000000000000/transactions

Example response

{
  "data": [
    {
      "transaction_id": "9f2b...",
      "transaction_type": "open_market",
      "registration_date": "2021-03-15",
      "gross_consideration": 1250000,
      "currency": "CHF",
      "normalized_chf": 1250000,
      "arm_length": "arm_length",
      "status": "active",
      "confidence": 0.9,
      "object_role": "primary",
      "allocated_price": 1250000,
      "allocation_method": "source_provided",
      "source_document_url": null
    }
  ],
  "as_of": "2026-07-09T08:00:00.000Z",
  "source_summary": "Alpine Market transaction registry (recorded transfers, where available).",
  "confidence": 0.9,
  "licence": "Alpine Market Public Data API v1: evaluation and non-commercial use...",
  "visibility": "public",
  "data_quality_notes": null
}
GET/api/v1/properties/{id}/valuation

Latest Alpine Estimate for the property: the AVM output, method, and confidence band.

Example request

GET /api/v1/properties/6a1c1e2f-0000-0000-0000-000000000000/valuation

Example response

{
  "data": {
    "channel": "sale",
    "estimate": 1180000,
    "low": 1080000,
    "high": 1280000,
    "confidence": 0.72,
    "method": "comps_v0",
    "comp_count": 6,
    "model_version": null,
    "as_of": "2026-07-01T00:00:00.000Z"
  },
  "as_of": "2026-07-01T00:00:00.000Z",
  "source_summary": "Alpine Estimate (comparable-sales AVM).",
  "confidence": 0.72,
  "licence": "Alpine Market Public Data API v1: evaluation and non-commercial use...",
  "visibility": "public",
  "data_quality_notes": null
}
GET/api/v1/properties/{id}/comparables

Up to 10 comparable active listings: same canton, same property type, rooms within +/-1.

Example request

GET /api/v1/properties/6a1c1e2f-0000-0000-0000-000000000000/comparables

Example response

{
  "data": [
    {
      "property_id": "b0e4...",
      "listing_id": "22f1...",
      "slug": "apartment-8001-zurich-b0e4",
      "channel": "sale",
      "city": "Zurich",
      "canton": "ZH",
      "property_type": "apartment",
      "rooms": 3.5,
      "living_area_sqm": 78,
      "price": 1150000,
      "currency": "CHF",
      "price_unit": "total"
    }
  ],
  "as_of": "2026-07-09T08:00:00.000Z",
  "source_summary": "Alpine Market active listing index, matched by canton, property type, and rooms band (+/-1).",
  "confidence": null,
  "licence": "Alpine Market Public Data API v1: evaluation and non-commercial use...",
  "visibility": "public",
  "data_quality_notes": null
}

Need more than the public API?

Owner lookups, transaction-party data, bulk export, and higher rate limits are available to verified professionals.

Explore Alpine Professional