A lightweight, unauthenticated JSON endpoint that exposes the current MTProto proxy list for third-party integrations.
GET
/proxies.json
The endpoint returns either an object with proxies or a bare array. Current schema:
{
"updated_at": "2025-12-09T00:00:00Z",
"proxies": [
{
"location": "Singapore1",
"flag": "πΈπ¬",
"server": "213.35.101.202",
"domain": "mtpsg1.onetaplink.app",
"port": "12432",
"secret": "dd5a066251675f4263f8d8b931f72fff6c",
"ping": "115ms",
"speed": "Fast",
"status": "online",
"link": "tg://proxy?server=213.35.101.202&port=12432&secret=dd5a066251675f4263f8d8b931f72fff6c"
}
]
}
| Field | Description |
|---|---|
| updated_at | UTC timestamp when the list was generated. |
| proxies | Array of proxy entries. |
| location | Human-readable node name. |
| flag | Country flag emoji. |
| server | IPv4/hostname for MTProto (Apple devices use this). |
| domain | Optional domain; non-Apple devices prefer this when present. |
| port | MTProto port. |
| secret | MTProto secret. |
| ping | Latency string for display. |
| speed | Qualitative speed label. |
| status | online / slow / offline. |
| link | Ready-to-use Telegram deep-link; if missing, build it with tg://proxy?server={host}&port={port}&secret={secret}. |
fetch('/proxies.json', { cache: 'no-store' })
.then(res => res.json())
.then(data => {
const list = Array.isArray(data) ? data : data.proxies;
console.log('proxies', list);
});
curl -s https://www.mtproto.shop/proxies.json
cache: 'no-store' or short max-age; data may refresh frequently.proxies or array).updated_at; fall back to fetch time if absent.