EN

Theme

Accent colour

Your theme and colour carry over to satelit.md and the app.

Dashboard Choose a plan

Feed and export

The change feed

GET/v1/feed

Events after a cursor, oldest first: the same types as webhooks. Save meta.next and send it as after. Kept for 90 days.

Credits
included in Enterprise
From the Business plan

Parameters

  • afterstringoptional

    Where to continue: the last meta.next you received.

  • typesstringoptional

    Event types, comma separated. Missing: all of them.

  • limitintegeroptionaldefault 100

    Rows per answer, at most 200.

Possible errors

Try it

curl "https://api.satelit.md/v1/feed?types=fuel.cap%2Crates.updated&limit=100" \
  -H "Authorization: Bearer $SATELIT_KEY"
const res = await fetch("https://api.satelit.md/v1/feed?types=fuel.cap%2Crates.updated&limit=100", {
  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/feed?types=fuel.cap%2Crates.updated&limit=100",
    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/feed?types=fuel.cap%2Crates.updated&limit=100");
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"]);
Response
{
  "data": [
    {
      "id": "evt_01J9ZK3Q",
      "type": "fuel.cap",
      "created_at": "2026-11-02T13:05:00+02:00",
      "data": {
        "date": "2026-11-02",
        "cap": {
          "a95": 31.4,
          "diesel": 36.28
        }
      }
    }
  ],
  "meta": {
    "credits": 0,
    "updated_at": "2026-11-02T13:05:00+02:00",
    "sources": [
      {
        "name": "ANRE",
        "url": "https://anre.md",
        "license": "Public data of ANRE"
      }
    ],
    "next": "eyJhdCI6IjIwMjYtMTEtMDIifQ",
    "has_more": false
  }
}

A product export

GET/v1/export/{product}

A whole product as NDJSON (application/x-ndjson). The first line is _meta, the last _end: a file without it was cut.

Credits
included in Enterprise
From the Enterprise plan

Parameters

  • productstring: news, law, places, rates, fuel, tariffs, indexes, recipes, prices, tours, flights, rest, estate, chain_shopsrequired

    The key of a product: prices, deals, rates, fuel, tariffs, tours, flights, rest, estate, indexes, law, news, places, chain_shops, recipes.

Possible errors

Try it

curl "https://api.satelit.md/v1/export/rates" \
  -H "Authorization: Bearer $SATELIT_KEY"
const res = await fetch("https://api.satelit.md/v1/export/rates", {
  headers: { Authorization: `Bearer ${process.env.SATELIT_KEY}` },
});
const text = await res.text();
const rows = text.trim().split("\n").map(JSON.parse);
console.log(rows.length, rows[0]);
import json, os, urllib.request

req = urllib.request.Request(
    "https://api.satelit.md/v1/export/rates",
    headers={"Authorization": f"Bearer {os.environ['SATELIT_KEY']}"},
)
with urllib.request.urlopen(req) as res:
    for line in res:
        print(json.loads(line))
<?php
$ch = curl_init("https://api.satelit.md/v1/export/rates");
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => ["Authorization: Bearer " . getenv("SATELIT_KEY")],
]);
$lines = explode("\n", trim(curl_exec($ch)));
curl_close($ch);
foreach ($lines as $line) {
    print_r(json_decode($line, true));
}
application/x-ndjson
{"_meta":{"product":"rates","attribution":"Sursa: Banca Națională a Moldovei, bnm.md, CC BY 4.0","notice":"The same data is free at bnm.md."}}
{"code":"EUR","name":"Euro","value":20.0905,"nominal":1,"date":"2026-11-02","change_7d_pct":-0.6,"change_30d_pct":-0.1}
{"code":"USD","name":"US dollar","value":17.9476,"nominal":1,"date":"2026-11-02","change_7d_pct":-0.6,"change_30d_pct":0.8}
{"_end":{"rows":2,"complete":true}}