API Документация
UyTop предоставляет открытый REST API для автоматизации публикации недвижимости. Вы можете интегрировать публикацию со своими Telegram-ботами, CRM-системами (например, Bitrix24, amoCRM) или скриптами автозагрузки.
Создание объявления о недвижимости
Создает новое объявление в базе данных. Если настроен Telegram-бот, объявление также автоматически публикуется в ассоциированный Telegram-канал.
POST
/api/properties
Аутентификация
Для выполнения запросов необходимо передавать заголовок x-api-key с вашим секретным ключом, указанным в файле конфигурации .env.
x-api-key: uytop_secret_key_123
Параметры запроса (JSON body)
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
| title | String | Да | Заголовок объявления (не менее 5 символов) |
| description | String | Да | Детальное описание объекта недвижимости |
| price | Number | Да | Цена сделки (положительное число) |
| currency | String | Да | Валюта цены: "USD" или "UZS" |
| type | String | Да | Тип сделки: "sale" (продажа) или "rent" (аренда) |
| propertyType | String | Нет | Тип жилья: "apartment", "house", "commercial", "land". Дефолт: "apartment" |
| rooms | Number | Да | Количество комнат (целое число от 1 до 20) |
| area | Number | Да | Общая площадь в квадратных метрах |
| city | String | Да | Город в Узбекистане, например: "Tashkent", "Samarkand", "Bukhara" |
| address | String | Да | Точный адрес объекта |
| latitude | Number | Нет | Широта для отображения на карте (например, 41.311081) |
| longitude | Number | Нет | Долгота для отображения на карте (например, 69.240562) |
| photos | Array | Нет | Список URL-ссылок на изображения объекта |
| contactName | String | Да | Имя контактного лица |
| contactPhone | String | Да | Номер телефона контакта |
| contactTelegram | String | Нет | Telegram username контакта без символа @ |
| isVip | Boolean | Нет | Закрепить в VIP объявлений: true/false |
Примеры запросов
Пример с cURL:
curl -X POST http://localhost:3000/api/properties \
-H "Content-Type: application/json" \
-H "x-api-key: uytop_secret_key_123" \
-d '{
"title": "3-комнатный дом в исторической Самарканде",
"description": "Продается прекрасный дом в Самарканде. Свежий ремонт, все коммуникации, зеленый сад во дворе.",
"price": 95000,
"currency": "USD",
"type": "sale",
"propertyType": "house",
"rooms": 3,
"area": 140,
"city": "Samarkand",
"address": "ул. Регистанская 45",
"latitude": 39.6547,
"longitude": 66.9757,
"contactName": "Алишер",
"contactPhone": "+998909876543",
"contactTelegram": "alisher_realty",
"isVip": true
}'
Пример на Node.js (JavaScript):
const payload = {
title: "2-комнатная новостройка на Чиланзаре",
description: "Аренда новой двухкомнатной квартиры с современной мебелью и кондиционером.",
price: 500,
currency: "USD",
type: "rent",
propertyType: "apartment",
rooms: 2,
area: 60,
city: "Tashkent",
address: "Чиланзар 5-квартал",
latitude: 41.282594,
longitude: 69.213234,
contactName: "Камола",
contactPhone: "+998931112233"
};
fetch('http://localhost:3000/api/properties', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'x-api-key': 'uytop_secret_key_123'
},
body: JSON.stringify(payload)
})
.then(res => res.json())
.then(data => console.log('Успешно опубликовано:', data))
.catch(err => console.error('Ошибка:', err));
Пример на Python (requests):
import requests
url = "http://localhost:3000/api/properties"
headers = {
"Content-Type": "application/json",
"x-api-key": "uytop_secret_key_123"
}
payload = {
"title": "Коммерческий склад в Сергели",
"description": "Сдается охраняемый складской ангар. Удобный подъезд для грузовых авто.",
"price": 12000000,
"currency": "UZS",
"type": "rent",
"propertyType": "commercial",
"rooms": 1,
"area": 450,
"city": "Tashkent",
"address": "Сергелийский район, промзона",
"latitude": 41.222594,
"longitude": 69.203234,
"contactName": "Фарход ака",
"contactPhone": "+998909009988"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
Формат ответа (Успех)
{
"success": true,
"data": {
"id": "prop-x5r8y1n9",
"title": "3-комнатный дом в исторической Самарканде",
"description": "Продается прекрасный дом в Самарканде. Свежий ремонт, все коммуникации, зеленый сад во дворе.",
"price": 95000,
"currency": "USD",
"priceUsd": 95000,
"priceUzs": 1216000000,
"type": "sale",
"propertyType": "house",
"rooms": 3,
"area": 140,
"city": "Samarkand",
"address": "ул. Регистанская 45",
"latitude": 39.6547,
"longitude": 66.9757,
"photos": [
"/uploads/example-listing.jpg"
],
"contactName": "Алишер",
"contactPhone": "+998909876543",
"contactTelegram": "alisher_realty",
"isVip": true,
"createdAt": "2026-07-02T05:30:00.000Z"
},
"telegramPosted": true,
"telegramMsg": "Опубликовано успешно"
}
Получение статистики сайта
Возвращает сводную статистику объявлений и актуальный курс конвертации. Запрос является публичным и не требует API-ключа.
GET
/api/stats
Формат ответа
{
"success": true,
"stats": {
"total": 5,
"sales": 3,
"rents": 2,
"avgSalePriceUsd": 150000,
"avgSalePriceUzs": 1920000000,
"exchangeRate": 12800
}
}