전체 글
API 레퍼런스Polymarket API요청 한도CLOB

Polymarket API 요청 한도: 완벽 레퍼런스

Polymarket은 요청 한도를 여러 페이지에 걸쳐, 완전히 다른 두 시스템으로, 거의 아무도 예상하지 못하는 10초 구간 기준으로 공개합니다. 그 전부를 표 하나로 모았습니다. 한도를 넘으면 실제로 무슨 일이 일어나는지도 함께 다룹니다.

11분 분량2026년 9월 24일 업데이트

Polymarket에 초당 몇 개의 요청을 보낼 수 있을까?라는 간단한 질문에 답하려 해 본 적이 있다면, 간단한 답이 없다는 것을 알게 되었을 겁니다. 한도는 서로 다른 두 시스템에 나뉘어 있고, 각기 다른 페이지에 공개되어 있으며, 대부분의 API가 쓰는 초당 또는 분당 수치가 아니라 10초 구간으로 표현됩니다.

특정 경로의 한도는 Polymarket API 레퍼런스의 엔드포인트별 페이지에서도 확인할 수 있습니다.

이 페이지는 문서화된 모든 한도를 한곳에 모으고, 두 시스템을 설명하고, 한도를 넘었을 때 실제로 무슨 일이 일어나는지 보여줍니다. 모든 수치는 Polymarket 공식 문서에서 가져왔으며 2026년 9월 기준입니다.

짧은 답

10으로 나누세요. 1,500 req / 10s라는 한도는 초당 150회 요청입니다. Polymarket의 전역 상한은 15,000 req / 10s(1,500 rps)이지만, 모든 엔드포인트 계열에는 그보다 훨씬 낮은 한도가 있으며, 여러분을 멈춰 세우는 것은 엔드포인트 한도입니다.

서로 다른 두 가지 요청 한도 시스템

대부분의 개발자가 여기서 걸립니다. Polymarket은 서로 독립적인 두 개의 제한 장치를 운영하며, 하나의 한도 아래에 있다고 해서 다른 하나로부터 보호받지 못합니다.

Cloudflare IP 한도서명자별 토큰 버킷
적용 범위IP 주소서명자 주소
적용 대상모든 API와 엔드포인트CLOB 주문 + 취소 요청만
방식슬라이딩 윈도우토큰 버킷 (충전 속도 + 버스트)
한도 초과 시요청이 지연되어 대기열에 들어감 (속도 제한)429로 요청 거부
달라지는 기준엔드포인트30일 거래량 등급
두 제한 장치는 누적 적용됩니다. 읽기 위주 봇은 보통 첫 번째만 만나고, 트레이딩 봇은 둘 다 만납니다.

거부가 아니라 속도 제한

Cloudflare 계층에 대해 이해해야 할 가장 유용한 사실입니다. IP 기반 한도를 넘으면 Polymarket은 요청을 바로 거부하지 않고 지연시켜 대기열에 넣습니다. 429가 쏟아지는 것이 아니라 지연 시간이 조용히 올라가는 것을 보게 됩니다. 멀쩡해 보이지만 응답 시간이 40ms에서 3s로 늘어난 봇은 대개 요청 한도를 넘은 봇입니다.

Gamma API 요청 한도

Base URL https://gamma-api.polymarket.com. Gamma는 마켓과 이벤트 메타데이터를 제공합니다. 플랫폼을 처음 살펴볼 때 대부분 가장 먼저 호출하는 엔드포인트들입니다.

엔드포인트한도초당
일반4,000 req / 10s400 rps
/events500 req / 10s50 rps
/markets300 req / 10s30 rps
/markets + /events 목록900 req / 10s90 rps
/comments200 req / 10s20 rps
/tags200 req / 10s20 rps
/public-search350 req / 10s35 rps

/markets가 가장 먼저 부딪히는 엄격한 한도입니다

10초에 300회인 /markets는 플랫폼 전체에서 흔히 쓰이는 엔드포인트 중 가장 제한이 엄격하며, 그 위의 Gamma 일반 한도보다 13배 엄격합니다. 루프로 전체 마켓 목록을 페이지네이션한다면 가장 먼저 여기서 문제가 생깁니다.

Data API 요청 한도

Base URL https://data-api.polymarket.com. 포지션, 거래 내역, 포트폴리오 데이터를 다룹니다. 이 API가 Gamma나 CLOB보다 얼마나 엄격한지 주목하세요. 일반 한도는 10초에 1,000회로 Gamma의 4분의 1입니다.

엔드포인트한도초당
일반1,000 req / 10s100 rps
/trades200 req / 10s20 rps
/positions150 req / 10s15 rps
/closed-positions150 req / 10s15 rps
상태 확인 (/ok)100 req / 10s10 rps

Data API v2

Data API v2는 2026년 9월 4일 https://data-api.polymarket.com/v2에 출시되었으며 자체 한도를 가집니다. v1도 여전히 동작하지만 동결되었습니다. 새 엔드포인트와 필드는 v2에만 추가됩니다.

엔드포인트한도초당
일반 (모든 /v2 엔드포인트)800 req / 10s80 rps
/v2/trades300 req / 10s30 rps
/v2/positions, /v2/positions/combos200 req / 10s20 rps
/v2/activity, /v2/activity/combos200 req / 10s20 rps
/v2/prices-history200 req / 10s20 rps
/v2/status100 req / 10s10 rps

가격 기록은 호스트가 바뀌고 5배 엄격해졌습니다

data 호스트의 GET /v2/prices-history가 CLOB 호스트의 경로를 대체합니다. CLOB 버전은 10초에 1,000회를 허용했지만 v2 경로는 200회만 허용합니다. 호출만 옮기고 속도 조절을 옮기지 않으면 다섯 배 빨리 상한에 도달합니다. v2는 또한 429와 Retry-After로 부하를 알리며, 불투명한 커서로 페이지네이션합니다. offset은 없습니다.

CLOB API 요청 한도

Base URL https://clob.polymarket.com. 오더북 그 자체입니다. CLOB은 Polymarket API 중 일반 허용량이 가장 높지만(10초에 9,000회), 한도가 크게 다른 네 그룹으로 나뉩니다.

일반

엔드포인트한도초당
일반9,000 req / 10s900 rps
잔액 허용량 GET200 req / 10s20 rps
잔액 허용량 UPDATE50 req / 10s5 rps

마켓 데이터

여기서 주목할 패턴은 단수형 엔드포인트는 10초에 1,500회, 복수형 배치 엔드포인트는 10초에 500회라는 점입니다. 배치 호출 한 번이 여러 토큰을 처리한다는 것을 기억하기 전까지는 하향 조정처럼 보입니다. 배치는 요청당 3배 비싸지만 호출마다 훨씬 많은 일을 합니다. 항상 /book 루프보다 /books를 선택하세요.

엔드포인트한도초당
/book1,500 req / 10s150 rps
/books500 req / 10s50 rps
/price1,500 req / 10s150 rps
/prices500 req / 10s50 rps
/midpoint1,500 req / 10s150 rps
/midpoints500 req / 10s50 rps
/prices-history1,000 req / 10s100 rps
마켓 틱 크기200 req / 10s20 rps

원장

엔드포인트한도초당
/trades, /orders, /notifications, /order900 req / 10s90 rps
/data/orders500 req / 10s50 rps
/data/trades500 req / 10s50 rps
/notifications125 req / 10s12.5 rps

인증

엔드포인트한도초당
API 키 엔드포인트100 req / 10s10 rps

거래: 버스트와 지속

거래 엔드포인트만 Cloudflare 한도가 두 개입니다. 짧은 급증을 위한 버스트 한도와 10분 단위로 측정하는 지속 한도입니다. 두 한도 모두 지켜야 합니다.

엔드포인트버스트지속
POST /order5,000 req / 10s120,000 req / 10 min
DELETE /order5,000 req / 10s120,000 req / 10 min
POST /orders2,000 req / 10s21,000 req / 10 min
DELETE /orders2,000 req / 10s15,000 req / 10 min
DELETE /cancel-all250 req / 10s6,000 req / 10 min
DELETE /cancel-market-orders1,500 req / 10s21,000 req / 10 min

10초에 250회인 DELETE /cancel-all은 짚고 넘어갈 가치가 있습니다. 재호가 주기마다 cancel-all을 호출하는 마켓 메이커는 이 한도를 빠르게 소진하며, 10분에 6,000회라는 지속 한도는 평균 초당 cancel-all 호출 10회에 불과합니다.

Bridge, Relayer, 그 밖의 모든 것

엔드포인트한도
일반 요청 제한 (전역 상한)15,000 req / 10s
상태 확인 (/ok)100 req / 10s
Bridge API (https://bridge.polymarket.com)50 req / 10s
Relayer /submit25 req / 1 min
User PNL API200 req / 10s

Relayer 한도는 예외적입니다

Relayer /submit은 10초가 아니라 분 단위로 측정되는 유일한 문서화된 한도이며, 분당 25회로 플랫폼에서 단연 가장 엄격한 수치입니다. relayer를 통해 트랜잭션을 제출한다면 약 2.4초에 한 번 제출하는 셈입니다.

서명자별 토큰 버킷 (CLOB 거래)

Cloudflare와 별도로, Polymarket은 CLOB 주문 및 취소 요청을 서명자별 토큰 버킷으로 평가합니다. 각 서명자 주소는 주문 버킷과 취소 버킷을 하나씩 가지며, 한쪽을 소비해도 다른 쪽에는 영향이 없습니다. Cloudflare 계층과 달리 이 한도를 넘으면 실제 429가 반환됩니다.

요청은 각각 1단위로 세어지는 것이 아니라 토큰을 소비합니다:

버킷요청토큰 비용
주문POST /order1
주문POST /orders배치 내 주문 수
취소DELETE /order1
취소DELETE /orders제출한 주문 ID 수
취소DELETE /cancel-all1 + 실제로 취소된 주문 수
취소DELETE /cancel-market-orders1 + 취소된 일치 주문 수

배치는 전부 아니면 전무입니다

배치는 버킷에 모든 항목을 처리할 만큼 토큰이 있을 때만 받아들여집니다. 그렇지 않으면 요청 전체가 거부되고 아무것도 처리되지 않습니다. 토큰 비용이 등급의 버스트 용량을 넘는 배치는 아무리 기다려도 받아들여지지 않으므로 나누어야 합니다.

거래량 등급

버킷 크기는 최근 30일 동안의 메이커 지갑 누적 거래량에 따라 정해집니다. 등급 배정은 3시간마다 갱신됩니다.

등급30일 거래량주문 속도/초주문 버스트취소 속도/초취소 버스트
Standard—406080120
Copper$30,000+6090120180
Bronze$50,000+80120160240
Silver$100,000+200300400600
Gold$500,000+4006008001,200
Platinum$2.5M+4506759001,350
Diamond$5M+5257871,0501,575
Elite$10M+6009001,2001,800
Standard, Copper, Bronze, Silver, Gold 등급은 취소 잔액이 음수가 될 수 있고, Platinum, Diamond, Elite는 0이 하한입니다.

전체 버스트가 얼마나 지속되는지는 burst_seconds = burst / rate_per_sec로 계산하세요. Standard 서명자라면 60 / 40, 즉 최고 속도로 1.5초 동안 주문을 제출한 뒤 초당 40회의 충전 속도로 제한됩니다.

요청 한도 헤더 읽기

서명자별 제한 장치는 평가한 모든 요청에 헤더를 반환합니다. 추가 API 호출 없이 예산을 모니터링하는 가장 저렴한 방법입니다.

헤더의미
Poly-RateLimit-Remaining이 요청 후 해당 버킷의 토큰 잔액
Poly-RateLimit-Reset현재 대기 기간이 끝나는 Unix 타임스탬프
Poly-RateLimit-Tier적용된 등급
Retry-After초 단위 재시도 지연. 429 응답에만 포함
Poly-RateLimit-Warning실제 적용 시 요청이 거부되었을 경우 true

Poly-RateLimit-Reset은 충전 완료 시각이 아닙니다

429에서 이 값은 버킷이 가득 차는 시각이 아니라 방금 시도한 요청에 충분한 토큰이 생기는 시각을 알려줍니다. 보통 생각보다 오래 기다릴 필요가 없습니다. 또한 음수 취소 잔액을 허용하는 등급에서는 cancel-all 후 Poly-RateLimit-Remaining이 음수가 될 수 있습니다.

429를 제대로 처리하기

올바른 재시도 전략은 어떤 제한 장치에 걸렸는지에 따라 다르며, 잘못하면 상황이 더 나빠집니다. Retry-After가 있으면 따르고, 없으면 지터를 포함한 지수 백오프로 대체하세요. 지터는 중요합니다. 지터가 없으면 모든 워커가 같은 순간에 재시도해 곧바로 다시 한도에 걸립니다.

const MAX_RETRIES = 5;

async function polyFetch(url: string, init?: RequestInit): Promise<Response> {
  for (let attempt = 0; attempt <= MAX_RETRIES; attempt++) {
    const res = await fetch(url, init);

    // Watch the budget even on success — this is your early warning.
    const remaining = res.headers.get("Poly-RateLimit-Remaining");
    if (remaining !== null && Number(remaining) < 10) {
      console.warn(`Low token budget: ${remaining} (tier ${res.headers.get("Poly-RateLimit-Tier")})`);
    }

    // Warning mode: not rejected yet, but it would have been.
    if (res.headers.get("Poly-RateLimit-Warning") === "true") {
      console.warn("Request would be rejected under live enforcement — slow down.");
    }

    if (res.status !== 429) return res;
    if (attempt === MAX_RETRIES) return res;

    // Prefer the server's own answer, else exponential backoff.
    const retryAfter = res.headers.get("Retry-After");
    const baseMs = retryAfter
      ? Number(retryAfter) * 1000
      : Math.min(2 ** attempt * 250, 8000);

    // Full jitter — spreads a fleet of workers out instead of resynchronising them.
    await new Promise((r) => setTimeout(r, Math.random() * baseMs));
  }

  throw new Error("unreachable");
}

너무 큰 배치를 그대로 재시도하지 마세요

배치의 토큰 비용이 등급의 버스트 용량보다 크다면 재시도는 소용없습니다. 단일 요청으로는 절대 받아들여지지 않습니다. 나누세요. 백오프가 영원히 반복되는 유일한 경우입니다.

설계 단계에서 한도 아래에 머물기

  • 루프 대신 배치를 사용하세요. /book 호출 50번 대신 /books 호출 한 번이면, 10초에 1,500회 예산에서 50회를 쓰는 대신 10초에 500회 예산에서 1회만 씁니다. 여유가 17배 늘어납니다.
  • 메타데이터를 캐시하세요. /markets의 마켓 메타데이터는 마켓 수명 동안 거의 바뀌지 않지만, /markets는 10초에 300회로 Gamma에서 가장 엄격한 한도를 가집니다. 한 번 가져와 캐시하고 반복 루프에서 다시 요청하지 마세요.
  • 실시간 상태에는 WebSocket을 사용하세요. 타이머로 /book을 폴링하는 것이 요청 예산을 소모하는 가장 흔한 방법입니다. 대신 스트림을 구독하고 서버가 변경 사항을 푸시하게 하세요.
  • 예약 작업에 지터를 추가하세요. 모든 워커가 정확히 정각에 깨어나면 평균 요청률을 훨씬 넘는 동시 급증이 생깁니다. 시작 오프셋을 무작위로 정하세요.
  • 오류율만이 아니라 지연 시간을 지켜보세요. Cloudflare는 거부하지 않고 속도를 늦추므로, p99 지연 시간 상승이 IP 한도를 넘었다는 첫 신호입니다. 오류로 나타나기 훨씬 전입니다.
  • 헤더를 추적하세요. Poly-RateLimit-Remaining은 읽는 데 비용이 들지 않으며 남은 예산을 정확히 알려줍니다.

요청 한도는 데이터 접근과 같지 않습니다

마지막으로 분명히 해 둘 것이 있습니다. 저희가 가장 자주 보는 오해이기 때문입니다. 어떤 요청 한도 등급도 과거 오더북 깊이를 제공하지 않습니다. Polymarket API는 오더북의 현재 상태를 제공합니다. 지난 화요일 14:03:17에 오더북이 어땠는지에 대한 과거 아카이브는 노출하지 않으며, 마켓 결과가 확정되면 오더북은 404를 반환합니다.

이는 속도 제한 문제가 아니라 구조적 공백이며, 어떤 백오프 로직으로도 해결되지 않습니다. 전략을 백테스트하려면 누군가 당시에 기록해 둔 특정 시점 스냅샷이 필요합니다. 바로 그것을 제공하기 위해 PolyTest가 존재합니다. 전체 오더북 깊이, 1초 미만 해상도, 누락 없는 Polymarket 암호화폐 Up/Down 마켓의 과거 스냅샷 240M+개.

플랜요청 / 분버스트 / 초기록
Free302최근 마켓
Builder2501214일
Pro75040전체 기록
Enterprise맞춤맞춤전체 기록 + 대량 내보내기
비교용 PolyTest 자체 한도입니다. GET /api/v1/limits로 프로그래밍 방식으로 확인하세요. 요청 한도와 요금제를 참고하세요.

자주 묻는 질문

Polymarket API의 초당 요청 한도는 얼마인가요?
Polymarket은 10초 구간 기준으로 한도를 공개하므로 10으로 나누세요. 전역 상한은 10초에 15,000회(1,500 rps)이지만, 엔드포인트별 한도가 훨씬 낮고 그것이 실제 제약입니다. CLOB /book과 /price는 10초에 1,500회(150 rps), Gamma /markets 엔드포인트는 10초에 300회(30 rps), Data API /positions 엔드포인트는 10초에 150회(15 rps)를 허용합니다.
요청 한도를 넘으면 Polymarket이 429를 반환하나요?
어떤 제한 장치에 걸렸는지에 따라 다릅니다. Cloudflare IP 기반 한도는 요청을 거부하지 않고 지연시켜 대기열에 넣으므로, 오류 대신 지연 시간 상승을 보게 됩니다. CLOB 주문 및 취소 엔드포인트의 별도 서명자별 토큰 버킷은 429 Too Many Requests를 반환하며, 재시도 전 최소 지연 시간을 알려주는 Retry-After 헤더를 함께 보냅니다.
Polymarket CLOB API의 요청 한도는 어떻게 되나요?
CLOB 일반 한도는 10초에 9,000회입니다. 마켓 데이터 엔드포인트 /book, /price, /midpoint는 각각 10초에 1,500회, 배치 버전인 /books, /prices, /midpoints는 10초에 500회를 허용합니다. 원장 엔드포인트는 10초에 900회입니다. 거래 엔드포인트에는 버스트와 지속 한도가 모두 있습니다. POST /order는 버스트 10초에 5,000회, 지속 10분에 120,000회를 허용합니다.
Polymarket Gamma API의 요청 한도는 어떻게 되나요?
Gamma API 일반 한도는 10초에 4,000회입니다. 개별 엔드포인트는 더 엄격합니다. /events는 10초에 500회, /markets는 10초에 300회, /markets + /events 목록 합산은 10초에 900회, /public-search는 10초에 350회, /comments와 /tags는 각각 10초에 200회입니다. /markets 한도는 플랫폼에서 흔히 쓰이는 한도 중 가장 엄격합니다.
Polymarket 요청 한도는 IP 주소 기준인가요, API 키 기준인가요?
주요 Cloudflare 한도는 API 키가 아니라 IP 주소 기준이므로, 하나의 IP 뒤에 있는 여러 키는 하나의 예산을 공유합니다. CLOB 주문 및 취소 엔드포인트의 별도 토큰 버킷 한도는 서명자 주소 기준이며, 메이커 지갑의 30일 거래량 등급에 따라 크기가 정해집니다.
API로 Polymarket 과거 오더북 데이터를 받을 수 있나요?
아니요. Polymarket API는 현재 마켓 상태만 제공합니다. 과거 오더북 깊이 아카이브가 없으며, 결과가 확정된 마켓의 오더북은 404를 반환합니다. 백테스팅에는 마켓이 진행되는 동안 기록된 특정 시점 스냅샷이 필요합니다. PolyTest는 Polymarket 암호화폐 Up/Down 마켓에 대해 그런 스냅샷 240M+개를 전체 8단계 오더북 깊이와 1초 미만 해상도로 제공합니다.

Polymarket이 보관하지 않는 과거 데이터를 확보하세요

PolyTest는 Polymarket 암호화폐 Up/Down 마켓을 실시간으로 기록합니다. 8단계 오더북 깊이와 1초 미만 단위 타임스탬프를 갖춘 240M+개의 스냅샷을 제공하며, 결과가 확정된 마켓도 보존합니다. 3일 무료 체험으로 시작하세요.

더 읽어보기