Garant Exchange

Public API

Rates, offers and the guarantor's reserves in JSON — for rate aggregators, monitors and partner sites. No key, no sign-up, read only.

🔌 How to connect

Plain GET requests to the address below; answers are JSON in UTF-8. No key or sign-up needed.

https://garantp2p.com/public/v1/

⏱ Limits

Answers are cached for 30 s, so there is no point asking more often. Up to 60 requests a minute per IP; beyond that the answer is 429. Browser requests are allowed from any site (CORS).

🔢 Data format

Prices and limits are strings in the market's currency per one whole coin, e.g. "12700" or "85.5". Times are Unix seconds. A missing value is null.

GET /public/v1/markets

Open markets: currency, coins, payment methods, the limits of one deal and the pause if the guarantor has stopped new deals for a while.

Request

GET https://garantp2p.com/public/v1/markets

Example answer

{
  "coins": [
    {
      "key": "usdt_trc20",
      "symbol": "USDT",
      "network": "TRC20"
    },
    {
      "key": "usdt_bep20",
      "symbol": "USDT",
      "network": "BEP20"
    }
  ],
  "markets": [
    {
      "country": "uz",
      "currency": "UZS",
      "coins": [
        "usdt_trc20",
        "usdt_bep20"
      ],
      "methods": [
        {
          "key": "uzcard",
          "name": "Uzcard"
        },
        {
          "key": "humo",
          "name": "Humo"
        }
      ],
      "min_deal": "50000",
      "max_deal": "50000000",
      "paused": false,
      "paused_coins": []
    }
  ]
}

GET /public/v1/prices

A summary per coin of the market: the best buying price (buy — the cheapest seller) and selling price (sell — the buyer paying the most), medians, offer counts and the official rate.

Parameters

  • country — market code: uz, kz, kg, tj, tm, az, am, by, md, ru. Default uz.

Request

GET https://garantp2p.com/public/v1/prices?country=uz

Example answer

{
  "country": "uz",
  "currency": "UZS",
  "updated": 1790000000,
  "coins": {
    "usdt_trc20": {
      "buy": "12700",
      "sell": "12550",
      "buy_median": "12750",
      "sell_median": "12500",
      "sellers": 14,
      "buyers": 6,
      "official": "12620"
    }
  }
}

GET /public/v1/offers

Up to 50 offers anyone can take right now, best prices first: price, limits, payment methods, bank, the trader's reputation and a link that opens the offer in the bot.

Parameters

  • country — market code: uz, kz, kg, tj, tm, az, am, by, md, ru. Default uz.
  • side — sell — sellers (you buy from them), buy — buyers (you sell to them). Default sell.
  • coin — coin, e.g. usdt_trc20; without it, all coins of the market. Coin codes are in /markets.

Request

GET https://garantp2p.com/public/v1/offers?country=uz&side=sell&coin=usdt_trc20

Example answer

{
  "country": "uz",
  "side": "sell",
  "coin": "usdt_trc20",
  "updated": 1790000000,
  "offers": [
    {
      "id": 128,
      "side": "sell",
      "coin": "usdt_trc20",
      "country": "uz",
      "currency": "UZS",
      "price": "12700",
      "min": "200000",
      "max": "5000000",
      "methods": [
        {
          "key": "uzcard",
          "name": "Uzcard"
        }
      ],
      "bank": null,
      "trader": {
        "name": "Aziz",
        "level": "pro",
        "deals": 57,
        "rating": 4.9,
        "completion": 98,
        "verified": true,
        "kyc": true,
        "collateral_usd": 500
      },
      "url": "https://t.me/garant_p2p_exchange_bot?start=offer_128"
    }
  ]
}

GET /public/v1/transparency

The guarantor's wallets with balances, the latest completed deals, dispute results and traders' collateral — the same as on the Transparency page.

Request

GET https://garantp2p.com/public/v1/transparency

Example answer

{
  "wallets": [
    "…"
  ],
  "feed": [
    "…"
  ],
  "disputes": {
    "…": "…"
  },
  "collateral": {
    "traders": 12,
    "total": "6000",
    "paid_count": 0,
    "paid": "0"
  },
  "fund": null
}

GET /public/v1/rates.xml

The best offers for every coin, card system and direction in the export format of exchange monitors (BestChange XML): from is what the client gives, to is what they get, amount is the reserve, minamount and maxamount are the deal limits in the from currency. The guarantor's commission is already in the rate, the network fee is given in tofee. The file is built afresh on every request; the limit is 600 requests a minute per IP.

Currency codes follow the BestChange list: coins USDTTRC20, USDTBEP20, USDTTON, BTC, USDCSOL; cards UZCUZS (Uzcard), HUMOUZS (Humo), KSPBKZT (Kaspi), CARDUZS (Visa/Mastercard). Payment methods missing from that list are left out of the file.

Request

GET https://garantp2p.com/public/v1/rates.xml

Example answer

<?xml version="1.0" encoding="UTF-8"?>
<rates>
<item><from>HUMOUZS</from><to>USDTTRC20</to><in>12828.282829</in><out>1</out><amount>8450.5</amount><minamount>200000</minamount><maxamount>5000000</maxamount><tofee>2.5</tofee><param>manual, reg</param></item>
<item><from>USDTTRC20</from><to>HUMOUZS</to><in>1</in><out>12550</out><amount>36000000</amount><minamount>15.936255</minamount><maxamount>398.406374</maxamount><param>manual, reg</param></item>
</rates>

🧩 Rates widget for your site

A ready block with the best rates and an exchange button for your site, blog or channel. Paste the code into the page's HTML: the rates update by themselves, no key needed.

Parameters

  • country — market code: uz, kz, kg, tj, tm, az, am, by, md, ru. Default uz.
  • lang — widget language: ru, en, uz and the site's other languages. Default: the visitor's browser language.
  • coin — coin, e.g. usdt_trc20; without it, all coins of the market. Coin codes are in /markets.
  • ref — your Telegram ID from the referral programme: the button opens the bot with your link and you earn a share of the fee from those you invite. The ready code with your ID is in the Mini App: Profile → Referral programme.
  • theme — light for a light theme. Dark by default.
<iframe src="https://garantp2p.com/widget?country=uz&lang=en" width="360" height="260" loading="lazy" title="Garant Exchange" style="border:0;max-width:100%"></iframe>

⚠️ Errors

400 bad_country — no such market or it is closed; 400 bad_request — wrong side or coin; 429 slow_down — too many requests.

📄 Terms of use

The data is for reference and changes every minute; a deal is made only in the bot at the offer's price. When showing the data on your site, name the source with a link to garantp2p.com. Card numbers, wallets and traders' contacts are not in the API and never will be.

Start exchanging in a minute

Open the bot, pick your language and country and go straight to the offers.

✈️ Open in Telegram