API оценки

Воспроизводимая эталонная стоимость любого объекта в городе Буэнос-Айрес с доверительным диапазоном, сопоставимыми объектами и пояснением простым языком. Базовый URL: https://api.zavaluo.com/v1. Все ответы — JSON в кодировке UTF-8.

Доступный рынок: CABA (продажа и аренда). Коста-дель-Соль (Испания) — позже; поле country в каждом запросе заложено с расчётом на это.
Статус: калибровка. Статистика по barrios (районам) и каталог barrios уже доступны. Модель оценки калибруется на первых сопоставимых объектах: POST /valuations проверяет запрос и отвечает 503, пока модель не заработает. Владельцам выданных ключей мы сообщим по email.

Аутентификация

Каждый запрос передаёт ваш ключ в заголовке Authorization. Мы храним только хеш ключа: если вы его потеряете, мы выпустим новый.

Authorization: Bearer zv_live_9f3c…

Запросите ключ на странице Доступ к API. Тариф Explorar включает 100 запросов в месяц; остальные тарифы — свою квоту.

Первый запрос

# curl
curl -X POST https://api.zavaluo.com/v1/valuations \
  -H "Authorization: Bearer $ZAVALUO_KEY" \
  -H "Content-Type: application/json" \
  -d '{"address":"Gorriti 4800, Palermo, CABA","kind":"apartment","m2_total":68,"rooms":3,"floor":2}'

// JavaScript (fetch)
const r = await fetch("https://api.zavaluo.com/v1/valuations", {
  method: "POST",
  headers: { Authorization: `Bearer ${process.env.ZAVALUO_KEY}`, "Content-Type": "application/json" },
  body: JSON.stringify({ address: "Gorriti 4800, Palermo, CABA", kind: "apartment", m2_total: 68, rooms: 3, floor: 2 })
});
const v = await r.json();

# Python (requests)
r = requests.post("https://api.zavaluo.com/v1/valuations",
    headers={"Authorization": f"Bearer {KEY}"},
    json={"address": "Gorriti 4800, Palermo, CABA", "kind": "apartment", "m2_total": 68, "rooms": 3, "floor": 2})

Создать оценку

POST /v1/valuations

Возвращает расчётную стоимость объекта. Достаточно одного адреса; каждый дополнительный атрибут сужает диапазон.

Тело запроса

ПолеТипОписание
addressstringАдрес с barrio или городом. Мы геокодируем его и возвращаем точность. Обязательно, если не переданы lat/lng
lat, lngnumberКоординаты WGS84. Если вы их передаёте, address игнорируется.
countryenumAR (по умолчанию) · ES
operationenumsale (по умолчанию) · rent · temporary_rent
kindenumapartment (по умолчанию) · house · ph · land · office · retail · garage · other
m2_total, m2_coverednumberОбщая и крытая площадь в м².
rooms, bedrooms, bathroomsintegerКомнаты, спальни, санузлы.
floor, year_builtintegerЭтаж (0 = первый этаж) и год постройки.
parking_spacesintegerВключённые парковочные места.
has_balcony, has_terrace, has_pool, has_elevatorbooleanУдобства, которые сильнее всего влияют на цену в Буэнос-Айресе.
monthly_feesnumberЕжемесячные expensas (расходы на содержание дома) в местной валюте.
localestringes-AR (по умолчанию) · es-ES · en. Язык пояснения.

Ответ

{
  "id": "7a1e…", "model_version": "ar-caba-sale-2026.09.1", "operation": "sale",
  "estimate_usd": 231000, "low_usd": 212000, "high_usd": 248000,
  "estimate_local": 312000000, "local_currency": "ARS",
  "likely_asking_usd": 244000, "likely_closing_usd": 231000, "asking_vs_closing_adj": -0.053,
  "confidence": 0.86, "comps_count": 23, "comps_radius_m": 500,
  "comps": [ { "listing_id": "…", "distance_m": 120, "price_usd": 239000, "usd_m2": 3414, "m2_total": 70,
             "rooms": 3, "days_on_market": 46, "price_cut_pct": -4.0, "source_url": "https://…" }, … ],
  "calibrating": true,
  "explanation": "Valuado 2% por debajo de la mediana de Palermo por estar en 2º piso al contrafrente…",
  "created_at": "2026-09-12T15:04:11-03:00"
}
Одинаковые входные данные при одинаковой model_version дают одно и то же число. Сохраняйте model_version вместе с результатом, если позже может понадобиться проверить оценку. Пока calibrating равно true, считайте основным сигналом диапазон, а не точечное значение.

Получить оценку

GET /v1/valuations/{id}

Возвращает ранее выданную с вашим ключом оценку без пересчёта и без расхода квоты.

Индекс объявлений

GET /v1/listings?city=CABA&neighborhood=Palermo&operation=sale&max_price_usd=200000&sort=delta

Все активные объявления, которые мы отслеживаем (порталы и собственники напрямую), с пагинацией, каноническим URL на Zavaluo и, для продажи, USD/м² относительно эталонной стоимости barrio (delta_vs_reference, null, пока barrio калибруется). Фильтры те же, что в поиске на сайте.

citystringCABA (по умолчанию).
neighborhoodstringОфициальный barrio или произвольный текст. Без него — весь город.
operationenumsale (по умолчанию) · rent · temporary_rent
kindenumapartment · house · ph · …
min_price_usd, max_price_usdnumberДиапазон цен в USD.
min_rooms, min_m2numberМинимальное количество комнат и площадь.
updated_sinceISO 8601Только объявления, замеченные после этого момента: удобно для ежечасной синхронизации.
vibelistМетки, извлечённые из текста объявления, через запятую (luminoso,con_terraza,a_reciclar); возвращает объявления, у которых есть хотя бы одна из них. Каждый элемент содержит vibe, style, summary_lead и разбивку площади (m2_covered, m2_semi, m2_uncovered).
sortenumrecent (по умолчанию) · price · delta (сначала лучшая цена относительно эталона).
page, page_sizeintegerНомер страницы начиная с 1 и размер до 100 (по умолчанию 50). next содержит URL следующей страницы.
{ "total": 224, "page": 1, "page_size": 50, "next": "https://api.zavaluo.com/v1/listings?…&page=2", "reference_as_of": "2026-09-18",
  "items": [ { "ref": 1863, "url": "https://www.zavaluo.com/propiedad/belgrano/ZV-1863-ph-3-ambientes-…",
             "title": "PH 3 ambientes con patio y terraza", "price_usd": 200000, "m2_total": 192, "usd_m2": 1042,
             "neighborhood": "Belgrano", "lat": -34.5612, "lng": -58.4587, "rooms": 3,
             "reference_usd_m2": 2815, "delta_vs_reference": -0.63, "entorno_score": 76, "days_on_market": 0, "cover_url": "https://…/01.jpg" }, … ] }

entorno_score (0–100) описывает квартал по открытым данным правительства города (GCBA): расстояние до subte (метро), зарегистрированные происшествия в радиусе 500 м, школы в радиусе 800 м, зелёные зоны и больницы. Это не оценка стоимости; в детальной записи каждая составляющая и исходные данные для неё приводятся в context. Значение null, если в объявлении не указан точный адрес.

predicted_usd_m2, value_delta и deal_score получены из действующей гедонической модели (model_version в ответе): эталонная цена предложения для этого объявления с учётом площади, комнат, возраста здания, парковки и окружения, насколько запрашиваемая цена выше или ниже её, и шкала 0–100, где 50 означает «на уровне модели». value_delta за пределами ±0,45 почти всегда означает ошибку площади или цены в источнике, а не выгодное предложение. quality_score (0–100) показывает полноту записи; при sort=delta индекс сортируется по value_delta, если оно есть.

Одно объявление

GET /v1/listings/{ref}

Полная информация по ref (1863 или ZV-1863) или по uuid: описание, краткое резюме, площади, этаж, удобства, фотографии, история цен, структурированные данные, извлечённые из текста, с их версией, и context (окружение: баллы за транспорт, безопасность, школы, зелёные зоны и здравоохранение с расстояниями и количествами, на которых они основаны). Контактные данные автора объявления никогда не включаются.

Сопоставимые объекты

GET /v1/comparables?lat=-34.5889&lng=-58.4306&kind=apartment&m2_total=70&rooms=3&year_built=1995&parking=true
GET /v1/listings/{ref}/comparables

Самые похожие активные объявления вокруг точки (500 м; радиус расширяется до 1 км и 2,5 км, если их меньше пяти), у каждого — similarity (расстояние, площадь, комнаты, санузлы, возраст здания, возраст объявления) и adjusted_usd_m2: цена сопоставимого объекта, скорректированная под запрошенный объект с помощью коэффициентов действующей гедонической модели (model_version). Взвешенная медиана скорректированных значений — это эталон, а диапазон — p25–p75. confidence A–D обобщает количество, сходство и разброс. При передаче asking_usd возвращается asking_vs_reference. Вариант по ref строит субъект оценки из объявления и исключает его из собственных сопоставимых объектов.

Это эталон цен предложения, а не оценка стоимости: reference.basis сообщает об этом в каждом ответе. Корректировки получены из лог-линейной модели, оценённой на активных объявлениях Буэнос-Айреса (площадь, комнаты, санузлы, возраст здания, парковка, продажа от собственника, расстояние до subte, безопасность и зелёные зоны окружения, тип и barrio); drivers словами описывает корректировки, которые повлияли сильнее всего.

{ "reference": { "usd_m2": 3180, "low_usd_m2": 2910, "high_usd_m2": 3460, "total_usd": 222600,
                 "confidence": "B", "n_comps": 9, "radius_used_m": 500, "model_usd_m2": 3097, "barrio_median_usd_m2": 3136,
                 "basis": "asking prices of active listings" },
  "comps": [ { "ref": 660, "distance_m": 140, "usd_m2": 2311, "adjusted_usd_m2": 2402, "similarity": 81, "adjustments": { "log_m2": 0.031, "has_parking": 0.145 } }, … ],
  "drivers": [ { "factor": "has_parking", "impact": 0.145, "label": "cochera" } ], "model_version": "hedonic-caba-2026-09-18" }

Индекс barrio

GET /v1/neighborhoods
GET /v1/neighborhoods/{slug}

По barrio и дню: активный объём предложения, новые и снятые объявления за 30 дней, доля объявлений со сниженной ценой, срок экспозиции, USD/м² при продаже и при месячной аренде, валовая доходность, средняя оценка окружения и составляющие рыночного балла (momentum, liquidity, rental, entorno, affordability). market_score равно null, а calibrating — true, пока не накопится 30 дней истории для динамики и ликвидности: мы предпочитаем не публиковать балл, который говорит только «дёшево».

CABA Market Score

GET /v1/market/caba
GET /v1/market/caba/history?from=2020-01&to=2026-08

Ежемесячный контекст рынка города: балл 0–100 из пяти составляющих (активность сделок купли-продажи 30 %, ипотечное кредитование 25 %, условия финансирования 15 %, макростабильность 15 %, суверенный и валютный риск 15 %), режим (very_weak … very_strong), исходные метрики за каждой составляющей (escrituras — нотариально оформленные сделки — и ипотеки по данным Colegio de Escribanos, доллар A3500, TAMAR/BADLAR, ключевая ставка, UVA и ипотечный портфель по данным BCRA, ИПЦ INDEC, страновой риск), data_quality_score, is_provisional и calculation_version. Каждая составляющая — это перцентиль относительно собственной истории с 2016 года.

Это контекст, а не входные данные для оценки: ни эталон, ни диапазон сопоставимых объектов этим баллом не корректируются (basis повторяет это в каждом ответе). Исторический ряд нужен для графиков и для понимания того, на каком рынке идёт продажа. Пересчитывается ежедневно и всякий раз, когда Colegio публикует данные за новый месяц.

{ "period": "2026-07", "caba_market_score": 58.4, "regime": "neutral", "score_change_3m": 3.1,
  "components": { "transaction": 61.2, "credit": 71.0, "financing": 44.5, "macro": 66.3, "risk": 40.9 },
  "metrics": { "total_deeds": 6051, "mortgage_share": 0.158, "deeds_yoy_pct": -9.0, "cpi_mom_pct": 2.1, "country_risk": 690, … },
  "data_quality_score": 100, "is_provisional": false, "calculation_version": "caba-market-score-v1" }

Рыночная статистика

GET /v1/market-stats?city=CABA&neighborhood=Palermo&kind=apartment&operation=sale

Агрегаты по barrios, пересчитываемые каждую ночь: медиана и квартили USD/м², активные объявления, срок экспозиции, медианное снижение цены и соотношение цены предложения и цены сделки, если есть данные о сделках. Без neighborhood возвращаются все barrios города; результат содержит до 100 строк, сначала самые свежие.

{ "stats": [ { "country": "AR", "city": "CABA", "neighborhood": "Palermo", "kind": "apartment", "operation": "sale",
             "as_of": "2026-09-11", "n_active": 4812,
             "p25_usd_m2": 2980, "median_usd_m2": 3410, "p75_usd_m2": 3890,
             "median_days_on_market": 58, "median_price_cut_pct": -4.1, "asking_to_closed_ratio": null } ] }

Barrios

GET /v1/barrios?include=geometry

48 barrios CABA со slug, названием, comuna (административным округом) и центроидом, а с include=geometry — официальный полигон GCBA в формате GeoJSON (WGS84). Это публичная информация: ключ не нужен, квота не расходуется. Используйте её для карт и для определения barrio по координате на стороне клиента.

{ "barrios": [ { "slug": "palermo", "name": "Palermo", "comuna": 14, "centroid": { "lng": -58.4245, "lat": -34.5788 } }, … ] }

Достоверность и диапазоны

low_usd и high_usd — это 10-й и 90-й квантили модели. confidence (0–1) объединяет плотность сопоставимых объектов в радиусе, разброс их цен и количество реальных сделок, о которых нам сообщили в этом районе. При низкой достоверности диапазон расширяется в сторону медианы barrio; мы не выдумываем точность. Пока история цен короткая, calibrating равно true.

Цена предложения и цена сделки

В CABA цена в объявлении и цена в escritura (нотариальном акте купли-продажи) различаются, и разрыв зависит от barrio и фазы цикла. estimate_usd и likely_closing_usd — это вероятная цена сделки. likely_asking_usd — цена предложения, которая сегодня приводит к такой сделке, а asking_vs_closing_adj — применённый разрыв. Разрыв калибруется по сделкам, о которых сообщают собственники, и по публичным агрегатам.

Валюты и обменные курсы

Рынок CABA работает в USD; все значения модели указаны в USD. estimate_local и local_currency пересчитывают по курсу MEP (биржевой доллар) на текущий день. Мы храним ряды oficial, mep и blue по датам, так что пересчёт можно проверить.

Ошибки

КодПричина
400 Validation failedОтсутствует address или lat/lng, либо значение поля вне допустимого диапазона. Тело ответа содержит issues с полем и подробностями.
401 Invalid or revoked API keyКлюч отсутствует, недействителен или отозван.
404 Not foundОценка не существует или была выдана не с вашим ключом.
429 Monthly quota exceededМесячная квота ключа исчерпана. Она обнуляется 1-го числа (UTC).
503 КалибровкаМодель оценки ещё не запущена. Статистика и barrios по-прежнему доступны.

Лимиты и версии

Квота — месячная для каждого ключа, и учитывается каждый обработанный запрос, включая те, что вернули 400. Версия API указана в URL (/v1); несовместимые изменения выходят как /v2 с периодом параллельной работы не менее 6 месяцев. Модель переобучается, и её model_version меняется без влияния на контракт; перед каждой мажорной версией мы сообщаем по email и в списке изменений.

Список изменений

2026-09 · /v1 на калибровке для CABA. GET /market-stats и GET /barrios (с официальной геометрией) работают; POST /valuations проверяет запрос и отвечает 503, пока модель не откалибрована.

Документация API — Zavaluo · Zavaluo