Piața anunțurilor
Categoriile
GET/v1/market/categories
Fiecare categorie de anunțuri, în ultima zi: câte anunțuri sunt de vânzare, câte au preț și mediana prețului cerut, în lei. Doar numere agregate: niciun anunț, niciun vânzător, niciun contact. Costă 2 credite.
Parametri
Fără parametri.
Erori posibile
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": "Automobile",
"url": null,
"group": {
"id": 657,
"name": "Transport",
"url": null
}
},
"volume": 18450,
"priced": 17230,
"median_mdl": 185000
},
{
"category": {
"id": 1404,
"name": "Apartamente",
"url": null,
"group": {
"id": 1399,
"name": "Imobiliare",
"url": null
}
},
"volume": 12900,
"priced": 12010,
"median_mdl": 1650000
},
{
"category": {
"id": 40,
"name": "Telefoane",
"url": null,
"group": {
"id": 646,
"name": "Electronice",
"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)"
}
}Prețurile și volumul
GET/v1/market/prices
Distribuția prețurilor și volumul pieței în ultima zi, din anunțurile active. Fără category, un rând pe categorie, cele mai mari primele. Cu category, un rând pe toată țara și câte unul pe fiecare oraș cu destule anunțuri. Prețurile sunt în lei; currency arată moneda celor mai multe anunțuri. Costă 2 credite pe 50 de rânduri.
Parametri
-
categoryintegeropționalId-ul subcategoriei, din
/v1/market/categories. -
citystringopționalOrașul, cum îl scriu anunțurile: Chișinău.
-
pageintegeropționalimplicit 1Pagina, de la 1 la 200.
Erori posibile
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": "Automobile",
"url": null,
"group": {
"id": 657,
"name": "Transport",
"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": "Automobile",
"url": null,
"group": {
"id": 657,
"name": "Transport",
"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": "Automobile",
"url": null,
"group": {
"id": 657,
"name": "Transport",
"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
}
}
}Piața în timp
GET/v1/market/history
O categorie, zi de zi: volumul pieței, câte anunțuri au apărut (new) și câte au plecat (removed), plus distribuția prețurilor unde destule anunțuri au preț. Implicit, toată piața (categoria 0). Un oraș are volum și prețuri, fără fluxul zilnic. Peste istoricul planului se taie, iar meta.history_cut o spune. Costă 3 credite pe fiecare 30 de zile începute.
Parametri
-
categoryintegeropționalimplicit 0Id-ul subcategoriei sau 0 pentru toată piața.
-
citystringopționalOrașul, cum îl scriu anunțurile.
-
daysintegeropționalimplicit 90Câte zile în urmă. Tăiat la limita planului.
Erori posibile
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": "Automobile",
"url": null,
"group": {
"id": 657,
"name": "Transport",
"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)"
}
}Vânzătorii
GET/v1/market/sellers
Vânzătorii cu anunțuri repetate, cei mai activi primii, câte 50 pe pagină. Cu category, clasați în categoria respectivă, cu anunțurile active și mediana prețului acolo. Cu new=true, doar vânzătorii noi pe site. Vânzătorul e un cod anonim care strânge anunțurile unui vânzător și nu numește pe nimeni: niciun telefon, e-mail sau contact. tenure_days, new, sold și sold_recent apar doar când aceste câmpuri sunt pornite. Vânzătorii vin de pe un singur site de anunțuri. Costă 3 credite pe 50 de rânduri.
Parametri
-
categoryintegeropționalId-ul subcategoriei în care se face clasamentul, din
/v1/market/categories. -
newbooleanopționalDoar vânzătorii noi pe site.
-
pageintegeropționalimplicit 1Pagina, de la 1 la 200.
Erori posibile
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": "Automobile",
"url": null,
"group": {
"id": 657,
"name": "Transport",
"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": "Automobile",
"url": null,
"group": {
"id": 657,
"name": "Transport",
"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": "Automobile",
"url": null,
"group": {
"id": 657,
"name": "Transport",
"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
}
}
}Un vânzător
GET/v1/market/sellers/{id}
Un vânzător după codul lui anonim: categoriile în care vinde, câte anunțuri are active și în total, și mediana prețului cerut pe categorie. Doar numere, niciun contact. Costă 2 credite.
Parametri
-
idstringobligatoriuCodul anonim al vânzătorului, din
/v1/market/sellers.
Erori posibile
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": "Automobile",
"url": null,
"group": {
"id": 657,
"name": "Transport",
"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": "Automobile",
"url": null,
"group": {
"id": 657,
"name": "Transport",
"url": null
}
},
"active": 38,
"total": 95,
"median_mdl": 210000,
"last_active": "2026-11-02T13:05:00+02:00"
},
{
"category": {
"id": 40,
"name": "Telefoane",
"url": null,
"group": {
"id": 646,
"name": "Electronice",
"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)"
}
}