Polymarket 出于监管要求和遵守国际制裁,对某些地理位置的订单下单进行严格限制。来自受限地区的订单将被直接拒绝。开发者建议:在构建应用程序前,务必验证用户 IP 位置,并在用户尝试交易前提供清晰反馈(如提示“您的地区暂不支持交易”)。这样可避免用户提交无效请求并提升体验。服务器基础设施
- 主服务器:eu-west-2(欧洲西部-2)
- 最近的非地理限制区域:eu-west-1(欧洲西部-1)
地理阻塞检查端点(Geoblock Endpoint)使用以下公共端点检查请求 IP 的地理资格(无需任何认证,任何人都可调用):
GET https://polymarket.com/api/geoblock
响应格式(JSON)
json
{
"blocked": boolean,
"ip": string,
"country": string,
"region": string
}
| 字段 | 类型 | 描述 |
|---|---|---|
| blocked | boolean | 是否被禁止下单(true 表示受限) |
| ip | string | 检测到的 IP 地址 |
| country | string | ISO 3166-1 alpha-2 国家代码 |
| region | string | 地区/州代码(若适用) |
示例响应:
json
{
"blocked": true,
"ip": "123.45.67.89",
"country": "KR",
"region": ""
}
完全受限国家(Blocked Countries)以下 33 个国家 完全禁止在 Polymarket 上提交订单(包括 CLOB API 下单):
| 国家代码 | 国家名称 |
|---|---|
| AU | 澳大利亚 |
| BE | 比利时 |
| BY | 白俄罗斯 |
| BI | 布隆迪 |
| CF | 中非共和国 |
| CD | 刚果(金夏沙) |
| CU | 古巴 |
| DE | 德国 |
| ET | 埃塞俄比亚 |
| FR | 法国 |
| GB | 英国 |
| IR | 伊朗 |
| IQ | 伊拉克 |
| IT | 意大利 |
| KP | 朝鲜 |
| LB | 黎巴嫩 |
| LY | 利比亚 |
| MM | 缅甸 |
| NI | 尼加拉瓜 |
| PL | 波兰 |
| RU | 俄罗斯 |
| SG | 新加坡 |
| SO | 索马里 |
| SS | 南苏丹 |
| SD | 苏丹 |
| SY | 叙利亚 |
| TH | 泰国 |
| TW | 台湾 |
| UM | 美国本土外小岛屿 |
| US | 美国 |
| VE | 委内瑞拉 |
| YE | 也门 |
| ZW | 津巴布韦 |
部分受限地区(Blocked Regions)即使所在国家整体可访问,以下特定地区也被完全限制:
| 国家 | 地区 | 地区代码 |
|---|---|---|
| 加拿大 (CA) | 安大略省 | ON |
| 乌克兰 (UA) | 克里米亚 | 43 |
| 乌克兰 (UA) | 顿涅茨克 | 14 |
| 乌克兰 (UA) | 卢甘斯克 | 09 |
开发者集成示例(Usage Examples)TypeScript / JavaScript
typescript
interface GeoblockResponse {
blocked: boolean;
ip: string;
country: string;
region: string;
}
async function checkGeoblock(): Promise<GeoblockResponse> {
const response = await fetch("https://polymarket.com/api/geoblock");
if (!response.ok) {
throw new Error("Geoblock check failed");
}
return response.json();
}
// 使用示例(在下单前调用)
const geo = await checkGeoblock();
if (geo.blocked) {
console.log(`Trading not available in ${geo.country}${geo.region ? ` (${geo.region})` : ''}`);
// 显示错误提示给用户
} else {
console.log("Trading available, proceeding to place order...");
// 继续提交订单
}
Python 示例
python
import requests
def check_geoblock() -> dict:
response = requests.get("https://polymarket.com/api/geoblock")
response.raise_for_status() # 抛出 HTTP 错误
return response.json()
# 使用示例
geo = check_geoblock()
if geo["blocked"]:
print(f"Trading not available in {geo['country']}{(' (' + geo['region'] + ')') if geo['region'] else ''}")
else:
print("Trading available")
核心提醒(开发者专属):
- 来自受限 IP 的任何下单请求(POST /order 等)都会被 CLOB API 直接拒绝,返回 403 Forbidden 或类似错误。
- 建议在前端/后端预检查 geoblock 端点,避免用户浪费 gas 或遇到硬拒绝。
- 地理限制基于IP 地址检测,可能因 VPN、代理或移动网络而变化。
- 如果你的用户主要在韩国(KR),当前文档显示韩国未列入完全受限国家列表,但请实时调用 geoblock 端点确认(因为监管政策可能随时变化)。
这份地理限制文档是 CLOB API 开发中必须遵守的部分。集成 geoblock 检查,能显著提升应用的用户体验和合规性。
