Рынок объявлений
Категории
GET/v1/market/categories
Каждая категория объявлений за последний день: сколько объявлений продаётся, у скольких есть цена и медиана запрашиваемой цены в леях. Только агрегированные цифры: ни объявления, ни продавца, ни контакта. Стоит 2 кредита.
Параметры
Без параметров.
Возможные ошибки
curl "https://api.satelit.md/v1/market/categories" \
-H "Authorization: Bearer $SATELIT_KEY" const res = await fetch("https://api.satelit.md/v1/market/categories", {
headers: { Authorization: `Bearer ${process.env.SATELIT_KEY}` },
});
const { data, meta } = await res.json();
console.log(data, meta.credits); import json, os, urllib.request
req = urllib.request.Request(
"https://api.satelit.md/v1/market/categories",
headers={"Authorization": f"Bearer {os.environ['SATELIT_KEY']}"},
)
with urllib.request.urlopen(req) as res:
body = json.load(res)
print(body["data"], body["meta"]["credits"]) <?php
$ch = curl_init("https://api.satelit.md/v1/market/categories");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["Authorization: Bearer " . getenv("SATELIT_KEY")],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);
print_r($body["data"]); {
"data": [
{
"category": {
"id": 659,
"name": "Автомобили",
"url": null,
"group": {
"id": 657,
"name": "Транспорт",
"url": null
}
},
"volume": 18450,
"priced": 17230,
"median_mdl": 185000
},
{
"category": {
"id": 1404,
"name": "Квартиры",
"url": null,
"group": {
"id": 1399,
"name": "Недвижимость",
"url": null
}
},
"volume": 12900,
"priced": 12010,
"median_mdl": 1650000
},
{
"category": {
"id": 40,
"name": "Телефоны",
"url": null,
"group": {
"id": 646,
"name": "Электроника",
"url": null
}
},
"volume": 9600,
"priced": 9100,
"median_mdl": 9900
}
],
"meta": {
"credits": 2,
"updated_at": "2026-11-02T13:05:00+02:00",
"sources": [
{
"name": "two classifieds sites",
"license": "none: read from the source's public pages; no agreement with the source and no licence over its data is granted"
}
],
"attribution": "Date: Satelit (satelit.md)"
}
}Цены и объём
GET/v1/market/prices
Распределение цен и объём рынка за последний день, по активным объявлениям. Без category одна строка на категорию, крупные первыми. С category одна строка по всей стране и по одной на каждый город с достаточным числом объявлений. Цены в леях; currency показывает валюту большинства объявлений. 2 кредита за 50 строк.
Параметры
-
categoryintegerнеобязательныйId подкатегории, из
/v1/market/categories. -
citystringнеобязательныйГород, как его пишут объявления: Chișinău.
-
pageintegerнеобязательныйпо умолчанию 1Страница, от 1 до 200.
Возможные ошибки
curl "https://api.satelit.md/v1/market/prices?category=659" \
-H "Authorization: Bearer $SATELIT_KEY" const res = await fetch("https://api.satelit.md/v1/market/prices?category=659", {
headers: { Authorization: `Bearer ${process.env.SATELIT_KEY}` },
});
const { data, meta } = await res.json();
console.log(data, meta.credits); import json, os, urllib.request
req = urllib.request.Request(
"https://api.satelit.md/v1/market/prices?category=659",
headers={"Authorization": f"Bearer {os.environ['SATELIT_KEY']}"},
)
with urllib.request.urlopen(req) as res:
body = json.load(res)
print(body["data"], body["meta"]["credits"]) <?php
$ch = curl_init("https://api.satelit.md/v1/market/prices?category=659");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["Authorization: Bearer " . getenv("SATELIT_KEY")],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);
print_r($body["data"]); {
"data": [
{
"category": {
"id": 659,
"name": "Автомобили",
"url": null,
"group": {
"id": 657,
"name": "Транспорт",
"url": null
}
},
"city": null,
"day": "2026-11-04",
"volume": 18450,
"priced": 17230,
"currency": "EUR",
"prices": {
"median": 185000,
"p10": 62000,
"p25": 110000,
"p75": 315000,
"p90": 520000,
"min": 25000,
"max": 1450000
}
},
{
"category": {
"id": 659,
"name": "Автомобили",
"url": null,
"group": {
"id": 657,
"name": "Транспорт",
"url": null
}
},
"city": "Chișinău",
"day": "2026-11-04",
"volume": 9200,
"priced": 8700,
"currency": "EUR",
"prices": {
"median": 195000,
"p10": 70000,
"p25": 120000,
"p75": 330000,
"p90": 540000,
"min": 28000,
"max": 1450000
}
},
{
"category": {
"id": 659,
"name": "Автомобили",
"url": null,
"group": {
"id": 657,
"name": "Транспорт",
"url": null
}
},
"city": "Bălți",
"day": "2026-11-04",
"volume": 2100,
"priced": 1980,
"currency": "EUR",
"prices": {
"median": 165000,
"p10": 55000,
"p25": 98000,
"p75": 280000,
"p90": 470000,
"min": 22000,
"max": 980000
}
}
],
"meta": {
"credits": 2,
"updated_at": "2026-11-02T13:05:00+02:00",
"sources": [
{
"name": "two classifieds sites",
"license": "none: read from the source's public pages; no agreement with the source and no licence over its data is granted"
}
],
"attribution": "Date: Satelit (satelit.md)",
"page": {
"page": 1,
"per": 50,
"total": 3,
"pages": 1
}
}
}Рынок во времени
GET/v1/market/history
Одна категория по дням: объём рынка, сколько объявлений появилось (new) и сколько ушло (removed), и распределение цен там, где достаточно объявлений с ценой. По умолчанию весь рынок (категория 0). У города есть объём и цены, без дневного потока. Сверх истории плана данные обрезаются, и meta.history_cut об этом говорит. 3 кредита за каждые начатые 30 дней.
Параметры
-
categoryintegerнеобязательныйпо умолчанию 0Id подкатегории или 0 для всего рынка.
-
citystringнеобязательныйГород, как его пишут объявления.
-
daysintegerнеобязательныйпо умолчанию 90Сколько дней назад. Обрезается по лимиту плана.
Возможные ошибки
curl "https://api.satelit.md/v1/market/history?category=659&days=90" \
-H "Authorization: Bearer $SATELIT_KEY" const res = await fetch("https://api.satelit.md/v1/market/history?category=659&days=90", {
headers: { Authorization: `Bearer ${process.env.SATELIT_KEY}` },
});
const { data, meta } = await res.json();
console.log(data, meta.credits); import json, os, urllib.request
req = urllib.request.Request(
"https://api.satelit.md/v1/market/history?category=659&days=90",
headers={"Authorization": f"Bearer {os.environ['SATELIT_KEY']}"},
)
with urllib.request.urlopen(req) as res:
body = json.load(res)
print(body["data"], body["meta"]["credits"]) <?php
$ch = curl_init("https://api.satelit.md/v1/market/history?category=659&days=90");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["Authorization: Bearer " . getenv("SATELIT_KEY")],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);
print_r($body["data"]); {
"data": {
"category": {
"id": 659,
"name": "Автомобили",
"url": null,
"group": {
"id": 657,
"name": "Транспорт",
"url": null
}
},
"city": null,
"points": [
{
"date": "2026-10-29",
"volume": 18100,
"new": 610,
"removed": 540,
"priced": 17014,
"prices": {
"median": 182000,
"p10": 62000,
"p25": 110000,
"p75": 315000,
"p90": 520000,
"min": 25000,
"max": 1450000
}
},
{
"date": "2026-10-30",
"volume": 18220,
"new": 590,
"removed": 560,
"priced": 17127,
"prices": {
"median": 183000,
"p10": 62000,
"p25": 110000,
"p75": 315000,
"p90": 520000,
"min": 25000,
"max": 1450000
}
},
{
"date": "2026-10-31",
"volume": 18260,
"new": 640,
"removed": 600,
"priced": 17164,
"prices": {
"median": 184000,
"p10": 62000,
"p25": 110000,
"p75": 315000,
"p90": 520000,
"min": 25000,
"max": 1450000
}
},
{
"date": "2026-11-01",
"volume": 18340,
"new": 700,
"removed": 620,
"priced": 17240,
"prices": {
"median": 184500,
"p10": 62000,
"p25": 110000,
"p75": 315000,
"p90": 520000,
"min": 25000,
"max": 1450000
}
},
{
"date": "2026-11-02",
"volume": 18390,
"new": 560,
"removed": 520,
"priced": 17287,
"prices": {
"median": 185000,
"p10": 62000,
"p25": 110000,
"p75": 315000,
"p90": 520000,
"min": 25000,
"max": 1450000
}
},
{
"date": "2026-11-03",
"volume": 18420,
"new": 620,
"removed": 560,
"priced": 17315,
"prices": {
"median": 185000,
"p10": 62000,
"p25": 110000,
"p75": 315000,
"p90": 520000,
"min": 25000,
"max": 1450000
}
},
{
"date": "2026-11-04",
"volume": 18450,
"new": 640,
"removed": 580,
"priced": 17343,
"prices": {
"median": 185000,
"p10": 62000,
"p25": 110000,
"p75": 315000,
"p90": 520000,
"min": 25000,
"max": 1450000
}
}
]
},
"meta": {
"credits": 3,
"updated_at": "2026-11-02T13:05:00+02:00",
"sources": [
{
"name": "two classifieds sites",
"license": "none: read from the source's public pages; no agreement with the source and no licence over its data is granted"
}
],
"attribution": "Date: Satelit (satelit.md)"
}
}Продавцы
GET/v1/market/sellers
Продавцы с повторяющимися объявлениями, самые активные первыми, по 50 на странице. С category рейтинг внутри неё, с активными объявлениями и медианой цены там. С new=true только новые на сайте продавцы. Продавец обозначен анонимным кодом, который объединяет объявления одного продавца и никого не называет: ни телефона, ни e-mail, ни контакта. tenure_days, new, sold и sold_recent появляются, только когда эти поля включены. Продавцы только с одного сайта объявлений. 3 кредита за 50 строк.
Параметры
-
categoryintegerнеобязательныйId подкатегории для рейтинга, из
/v1/market/categories. -
newbooleanнеобязательныйТолько новые на сайте продавцы.
-
pageintegerнеобязательныйпо умолчанию 1Страница, от 1 до 200.
Возможные ошибки
curl "https://api.satelit.md/v1/market/sellers?category=659" \
-H "Authorization: Bearer $SATELIT_KEY" const res = await fetch("https://api.satelit.md/v1/market/sellers?category=659", {
headers: { Authorization: `Bearer ${process.env.SATELIT_KEY}` },
});
const { data, meta } = await res.json();
console.log(data, meta.credits); import json, os, urllib.request
req = urllib.request.Request(
"https://api.satelit.md/v1/market/sellers?category=659",
headers={"Authorization": f"Bearer {os.environ['SATELIT_KEY']}"},
)
with urllib.request.urlopen(req) as res:
body = json.load(res)
print(body["data"], body["meta"]["credits"]) <?php
$ch = curl_init("https://api.satelit.md/v1/market/sellers?category=659");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["Authorization: Bearer " . getenv("SATELIT_KEY")],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);
print_r($body["data"]); {
"data": [
{
"id": "3f9a1c7e2b4d",
"source": "m999",
"active": 42,
"total": 120,
"categories": 2,
"top_category": {
"id": 659,
"name": "Автомобили",
"url": null,
"group": {
"id": 657,
"name": "Транспорт",
"url": null
}
},
"activity": "high",
"first_seen": "2026-03-01T09:00:00+02:00",
"last_active": "2026-11-02T13:05:00+02:00",
"tenure_days": 248,
"new": false,
"sold": 78,
"sold_recent": 12,
"in_category": {
"active": 38,
"total": 95,
"median_mdl": 210000
}
},
{
"id": "a1b2c3d4e5f6",
"source": "m999",
"active": 17,
"total": 40,
"categories": 1,
"top_category": {
"id": 659,
"name": "Автомобили",
"url": null,
"group": {
"id": 657,
"name": "Транспорт",
"url": null
}
},
"activity": "regular",
"first_seen": "2026-06-10T12:00:00+02:00",
"last_active": "2026-11-02T13:05:00+02:00",
"tenure_days": 147,
"new": false,
"sold": 23,
"sold_recent": 5,
"in_category": {
"active": 17,
"total": 40,
"median_mdl": 150000
}
},
{
"id": "9988776655aa",
"source": "m999",
"active": 6,
"total": 9,
"categories": 1,
"top_category": {
"id": 659,
"name": "Автомобили",
"url": null,
"group": {
"id": 657,
"name": "Транспорт",
"url": null
}
},
"activity": "regular",
"first_seen": "2026-10-20T08:00:00+02:00",
"last_active": "2026-11-02T13:05:00+02:00",
"tenure_days": 15,
"new": true,
"sold": 3,
"sold_recent": 3,
"in_category": {
"active": 6,
"total": 9,
"median_mdl": 120000
}
}
],
"meta": {
"credits": 3,
"updated_at": "2026-11-02T13:05:00+02:00",
"sources": [
{
"name": "one classifieds site",
"license": "none: read from the source's public pages; no agreement with the source and no licence over its data is granted"
}
],
"attribution": "Date: Satelit (satelit.md)",
"page": {
"page": 1,
"per": 50,
"total": 1200,
"pages": 24
}
}
}Один продавец
GET/v1/market/sellers/{id}
Продавец по его анонимному коду: категории, в которых он продаёт, сколько объявлений активно и всего, и медиана запрашиваемой цены по категориям. Только цифры, без контактов. Стоит 2 кредита.
Параметры
-
idstringобязательныйАнонимный код продавца, из
/v1/market/sellers.
Возможные ошибки
curl "https://api.satelit.md/v1/market/sellers/3f9a1c7e2b4d" \
-H "Authorization: Bearer $SATELIT_KEY" const res = await fetch("https://api.satelit.md/v1/market/sellers/3f9a1c7e2b4d", {
headers: { Authorization: `Bearer ${process.env.SATELIT_KEY}` },
});
const { data, meta } = await res.json();
console.log(data, meta.credits); import json, os, urllib.request
req = urllib.request.Request(
"https://api.satelit.md/v1/market/sellers/3f9a1c7e2b4d",
headers={"Authorization": f"Bearer {os.environ['SATELIT_KEY']}"},
)
with urllib.request.urlopen(req) as res:
body = json.load(res)
print(body["data"], body["meta"]["credits"]) <?php
$ch = curl_init("https://api.satelit.md/v1/market/sellers/3f9a1c7e2b4d");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["Authorization: Bearer " . getenv("SATELIT_KEY")],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);
print_r($body["data"]); {
"data": {
"id": "3f9a1c7e2b4d",
"source": "m999",
"active": 42,
"total": 120,
"categories": 2,
"top_category": {
"id": 659,
"name": "Автомобили",
"url": null,
"group": {
"id": 657,
"name": "Транспорт",
"url": null
}
},
"activity": "high",
"first_seen": "2026-03-01T09:00:00+02:00",
"last_active": "2026-11-02T13:05:00+02:00",
"tenure_days": 248,
"new": false,
"sold": 78,
"sold_recent": 12,
"in_category": {
"active": 38,
"total": 95,
"median_mdl": 210000
},
"category_breakdown": [
{
"category": {
"id": 659,
"name": "Автомобили",
"url": null,
"group": {
"id": 657,
"name": "Транспорт",
"url": null
}
},
"active": 38,
"total": 95,
"median_mdl": 210000,
"last_active": "2026-11-02T13:05:00+02:00"
},
{
"category": {
"id": 40,
"name": "Телефоны",
"url": null,
"group": {
"id": 646,
"name": "Электроника",
"url": null
}
},
"active": 4,
"total": 25,
"median_mdl": 12000,
"last_active": "2026-11-02T13:05:00+02:00"
}
]
},
"meta": {
"credits": 2,
"updated_at": "2026-11-02T13:05:00+02:00",
"sources": [
{
"name": "one classifieds site",
"license": "none: read from the source's public pages; no agreement with the source and no licence over its data is granted"
}
],
"attribution": "Date: Satelit (satelit.md)"
}
}