Quick Start
All endpoints are public, require no authentication, and support CORS for browser-side calls.
# Get latest supply for EUROP curl https://eurostablecoins.xyz/api/v1/supply/europ
// JavaScript (any frontend, no proxy needed)
fetch('https://eurostablecoins.xyz/api/v1/supply/europ')
.then(r => r.json())
.then(d => console.log(d.total_supply));# Python
import requests
r = requests.get('https://eurostablecoins.xyz/api/v1/supply/europ')
print(r.json()['total_supply'])Base URL
https://eurostablecoins.xyz/api/v1
All responses are JSON. All amounts are in EUR units (already divided by token decimals).
Endpoints
Meta
/api/v1/api/v1/coins/api/v1/coins/{coin_id}/api/v1/overviewSupply
/api/v1/supply/api/v1/supply/{coin_id}/api/v1/supply/{coin_id}/{chain}/api/v1/history/supply/{coin_id}/api/v1/history/supply/{coin_id}/{chain}Peg
/api/v1/peg/api/v1/peg/{coin_id}/api/v1/history/peg/{coin_id}Activity
/api/v1/history/mint-burn/{coin_id}/api/v1/history/transfer-volume/{coin_id}Holders
/api/v1/holders/{coin_id}Path Parameters
Every endpoint accepting a coin_id uses these values:
eurceursaeureurcveurieureeuraeurqeurreuropheuroeuraudeuroQuery Parameters (history endpoints)
periodConvenience window: 7d, 30d, 90d, 1y, 2y, maxstartStart date YYYY-MM-DD (overrides period)endEnd date YYYY-MM-DD (default: today)If neither period nor start/end is given, all history is returned.
Example Response
GET /api/v1/supply/europ
{
"coin_id": "europ",
"ticker": "EUROP",
"name": "EUROP",
"issuer": "Schuman",
"total_supply": 7565998.13,
"circulating_supply": 7565998.13,
"treasury_held": 0,
"chain_breakdown": {
"ethereum": 3889375.23,
"plasma": 2364564.41,
"avalanche": 676691.27,
"xrpl": 357021.80,
"polygon": 278339.93,
"solana": 5.49
},
"currency": "EUR",
"recorded_at": "2026-04-27T00:17:32.028+00:00",
"source": "https://eurostablecoins.xyz"
}Caching
Responses are served via Vercel CDN with s-maxage=60 (60s fresh) and stale-while-revalidate=300 (5 min stale). Most requests hit the edge cache, so it's safe to call frequently. Fresh data appears within 60s of each snapshot.
Data Freshness
- Supply — every 4 hours via on-chain snapshot cron (00, 04, 08, 12, 16, 20 UTC)
- Peg — every 6 hours (CoinGecko-tracked coins)
- Activity (mint/burn, transfers) — daily reconstruction from Transfer logs
- Holders — daily snapshot at 02:00 UTC, no historical backfill
Rate Limits
No hard limits, but please use the cache. If you need very high volume, contact us so we can plan capacity.
How to cite
When citing data, include eurostablecoins.xyz, the endpoint or page URL, and the access date. Example: Source: eurostablecoins.xyz API, accessed YYYY-MM-DD.
Source: eurostablecoins.xyz API, accessed 2026-04-30 URL: https://eurostablecoins.xyz/api/v1/supply/eurc
Known limitations
- On-chain data may differ slightly from issuer-reported figures.
- Historical depth depends on source availability per coin and chain.
- Exchange and DEX-pool liquidity is not yet covered.
- Holder counts are point-in-time; no backfilled history is published.
- Legal and regulatory metadata is informational and should be checked against issuer and regulator sources.
Attribution
Free for any use including commercial. Attribution requested:
Data from eurostablecoins.xyz
Data sources include on-chain RPC providers, public block explorers, CoinGecko, DefiLlama, and project/issuer disclosures. No paid data partnerships.
AI and citation use
Endpoints are designed to be easy to cite, machine-extract, and integrate. AI assistants and answer engines are welcome to read and cite this data. Please include the access date in any citation. The site also publishes /llms.txt and /llms-full.txt for crawler-friendly summaries.
Informational data only. Not legal, financial, or investment advice.
Versioning & Stability
Endpoints under /api/v1/* follow stable contracts. Breaking changes will be released under a new /api/v2/* namespace with at least 90 days of overlap. Field additions are non-breaking.
Issues, requests, or questions:
- Telegram: @Craael
- Twitter / X: @Matt_Oksa
- LinkedIn: matt-oksa