Shop prices
The shops
GET/v1/prices/stores
The shops in the API, with the number of products and the date of the last read.
Parameters
No parameters.
Possible errors
curl "https://api.satelit.md/v1/prices/stores" \
-H "Authorization: Bearer $SATELIT_KEY" const res = await fetch("https://api.satelit.md/v1/prices/stores", {
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/prices/stores",
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/prices/stores");
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": [
{
"key": "george",
"name": "George Standard",
"domain": "ggg.md",
"kind": "grocery",
"products": 96,
"updated_at": "2026-11-03"
},
{
"key": "kaufland",
"name": "Kaufland",
"domain": "kaufland.md",
"kind": "grocery",
"products": 27,
"updated_at": "2026-11-03"
}
],
"meta": {
"credits": 1,
"updated_at": "2026-11-02T13:05:00+02:00",
"sources": [
{
"name": "George Standard",
"license": "none: read from the shop's public pages; no agreement with the shop and no licence over its data is granted"
},
{
"name": "Kaufland",
"license": "none: read from the shop's public pages; no agreement with the shop and no licence over its data is granted"
}
],
"attribution": "Date: Satelit (satelit.md)"
}
}Search a product
GET/v1/prices/search
Searches products by name. Costs 3 credits per 20 rows. Stops at page 5.
Parameters
-
qstringrequiredBetween 2 and 100 characters.
-
categorystringoptionalThe category key, from /v1/news/categories.
-
storestringoptionalThe shop key, from /v1/prices/stores.
-
in_stockbooleanoptional1 to get only what is in stock.
-
pageintegeroptionaldefault 1The page, from 1 to 5.
Possible errors
curl "https://api.satelit.md/v1/prices/search?q=Gri%C8%99%2C%20arpaca%C8%99%20%C8%99i%20alte%20crupe" \
-H "Authorization: Bearer $SATELIT_KEY" const res = await fetch("https://api.satelit.md/v1/prices/search?q=Gri%C8%99%2C%20arpaca%C8%99%20%C8%99i%20alte%20crupe", {
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/prices/search?q=Gri%C8%99%2C%20arpaca%C8%99%20%C8%99i%20alte%20crupe",
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/prices/search?q=Gri%C8%99%2C%20arpaca%C8%99%20%C8%99i%20alte%20crupe");
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": 18342,
"slug": "bunica-arpacas-de-grau-900g",
"name": "bunica Arpacaș de grâu 900 g",
"brand": "Arpacaș",
"capacity": "900 g",
"category": "groceries",
"min_price": 5.95,
"median_price": 5.95,
"unit_min_price": 6.61,
"price_unit": "kg",
"stores": 1,
"in_stock_stores": 1,
"updated_at": "2026-11-03T00:31:34+02:00"
}
],
"meta": {
"credits": 3,
"updated_at": "2026-11-02T13:05:00+02:00",
"sources": [
{
"name": "Kaufland",
"license": "none: read from the shop's public pages; no agreement with the shop and no licence over its data is granted"
}
],
"attribution": "Date: Satelit (satelit.md)",
"page": {
"page": 1,
"per": 20,
"total": 1,
"pages": 1
}
}
}Product groups
GET/v1/prices/groups
The generic products in the catalog, like milk or bread, with the lowest price and the median.
Parameters
-
categorystringoptionalThe category key, from /v1/news/categories.
Possible errors
curl "https://api.satelit.md/v1/prices/groups" \
-H "Authorization: Bearer $SATELIT_KEY" const res = await fetch("https://api.satelit.md/v1/prices/groups", {
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/prices/groups",
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/prices/groups");
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": "crupe",
"name": "Griș, arpacaș și alte crupe",
"unit": "kg",
"min_price": 5.95,
"median_price": 12.24,
"unit_min_price": 6.61,
"price_unit": "kg",
"stores": 6
}
],
"meta": {
"credits": 2,
"updated_at": "2026-11-02T13:05:00+02:00",
"sources": [
{
"name": "Kaufland",
"license": "none: read from the shop's public pages; no agreement with the shop and no licence over its data is granted"
},
{
"name": "Carmez",
"license": "none: read from the shop's public pages; no agreement with the shop and no licence over its data is granted"
},
{
"name": "MegaAlina",
"license": "none: read from the shop's public pages; no agreement with the shop and no licence over its data is granted"
},
{
"name": "PandaShop",
"license": "none: read from the shop's public pages; no agreement with the shop and no licence over its data is granted"
}
],
"attribution": "Date: Satelit (satelit.md)"
}
}A group, with offers
GET/v1/prices/groups/{id}
The group and at most 50 offers, cheapest first.
Parameters
-
idstringrequiredThe row identifier.
Possible errors
curl "https://api.satelit.md/v1/prices/groups/crupe" \
-H "Authorization: Bearer $SATELIT_KEY" const res = await fetch("https://api.satelit.md/v1/prices/groups/crupe", {
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/prices/groups/crupe",
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/prices/groups/crupe");
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": "crupe",
"name": "Griș, arpacaș și alte crupe",
"unit": "kg",
"min_price": 5.95,
"median_price": 12.24,
"unit_min_price": 6.61,
"price_unit": "kg",
"stores": 6,
"offers": [
{
"store": {
"key": "kaufland",
"name": "Kaufland"
},
"title": "De la bunica Arpacaș de grâu 900 g",
"price": 5.95,
"old_price": 6.75,
"discount_pct": 12,
"unit_price": 6.61,
"unit": "kg",
"in_stock": true,
"url": "https://www.kaufland.md/ro/cautare.html?q=20680825",
"last_seen": "2026-11-03T00:31:34+02:00"
},
{
"store": {
"key": "george",
"name": "George Standard"
},
"title": "QUINOA biologica GAROFALO 5303, 300g",
"price": 59,
"old_price": null,
"discount_pct": null,
"unit_price": 196.67,
"unit": "kg",
"in_stock": true,
"url": "https://ggg.md/ro/shop/quinoa-biologica-garofalo-5303-300g",
"last_seen": "2026-11-03T00:35:05+02:00"
}
]
},
"meta": {
"credits": 3,
"updated_at": "2026-11-02T13:05:00+02:00",
"sources": [
{
"name": "Kaufland",
"license": "none: read from the shop's public pages; no agreement with the shop and no licence over its data is granted"
},
{
"name": "George Standard",
"license": "none: read from the shop's public pages; no agreement with the shop and no licence over its data is granted"
}
],
"attribution": "Date: Satelit (satelit.md)"
}
}A product, with offers
GET/v1/prices/items/{id}
One specific product and its offers in each shop.
Parameters
-
idintegerrequiredThe row identifier.
Possible errors
curl "https://api.satelit.md/v1/prices/items/18342" \
-H "Authorization: Bearer $SATELIT_KEY" const res = await fetch("https://api.satelit.md/v1/prices/items/18342", {
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/prices/items/18342",
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/prices/items/18342");
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": 18342,
"slug": "bunica-arpacas-de-grau-900g",
"name": "bunica Arpacaș de grâu 900 g",
"brand": "Arpacaș",
"capacity": "900 g",
"category": "groceries",
"min_price": 5.95,
"median_price": 5.95,
"unit_min_price": 6.61,
"price_unit": "kg",
"stores": 1,
"in_stock_stores": 1,
"updated_at": "2026-11-03T00:31:34+02:00",
"offers": [
{
"store": {
"key": "kaufland",
"name": "Kaufland"
},
"title": "De la bunica Arpacaș de grâu 900 g",
"price": 5.95,
"old_price": 6.75,
"discount_pct": 12,
"unit_price": 6.61,
"unit": "kg",
"in_stock": true,
"url": "https://www.kaufland.md/ro/cautare.html?q=20680825",
"last_seen": "2026-11-03T00:31:34+02:00"
}
]
},
"meta": {
"credits": 2,
"updated_at": "2026-11-02T13:05:00+02:00",
"sources": [
{
"name": "Kaufland",
"license": "none: read from the shop's public pages; no agreement with the shop and no licence over its data is granted"
}
],
"attribution": "Date: Satelit (satelit.md)"
}
}A product's history
GET/v1/prices/items/{id}/history
Prices by day and by shop. Costs 5 credits for every 30 days or part of them.
Parameters
-
idintegerrequiredThe row identifier.
-
daysintegeroptionaldefault 30How many days back. Cut at the plan's limit.
-
storestringoptionalThe shop key, from /v1/prices/stores.
Possible errors
curl "https://api.satelit.md/v1/prices/items/18342/history?days=30" \
-H "Authorization: Bearer $SATELIT_KEY" const res = await fetch("https://api.satelit.md/v1/prices/items/18342/history?days=30", {
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/prices/items/18342/history?days=30",
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/prices/items/18342/history?days=30");
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": {
"points": [
{
"date": "2026-11-02",
"store": "kaufland",
"price": 5.95,
"old_price": null,
"unit_price": 6.61,
"in_stock": true
},
{
"date": "2026-11-03",
"store": "kaufland",
"price": 5.95,
"old_price": null,
"unit_price": 6.61,
"in_stock": true
}
]
},
"meta": {
"credits": 5,
"updated_at": "2026-11-02T13:05:00+02:00",
"sources": [
{
"name": "kaufland",
"license": "none: read from the shop's public pages; no agreement with the shop and no licence over its data is granted"
}
],
"attribution": "Date: Satelit (satelit.md)"
}
}