---
title: "Get qualified regional Zillow context for a property"
method: GET
path: "/api/v1/market/zillow/context"
tags: ["Market"]
---

# Get qualified regional Zillow context for a property

`GET /api/v1/market/zillow/context`

## Request

- Base URL: `https://propraven.com`
- URL: `https://propraven.com/api/v1/market/zillow/context`
- Auth: HTTP bearer

Requires API-key or first-party session authentication and a current account in the default-off server cohort. Valid current membership does not require a new paid subscription. Existing API quotas still apply. Responses are private, no-store. Unknown and repeated query parameters are rejected. This contract does not indicate source activation, deployment or an SDK release. Use-specific, unexpired reviewed Zillow rights are checked before parcel resolution or repository/cache access. Denied/unknown rights return explicit unavailable metric values, not substitute data. Each metric exposes actual regional geography/variant and freshness; regional values do not become parcel estimates or residual inputs. Only the trusted served parcel supplies ZIP/county/state. Caller-supplied geography/CBSA is rejected; there is no inferred metro match. canonical_id is omitted when rights prevent parcel lookup.

## Query parameters

- `parcel_id` string, required
- `use` 'display' | 'agent' | 'export'
- `as_of` string, date-time
- `metrics` string
- `window_months` '12' | '36' | '60' | '120' | '600'

## Response `200`

Authorized result; unavailable/partial/stale states are explicit within the response. No live coverage is implied by this contract.

- ZillowContext: Each metric carries its own actual geography and missing reason. canonical_id is omitted when source rights prevent parcel resolution.
  - `schemaVersion` 'zillow-market-v1', required
  - `status` 'available' | 'partial' | 'unavailable', required
  - `canonical_id` string
  - `requestedGeography` object, required
    - `zip5` string, nullable, required
    - `countyFips` string, nullable, required
    - `state` string, nullable, required
    - `cbsa` string, nullable, required
  - `metrics` object[], required
    - `rights` object, nullable, required
      - `version` string, required
      - `evidenceUrl` string, nullable, required
      - `expiresAt` string, nullable, required
    - `metric` 'zori' | 'zhvi' | 'inventory' | 'price_cut_share' | 'median_days_to_pending', required
    - `status` 'available' | 'unavailable', required
    - `reason` string, nullable, required
    - `definition` string, required
    - `unit` 'usd' | 'usd_per_month' | 'count' | 'fraction' | 'days', required
    - `value` number, nullable, required
    - `period` string, nullable, required
    - `variant` object, nullable, required
      - `datasetKey` string, required
      - `registryVersion` integer, required
      - `universe` string, required
      - `frequency` 'monthly', required
      - `smoothing` 'smoothed', required
      - `seasonalAdjustment` 'sa' | 'not_stated', required
    - `geography` object, nullable, required
      - `providerId` string, required
      - `name` string, required
      - `type` 'country' | 'msa' | 'county' | 'zip', required
    - `mapping` object, nullable, required
      - `method` 'postal_zip' | 'county_fips' | 'verified_crosswalk' | 'explicit_provider_region', required
      - `version` string, required
      - `source` string, required
      - `fallbackReason` string, nullable, required
    - `snapshot` object, nullable, required
      - `id` string, required
      - `sha256` string, required
      - `retrievedAt` string, date-time, required
      - `acceptedAt` string, date-time, required
      - `latestPeriod` string, required
      - `stale` boolean, required
    - `annualChange` object, nullable, required
      - `value` number, nullable, required
      - `unit` 'percent' | 'percentage_points' | 'days', required
      - `reason` string
    - `monthlyChange` object, nullable, required
      - `value` number, nullable, required
      - `unit` 'percent' | 'percentage_points' | 'days', required
      - `reason` string
    - `rentAcceleration` object, nullable, required
      - `value` number, nullable, required
      - `unit` 'percent' | 'percentage_points' | 'days', required
      - `reason` string
    - `points` object[], required
      - `period` string, required
      - `value` number, nullable, required
    - `sourceUrl` string, required
    - `attribution` string, required
  - `reason` string, nullable, required
  - `rights` object, required
    - `status` 'approved' | 'unknown' | 'denied', required
    - `use` 'display' | 'agent' | 'export', required
    - `evidenceUrl` string, nullable, required

## Other responses

- `400`: Invalid, unknown or duplicate parameters; invalid time, source key or scenario assumptions.
- `401`: Authentication required, or supplied credential invalid. A rejected bearer does not fall back to a session.
- `402`: Existing API-key monthly quota exceeded; this feature adds no paid SKU.
- `403`: Access forbidden by an upstream account policy.
- `404`: Feature disabled, current account outside cohort, or requested retained object/parcel unavailable. Other creators' objects are not disclosed.
- `429`: Existing API or concurrent-request limit exceeded.
- `500`: Unexpected service failure; internal details are withheld.
- `504`: Database query timeout.

---

[API](https://skmtc.dev/propraven/apis/propraven-api.md) · [All operations](https://skmtc.dev/propraven/apis/propraven-api/llms.txt) · [OpenAPI document](https://skmtc.dev/propraven/apis/propraven-api/revisions/37f8158c4eda?raw)
