Open data
Everything this site shows comes from public endpoints, no key required. Below: the full index, the anchors and how to rebuild the root.
The API did not answer at build time or returned seed data. Everything on this page is illustrative until the pilot starts collecting.
Real-time inflation index
Pilot basket of 200 items, geometric median per item, chained day by day. Base 100 on the first day with coverage ≥ 60%. Published only with coverage ≥ 40%.
Salvador
+1.5% ▲
change 30 d · latest 104.88 · coverage 86%
CSV straight from the API: date, dayIndex, value, daily change, coverage, published.
Methodological note. This index is not the official CPI (IPCA). It is the variation of shelf prices observed by people, weighted equally per basket item, without consumption weights. Days below minimum coverage are left blank rather than interpolated. Method and basket at /en/data.
Daily anchors
| day | date | root | leaves | tx | status |
|---|---|---|---|---|---|
| 268 | 2026-09-26 | 0xf28de90cfd…cbf99864 | 16 | 0xc4a0a07f…c98a54 | confirmed |
| 267 | 2026-09-25 | 0xd09d8e1692…5563159e | 14,765 | 0x0593a947…f885c1 | confirmed |
| 266 | 2026-09-24 | 0xbcc5a139d4…208e4f7b | 13,104 | 0x6f23e1fb…a03a40 | confirmed |
| 265 | 2026-09-23 | 0xd9489315ba…f7529843 | 13,327 | 0xa4c0fd16…db45ca | confirmed |
| 264 | 2026-09-22 | 0x4239142fa3…5f5a7cfe | 12,464 | 0x3c14d93b…606a6b | confirmed |
| 263 | 2026-09-21 | 0x401e09af78…0d615215 | 13,833 | 0x1a84cfa0…13add8 | confirmed |
| 262 | 2026-09-20 | 0x5369a2919b…5cea1206 | 14,552 | 0x3c96dd3f…dcf1d9 | confirmed |
| 261 | 2026-09-19 | 0x0cc1d1affc…fdb3e4c7 | 13,549 | 0x978786d1…553113 | confirmed |
| 260 | 2026-09-18 | 0xb3ad6b96b1…8840a606 | 14,016 | 0x6fbdc0ba…92dc96 | confirmed |
| 259 | 2026-09-17 | 0x56a4be14d5…ed929b23 | 13,381 | 0x4ba83bdd…56d01f | confirmed |
| 258 | 2026-09-16 | 0x58642b1f22…5b6ce52c | 13,641 | 0x2c629d94…8a2eb7 | confirmed |
| 257 | 2026-09-15 | 0x916cf1ca3d…e6a85323 | 14,202 | 0xb88c0265…83bcbb | confirmed |
| 256 | 2026-09-14 | 0xb7ba72b3fe…88c4ef47 | 14,218 | 0x779f5ada…5d853c | confirmed |
| 255 | 2026-09-13 | 0x2e7b90124d…f1a82838 | 14,446 | 0x6f58be5c…4323b9 | confirmed |
| 254 | 2026-09-12 | 0x8f9a66d32c…e53ce298 | 13,688 | 0x728e68f6…2e5140 | confirmed |
| 253 | 2026-09-11 | 0x38c640b759…8eb0a07d | 14,732 | 0x34495f53…9546d3 | confirmed |
| 252 | 2026-09-10 | 0x83391c6e99…98a0c42c | 14,072 | 0xfee48964…82feb8 | confirmed |
| 251 | 2026-09-09 | 0x37165ea1e4…2657dd3e | 14,957 | 0xdae9fd87…ce86fb | confirmed |
| 250 | 2026-09-08 | 0xc75d07c676…e80df7e7 | 14,041 | 0x2326ea8d…eab831 | confirmed |
| 249 | 2026-09-07 | 0xb64454cca6…a83df469 | 12,826 | 0x202bb8f2…b84e16 | confirmed |
| 248 | 2026-09-06 | 0xd384869059…bcaf1047 | 14,731 | 0x26b9c6f4…93d44b | confirmed |
| 247 | 2026-09-05 | 0x5f8f3fb46f…4fbde386 | 12,561 | 0x7fcfd8fc…7da06b | confirmed |
| 246 | 2026-09-04 | 0xf243dc76d7…db7d3017 | 14,247 | 0x6fe5a604…7dc6bf | confirmed |
| 245 | 2026-09-03 | 0xbe311acde3…154ed02c | 13,356 | 0x652f2c54…b744d3 | confirmed |
| 244 | 2026-09-02 | 0x3bcde27b3b…24da7105 | 13,946 | 0x3ec1587e…a7a21e | confirmed |
| 243 | 2026-09-01 | 0xc96d4d4bea…0a0aeddf | 14,908 | 0x1a33470a…791ec1 | confirmed |
| 242 | 2026-08-31 | 0x45940bdfff…2c5268d0 | 12,560 | 0xfe107ea0…d9c0d0 | confirmed |
| 241 | 2026-08-30 | 0x48cb3bc753…a899b079 | 13,356 | 0x2bf2f3f1…060a51 | confirmed |
| 240 | 2026-08-29 | 0x7fe1a11150…38ecf908 | 14,692 | 0x874eb177…cfc76b | confirmed |
| 239 | 2026-08-28 | 0x19692cac01…8dbb8f2c | 14,045 | 0x93d300be…c24649 | confirmed |
Endpoints
- GET /v1/public/stats
- GET /v1/public/feed?city=salvador-ba&limit=20
- GET /v1/categories
- GET /v1/index/salvador-ba?days=30&scope=city
- GET /v1/index/salvador-ba.csv?days=90&scope=city
- GET /v1/index/salvador-ba/neighborhoods
- GET /v1/anchors?limit=30
- GET /v1/anchors/:day/proof?product=&store=
- GET /v1/stores/nearby?lat=-12.9714&lng=-38.5014&radiusM=25000
- GET /v1/meta
Rebuild the root
Download the day’s CSV, build one leaf per (product, store) with keccak256(abi.encode(...)) over the fields listed in ADR 0002, sort by hash and build a StandardMerkleTree (OpenZeppelin). The root must match rootOf(dayIndex) in the contract.
leaf = keccak256(keccak256(abi.encode(
bytes16 productId, bytes16 storeId, uint32 priceCents,
uint64 firstObservedAt, uint64 lastObservedAt,
uint16 confidenceBp, bytes16 winningObservationId)))
root = StandardMerkleTree.of(sortByHash(leaves)).root
assert root == PrecisaAnchor.rootOf(dayIndex)