Monero prices for everyone

A small JSON API with the price of XMR, open to anyone. It also answers on an onion address, so a hidden service gets its prices without a clearnet jump box or any other server outside Tor.

API docs
1. Solve
Request a challenge and compute a hashcash stamp with 24 leading zero bits, then wait at least 30 seconds from the moment it was issued.
2. Redeem
Trade the stamp for an API token valid for 90 days.
3. Ask
Send the token in the X-API-Token header, once every 30 seconds.

Response

GET /api/v1/price?currency=USD

{
  "currency": "USD",
  "price": "312.45",
  "updated_at": "2026-11-07T11:55:30Z",
  "next_request_at": "2026-11-07T12:01:00Z"
}

Prices are decimal strings: two decimals for fiat, eight for BTC. next_request_at is the earliest UTC time the same token may ask again.

Rate limit

One price request per token every 30 seconds. Asking earlier, or without a token, returns 429 Too Many Requests. When a token is rate limited the answer carries a Retry-After header and the same moment as retry_at:

HTTP/1.1 429 Too Many Requests
Retry-After: 20

{
  "error": "rate limited",
  "retry_at": "2026-11-07T12:01:00Z"
}

Where prices come from

The gateway polls the same exchanges and aggregators as the Haveno price node every 10 minutes. Each one votes, directly through its XMR markets or through XMR/BTC times its BTC price. Votes further than 5% from the median are thrown out and the rest are averaged, so a single broken or malicious source cannot move the price.

AED AMD AOA ARS AUD AZN BAM BDT BGN BHD BMD BOB BRL BTC CAD CHF CLP CNY COP CRC CZK DKK DOP EGP ETB EUR GBP GEL GHS GTQ HKD HNL HUF IDR ILS INR ISK JMD JOD JPY KES KHR KRW KWD KZT LKR MAD MDL MGA MMK MXN MYR NGN NOK NZD PEN PGK PHP PKR PLN PYG RON RUB SAR SEK SGD SVC THB TRY TWD UAH UGX USD UYU UZS VND XAF XOF ZAR ZMW

About

Why hidden services use it

Price APIs live on the clearnet, and many of them block or challenge visitors coming from Tor. A hidden service that wants to show Monero prices usually ends up building and deploying something outside Tor to get them: a clearnet jump box that polls the exchanges and passes the numbers back in. That is one more server to write, secure and pay for, and one more link between the service and a clearnet address.

xmrgateway removes that piece. It already does the polling and answers on an onion address, so the hidden service asks for prices over Tor like any other request. Nothing has to be implemented or deployed outside Tor.

The onion address to use:

http://7dlezsewiejhayu3sctmzjtbc7x7edrzgvx3tcfz2oxfz5ddoscioiid.onion

For everyone else

The same API is on the clearnet, with no exchange accounts, no API keys and no price feed of your own to run. One HTTP call is enough.

It is open source. The code is at github.com/RogueTeam/xmrgateway, so you can read it, run your own instance or send fixes.

The service is provided as is, without any guarantee of availability or accuracy. Check prices independently before relying on them for anything that matters.