LLM API 가격 비교: 7개 제공업체를 아우르는 단일 스키마로 1,000개당 $5.05에 해결하기
요약
OpenAI, Anthropic 등 7개 주요 LLM 제공업체의 파편화된 API 가격 정보를 통합하여 100만 토큰당 USD 기준으로 정규화하는 자동화 방법을 소개합니다. 실시간으로 변하는 모델 가격을 프로그래밍 방식으로 스크래핑하여 FinOps 및 비용 최적화에 활용하는 기술적 접근법을 다룹니다.
핵심 포인트
- LLM 제공업체들은 공식 가격 API를 제공하지 않음
- 7개 주요 업체의 서로 다른 데이터 형식을 단일 스키마로 통합
- Cloudflare 등 보안 솔루션을 우회하는 스크래핑 기술 필요
- 모든 가격 데이터를 100만 토큰당 USD로 정규화하여 비교 가능하게 구축
빠른 답변: LLM 가격 책정을 위한 통합된 공식 API는 존재하지 않습니다. OpenAI, Anthropic, Google, Mistral, Groq, Together AI, 그리고 DeepSeek는 각각 Webflow 페이지, Next.js RSC 페이로드, Docusaurus 마크다운 테이블, Cloudflare로 보호되는 SPA 등 서로 다른 형식으로 가격을 게시합니다. LLM Pricing Monitor Apify Actor는 단 한 번의 실행으로 이들 모두를 스크래핑하여 100만 토큰당 통일된 데이터셋을 생성합니다. Pydantic으로 검증된 (제공업체 × 모델 × 티어)당 하나의 행이 생성되며, 비용은 행당 $0.005 — 즉, 1,000행당 약 $5.05입니다.
몇 달마다 누군가가 GPT-4o 대 Claude 대 Gemini의 가격 비교 스크린샷을 트위터에 올립니다. 하지만 72시간 이내에 그 정보는 쓸모없게 됩니다. 한 제공업체는 일괄 할인(batch discount)을 도입하고, 다른 곳은 티어(tier) 이름을 변경하며, DeepSeek는 가격을 다시 절반으로 낮춥니다. 숫자가 이미 틀렸음에도 불구하고 해당 스크린샷은 계속해서 공유됩니다.
비용을 고려한 LLM 라우터(router), FinOps 대시보드를 구축 중이거나, 단순히 "현재 128k 컨텍스트 워크로드에 가장 저렴한 제공업체는 어디인가"라는 질문에 답해야 한다면 실시간 데이터가 필요합니다. 여기 프로그래밍 방식으로 데이터를 가져오는 방식이 어떻게 이루어지는지, 그리고 왜 단순히 몇 번의 requests.get() 호출만으로는 부족한지에 대해 설명합니다.
LLM API 가격 책정이란 무엇인가? 🔎
LLM API 가격 책정이란 각 추론(inference) 제공업체가 API를 통해 언어 모델을 실행할 때 부과하는 토큰당 요금입니다. 업계는 대략적인 표준으로 수렴했습니다. 즉, 입력 토큰 (input tokens) (사용자의 프롬프트)과 출력 토큰 (output tokens) (완성된 텍스트)에 대해 각각 비용을 지불하며, 이는 100만 토큰당 USD로 표기됩니다. 일부 제공업체는 캐시된 입력 읽기 (cached input reads), 캐시 쓰기 (cache writes), 그리고 표준 경로보다 50% 더 저렴할 수 있는 배치 API (batch API) 실행에 대해 별도의 가격을 게시하기도 합니다.
2026년 1분기 기준, 상업적 배포에서 추론 매출의 대부분을 차지하는 7개 제공업체는 OpenAI, Anthropic, Google (Gemini API), Mistral, Groq, Together AI, 그리고 DeepSeek입니다. 이들의 결합된 가격 체계가 이 Actor가 수집하는 데이터입니다.
LLM 제공업체들은 가격 책정 API를 가지고 있는가? 🤔
아니요. 7개 업체 중 그 어느 곳도 인증된 API 엔드포인트를 통해 가격 정보를 공개하지 않습니다. 가격 정보는 공개 웹 페이지에 존재하지만, 각 업체는 완전히 다른 스택을 사용합니다:
| 제공업체 | 가격 페이지 형식 |
|---|---|
| OpenAI | Cloudflare 기반 SPA (cf-mitigated: challenge가 대부분의 일반 HTTP에서 발생) |
| ... |
7개의 서로 다른 페이지 구조, 3가지의 서로 다른 견적 방식 (1K당 vs 1M당 vs 1B당), 그리고 OpenAI를 실행할 때마다 통과해야 하는 하나의 Cloudflare 챌린지(challenge)가 있습니다. 이것이 실제 작업의 핵심입니다.
데이터의 형태 📊
각 행은 하나의 (제공업체 × model_id × 티어) 트리플(triple)입니다. 모든 가격 필드는 데이터셋에 도달하기 전에 100만 토큰당 USD로 정규화됩니다. 파서(parser)가 1K당 컬럼 헤더를 감지하면 상위 단계에서 1,000을 곱합니다. 실제 출력 행의 예시는 다음과 같습니다:
{
"provider": "anthropic",
"provider_display_name": "Anthropic",
...
16개의 필드로 구성되며 매번 동일한 형태를 유지합니다. pricing_unit은 항상 "per_1m_tokens"이므로, 산술 연산을 수행하기 전에 견적 방식을 따로 확인할 필요가 없습니다. 사용자의 측에서 제공업체별 정규화 작업을 할 필요 없이 Pandas 데이터프레임(dataframe), BigQuery 로드 작업, 또는 스프레드시트 피벗 테이블로 바로 입력할 수 있습니다.
단순한 접근 방식 (그리고 그것이 실패하는 이유) 🔥
가장 명백한 첫 번째 단계는 각 가격 URL을 식별하고, requests.get()을 호출하여 HTML을 파싱한 뒤 행들을 하나로 묶는 것입니다. 하지만 이 방식은 첫 번째 단계부터, 7개 업체 중 최소 2개 업체에서 매번 실패합니다.
OpenAI와 Cloudflare. openai.com/api/pricing/은 자신을 Python이라고 밝히는 모든 Python 클라이언트에 대해 cf-mitigated: challenge와 함께 HTTP 403 오류를 반환합니다. 우리는 curl-cffi 브라우저 사칭 프로필(Chrome 131, Chrome 124, Firefox 147, Safari 180)을 로테이션하여 이를 해결합니다. 이를 통해 TLS 핸드셰이크(handshake)가 실제 브라우저처럼 보이게 만듭니다. TLS 계층에서는 실제로 브라우저이기 때문입니다. 우리는 Apify 주거용 프록시(residential proxies)를 스티키 세션(sticky sessions)과 함께 스레드로 구성하고, 429/503 오류 발생 시 Retry-After를 준수하며 지수 백오프(exponential backoff) 방식으로 재시도합니다. 챌린지가 여전히 해결되지 않으면, 차단 사실을 로그로 남기고 부분 성공(partial-success) 상태 메시지를 발행한 뒤 나머지 6개 업체에 대한 작업을 계속합니다.
Mistral의 RSC 페이로드 (payload). Mistral은 React Server Components (RSC) 하이드레이션 번들(hydration bundle) 내부에 데이터를 인라인(inline)으로 포함합니다. 단순한 HTML 파서(parser)는 테이블을 찾지 못해 0개의 행을 반환하게 됩니다. 우리는 정규 표현식(regex)을 통해 RSC 페이로드에서 가격 JSON을 추출합니다.
1K당 vs 1M당 정규화 (normalisation). 제공업체마다 인용 단위가 다릅니다. 단위 감지를 건너뛰는 파서는 1,000배 차이가 나는 숫자를 조용히 생성하게 됩니다. 우리는 각 제공업체의 컬럼 헤더(column-header) 텍스트를 기준으로 단위 감지를 고정하며, 매 배포 시 캡처된 픽스처(fixtures)를 통해 테스트합니다.
파서 계약 드리프트 (Parser contract drift). 가격 페이지는 매달 구조가 변경됩니다. 우리는 실패 시 명확하게 알립니다. 즉, 0개의 행이 포함된 '성공(green run)' 상태가 아니라, '빈 데이터셋 + 0이 아닌 종료 코드(non-zero exit)'를 반환합니다. 모든 408/429/5xx 에러는 지수 백오프 (exponential backoff, 2초 시작, 2배씩 증가, 최대 30초 제한, 최대 5회 시도)를 트리거합니다. 제공업체별 격리(isolation) 덕분에 하나의 파서가 고장 나더라도 나머지 6개의 파서가 중단되지 않습니다.
액터 (The Actor) ⚙️
액터의 위치는 다음과 같습니다: apify.com/DevilScrapes/llm-pricing-monitor
Apify Console에서 입력 양식을 열고 Start를 클릭하세요. 7개 제공업체 모두 별도의 설정이 필요하지 않습니다. 또는 프로그래밍 방식으로 호출할 수 있습니다:
from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
...
입력 파라미터 (Input parameters):
| 필드 (Field) | 타입 (Type) | 기본값 (Default) | 설명 (Description) |
|---|---|---|---|
providers | array | [] (7개 전체) | 하위 집합: openai, anthropic, google, mistral, groq, together, deepseek |
| ... |
Cloudflare 차단 위험 없이 빠르게 실행하려면 Groq와 DeepSeek으로 제한하십시오:
{
"providers": ["groq", "deepseek"],
"includeLegacyModels": false,
...
유스케이스 (Use cases) 💡
FinOps 비용 대시보드. 매주 실행을 예약하고, 지정된 Apify 데이터셋(dataset)에 기록한 뒤, 모델별 input_usd_per_1m의 시간 경과에 따른 차트를 작성하세요. CloudZero의 클라우드 비용 현황 보고서 (State of Cloud Cost report)에 따르면 AI 인프라는 대부분의 SaaS 기업에서 가장 빠르게 성장하는 항목으로 지목되었습니다. 월 10만 달러의 LLM 청구 금액에서 10%를 절감하는 것만으로도 이 분석의 가치는 충분합니다.
조달 비교 테스트 (Procurement bake-offs). 새로운 기능을 위해 제공업체를 평가할 때는 슬라이드 자료를 신뢰하기보다 현재의 스냅샷을 추출하세요. 행(row)의 순위는 input_usd_per_1m + (output_usd_per_1m × your_output_ratio)로 매깁니다. 대부분의 생성 워크로드 (generation workloads)는 입력 토큰당 2~3개의 출력 토큰을 생성하므로, 가중치 적용 비용은 대략 input + output × 2.5가 됩니다.
캐시 인지형 예산 책정 (Cache-aware budgeting). Anthropic과 DeepSeek은 캐시 히트 (cache-hit) 가격을 별도로 게시합니다. cache_read_usd_per_1m을 사용하면 프롬프트 캐시 (prompt-cache) 히트 이후의 실질적인 토큰당 요율을 모델링할 수 있습니다. 고정된 시스템 프롬프트 (system prompt)를 사용하는 RAG 시스템의 경우, 이는 표준 입력 가격보다 4~5배 낮을 수 있습니다.
배치 모드 차익 거래 (Batch-mode arbitrage). OpenAI와 Anthropic은 배치 API (batch APIs)에 대해 약 50%의 할인을 제공합니다. 제공업체가 이를 게시하면 batch_input_usd_per_1m 및 batch_output_usd_per_1m 항목이 나타납니다. 24시간의 지연 시간 (latency)을 허용할 수 있는 모든 워크로드는 배치로 라우팅하여 토큰 비용을 절반으로 줄일 수 있습니다.
투자자 조사 (Investor research). 매주 정기적인 실행을 통해 프론티어 모델 제공업체 (Groq, Together, DeepSeek)와 기존 업체 간의 토큰당 가격 압축 (price-per-token compression)을 분기별로 추적하세요.
가격 — 정확한 수치 💰
이벤트당 과금 (Pay-per-event). 데이터셋에 기록된 행에 대해서만 비용을 지불하며, 스크래퍼가 도달하지 못한 제공업체에 대해서는 비용을 지불하지 않습니다.
| 이벤트 | 요율 | 시점 |
|---|---|---|
actor-start | $0.05 | 실행 시 부팅 시 1회 |
result-row | $0.005 | 데이터셋으로 푸시된 가격 행당 |
| 시나리오 | 행 수 | 비용 |
|---|---|---|
| 7개 제공업체 전체, 일반적인 실행 | ~80 | ~$0.45 |
| ... |
참고: Store에 있는 유일한 경쟁 멀티 제공업체 액터 (parseforge/openrouter-models-pricing-scraper)는 1,000개당 $32.85의 비용이 들며, 권위 있는 제공업체 페이지가 아닌 OpenRouter의 리라우팅 레이어 (re-routing layer)만 다룹니다. 우리는 소스에 직접 접근하여 6.5배 더 낮은 비용을 달성했습니다.
Apify의 $5 무료 체험 크레딧은 신용카드 등록 없이 첫 ~1,100개의 행을 처리할 수 있습니다.
빌드에 대해 알아둘 가치가 있는 부분 🔧
여기서 흥미로운 제약 사항은 어떤 두 제공업체도 동일한 페이지 형식을 사용하지 않는다는 점입니다. 우리는 각 대상이 방출하는 정확한 응답에 맞춰 조정된 7개의 독립적인 파서(Parser)를 작성했습니다. Mistral의 RSC hydration 번들, DeepSeek의 Docusaurus 마크다운(Markdown) 테이블, Groq의 서버 렌더링된 HTML, Anthropic의 모델 비교 테이블 등이 그 예입니다. 페이지 구조가 재편될 때마다 각각 다르게 깨지기 때문에, **제공업체별 격리 (per-provider isolation)**가 핵심적인 역할을 합니다. 즉, 하나의 파서가 고장 나더라도 나머지 6개가 중단되어서는 안 됩니다.
curl-cffi 지문 회전(fingerprint rotation)이 또 다른 핵심 요소입니다. 우리는 세션 전반에 걸쳐 Chrome 131, Chrome 124, Firefox 147, Safari 180과 같은 브라우저 프로필을 회전시킵니다. TLS ClientHello, ALPN 확장 순서, HTTP/2 SETTINGS 프레임이 모두 프로필에 따라 달라지는데, 이는 Cloudflare가 전면에 배치된 엔드포인트(Endpoint)에서 매우 중요합니다. 모든 행은 데이터가 저장되기 전에 Pydantic v2를 통해 검증됩니다. model_dump(mode="json")는 타임스탬프를 ISO-8601로 강제 변환하며, 잘못된 형식의 행을 쿼리 시점이 아닌 에지(Edge) 단계에서 거부합니다.
한계점 🚧
- OpenAI Cloudflare 챌린지 —
curl-cffi와 Apify Proxy를 사용하면 대부분 통과할 수 있습니다. 통과하지 못할 경우 OpenAI 행은 건너뛰어지며, 실행 상태 메시지에 해당 사실이 명시됩니다. 챌린지가 지속적으로 발생할 경우 v2에서 Camoufox 폴백(Fallback) 경로를 계획 중입니다. - 텍스트 토큰 모델만 포함 — 이미지 생성, 음성-텍스트 변환(Speech-to-text), 임베딩(Embeddings) 및 미세 조정(Fine-tuning) 가격은 v1의 범위에서 제외됩니다.
- Azure / Bedrock / Vertex / OpenRouter 패스스루(Pass-through) 미지원 — 우리는 권위 있는(Authoritative) 제공업체 페이지에만 접속합니다. 클라우드 제공업체의 마진(Markup)은 별개의 영역입니다.
- 이력 추적 불가 — 각 실행은 새로운 스냅샷입니다. 시계열 데이터를 구축하려면 실행을 예약하고 자체 저장소(BigQuery, S3, 명명된 Apify 데이터셋)로 내보내십시오. Apify의 기본 실행 범위 저장소는 무료 플랜의 경우 7일 후에 삭제됩니다.
- 제공업체 페이지 구조 변경 — 파싱할 수 없는 필드는 충돌을 일으키는 대신
null을 반환합니다. QA 피스처(Fixture)(Groq + DeepSeek)가 매 게시마다 파서의 고장 여부를 잡아냅니다.
FAQ ❓
LLM 가격 페이지를 스크래핑하는 것이 합법인가요?
이 페이지들은 제공업체가 고객이 비용을 평가할 수 있도록 게시하는 공개 마케팅 페이지입니다. 어떠한 인증(Authentication)도 우회하지 않으며 개인 데이터도 수집하지 않습니다. 또한 요청 속도를 보수적으로 조절합니다. 언제나 그렇듯, 귀하의 관할 구역과 사용 사례를 검토하십시오.
제공업체 중 API 키가 필요한 곳이 있나요?
아니요. 7개 제공업체의 모든 가격 페이지는 인증 없이 공개적으로 접근할 수 있습니다. 제공업체들은 사용자가 가입하기 전에 비용을 평가할 수 있도록 가격을 공개합니다.
이 데이터를 스프레드시트나 데이터 웨어하우스(Data Warehouse)로 내보낼 수 있나요?
네 — Apify Console 실행 페이지에서 CSV, Excel, JSON 또는 XML 형식으로 내보낼 수 있습니다. ACTOR.RUN.SUCCEEDED 이벤트 발생 시 Webhook을 사용하여 Make, Zapier, n8n 또는 BigQuery로 데이터를 전송하거나, Apify API를 통해 가져올 수 있습니다.
왜 OpenRouter의 가격 엔드포인트(Endpoint)를 사용하지 않나요?
OpenRouter는 라우팅 마진(Markup)과 모델 가용성을 반영한 복합 가격을 게시합니다. 이는 제공업체가 직접 API 접근을 위해 게시하는 권위 있는 가격이 아닙니다. FinOps(금융 운영) 목적이라면, 특히 직접 API 비용과 경유(Pass-through) 비용을 비교할 때는 원천 데이터(Source numbers)가 필요합니다.
Try it
이 Actor는 Apify Store에서 바로 사용할 수 있습니다: apify.com/DevilScrapes/llm-pricing-monitor
신용카드 등록 없이 $5 무료 체험 크레딧을 제공합니다. 기본 설정으로 실행하면 1분 이내에 7개 제공업체 전체에 걸쳐 약 80개의 최신 가격 행을 얻을 수 있습니다. 비용 인지형(Cost-aware) LLM 라우터나 FinOps 대시보드를 구축 중인데 누락된 필드가 있나요? 댓글을 남겨주세요 — 모델 목록과 필드 세트는 사람들의 필요에 따라 확장됩니다.
Built by Devil Scrapes — 개성 있는 Apify Actors. 이벤트당 결제, 투명한 가격 책정, 불필요한 필드 없음. 😈
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기