피드로 돌아가기
Steam Regional Price Data: fetch 60 regions in one run for $1.05/1K
Dev.toDev.to
Backend

60개 지역 Steam 가격 행렬을 1K당 $1.05에 추출하는 고효율 스크래퍼 설계

Steam Regional Price Data: fetch 60 regions in one run for $1.05/1K

Devil Scrapes2026년 6월 3일10intermediate

Context

Steam의 비공식 REST API인 appdetails 엔드포인트는 단일 요청당 하나의 통화만 반환하는 구조임. IP 기반의 Geolocation 제한과 5분당 약 200회로 설정된 엄격한 Rate Limit으로 인해 대규모 지역별 가격 데이터 수집 시 429 에러 및 데이터 부정확성 발생함.

Technical Solution

  • 200개 요청 단위의 Batch 처리와 배치 간 60초 대기 및 요청 간 0.3초 지연을 적용한 Rate Limit 우회 설계
  • Geolocation 제한 지역(러시아, 중국 등) 대응을 위한 Apify Proxy 기반의 IP Rotation 및 Exponential Backoff 전략 도입
  • 외부 FX API 의존성을 제거하기 위해 US 가격을 벤치마크로 설정한 자체 환산 로직(Price Ratio 기반) 구현
  • Pydantic v2의 ConfigDict(extra="ignore")를 통한 API 스키마 변경 대응 및 데이터 무결성 검증
  • Null 값 배제를 위해 is_free, is_unavailable 필드를 First-class Boolean으로 설계한 Dense Data 모델 적용

- Rate Limit 대응을 위한 요청 간 지연 시간(Intra-batch delay) 및 배치 간 휴지기(Inter-batch sleep) 설정 검토 - IP 기반 접근 제한 해결을 위한 Proxy Rotation 및 429/5xx 에러 발생 시 세션 교체 전략 적용 - 외부 API 의존성을 낮추기 위해 내부 데이터 간의 상관관계를 이용한 자체 정규화 로직 검토 - Pydantic을 활용한 데이터 Validation 및 스키마 유연성 확보

원문 읽기