피드로 돌아가기
GitHub's Stargazers API Caps at 40,000. Here's How Star-History Tools Fake the Rest
Dev.toDev.to
Frontend

API 제한 40k 건 돌파를 위한 Sample-and-Anchor 기반 시각화 설계

GitHub's Stargazers API Caps at 40,000. Here's How Star-History Tools Fake the Rest

SEN LLC2026년 4월 24일9intermediate

Context

GitHub Stargazers API의 최대 호출 가능 페이지가 400페이지(약 40,000건)로 제한된 기술적 제약 존재. 20만 건 이상의 Star를 보유한 대형 저장소의 성장 곡선을 그리기 위해 전체 데이터를 fetch 하는 방식은 불가능한 구조.

Technical Solution

  • application/vnd.github.star+json Accept Header를 활용하여 불필요한 유저 정보를 제외하고 starred_at 타임스탬프만 추출하는 데이터 최적화
  • Link Header의 rel="last" 값을 파싱하여 추가 요청 없이 전체 데이터 규모를 즉시 파악하는 효율적 페이지 계산
  • HARD_PAGE_LIMIT(400) 내에서 evenSample 로직을 통해 24개의 페이지를 균등하게 추출하여 API 호출 횟수를 최소화하는 Sampling 전략
  • stargazers_count API 값과 현재 시간을 우측 끝점에 고정하는 Anchor 기법을 적용하여 샘플링 데이터와 실제 총합 사이의 간극을 메우는 보간법 설계
  • localStorage 기반의 24시간 TTL 캐싱 구조와 Schema Versioning(gsh:v1:)을 도입하여 중복 요청 방지 및 데이터 무결성 확보
  • 서버리스 Browser-only 아키텍처 채택으로 Personal Access Token(PAT)의 클라이언트 측 저장 및 보안성 강화

1. API Pagination 제한 확인 및 `rel="last"` 헤더를 통한 전체 규모 선파악

2. 대량 데이터 시각화 시 전수 조사 대신 균등 샘플링 및 엔드포인트 앵커링(Anchoring) 검토

3. 외부 API 연동 시 클라이언트 사이드 캐싱 및 버전 관리 스키마 도입

원문 읽기