llm-price-tracker
llm-price-tracker fetches official published API token prices for major LLM
providers, normalises them into one schema, and supports JSON snapshots and
snapshot diffs.
Prices are collected from official provider pages only. Provider page structures can change without notice, so review fetched prices before using them for production billing or customer-facing estimates.
Supported providers
- OpenAI GPT API models: https://developers.openai.com/api/docs/pricing
- Anthropic Claude models: https://docs.anthropic.com/en/docs/about-claude/pricing
- Google Gemini models: https://ai.google.dev/gemini-api/docs/pricing
- Kimi / Moonshot AI models: https://platform.kimi.ai/docs/pricing/chat
- MiniMax models: https://platform.minimax.io/docs/guides/pricing-paygo
- Qwen / DashScope models: https://www.alibabacloud.com/help/en/model-studio/models
Installation
pip install llm-price-tracker
For local development:
python3 -m pip install -e ".[dev]"
Python 3.10 or newer is required.
Python usage
from llm_price_tracker import (
diff_snapshots,
fetch_all_prices,
fetch_provider_prices,
load_snapshot,
save_snapshot,
)
prices = fetch_all_prices()
openai_prices = fetch_provider_prices("openai")
save_snapshot(prices, "prices.json")
old = load_snapshot("prices-old.json")
new = load_snapshot("prices.json")
diff = diff_snapshots(old, new)
CLI usage
llm-price-tracker list-providers
llm-price-tracker fetch --provider openai --output openai-prices.json
llm-price-tracker fetch --provider all --output prices.json
llm-price-tracker diff --old prices-old.json --new prices.json
llm-price-tracker diff --old prices-old.json --new prices.json --fail-on-change
The CLI exits non-zero when fetching, parsing, validation, or diff
--fail-on-change checks fail. Use --ignore-errors with fetch --provider all
to write successful providers while reporting skipped provider errors.
Output schema
Snapshots are JSON arrays of ModelPrice objects. Decimal prices are serialized
as strings to avoid floating-point precision loss.
[
{
"provider": "openai",
"model": "gpt-4.1",
"input_per_1m": "2.00",
"output_per_1m": "8.00",
"cached_input_per_1m": "0.50",
"cache_write_5m_per_1m": null,
"cache_write_1h_per_1m": null,
"cache_storage_per_1m_hour": null,
"currency": "USD",
"unit": "1M tokens",
"source_url": "https://developers.openai.com/api/docs/pricing",
"source_type": "html",
"fetched_at": "2026-06-12T09:00:00Z",
"modality": null,
"billing_tier": null,
"price_condition": null,
"notes": null
}
]
Some providers publish tiered or modality-specific prices. Those variants use
optional modality, billing_tier, and price_condition fields instead of
inventing new model names.
Provider adapters include lightweight required-model sanity checks for current official pages. Those checks are adapter arguments so downstream users can override them when providers rename, add, or deprecate models.
Development
python3 -m pip install -e ".[dev]"
pytest
ruff check .
black --check .
Normal tests use saved fixtures and do not call live provider pages. Live tests, when added, should be opt-in:
LLM_PRICE_TRACKER_LIVE_TESTS=1 pytest tests/live
Author
Eugene Evstafev hi@eugene.plus
Release files for llm-price-tracker 2026.6.121349
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| llm_price_tracker-2026.6.121349.tar.gz | 22.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| llm_price_tracker-2026.6.121349-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 46.1 kB
Release files / llm_price_tracker-2026.6.121349.tar.gz
| Download URL | llm_price_tracker-2026.6.121349.tar.gz |
|---|---|
| Size | 22.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
71390469cc4aa76481ce8165c3645b3354cfdff9b0d6e1111eb557a6868dc7ec
|
|
BLAKE2b-256 checksum How to use checksums |
f8d76787ccdcfa24161c1169d9a4479ed04441f27acb05cb61837af5976fd192
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.2
|
Release files / llm_price_tracker-2026.6.121349-py3-none-any.whl
| Download URL | llm_price_tracker-2026.6.121349-py3-none-any.whl |
|---|---|
| Size | 23.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3930a6783ec74d27e9ce2d78aaef173393f52d6be8ba04b4ff9902837f5c7ee9
|
|
BLAKE2b-256 checksum How to use checksums |
450c5973c0617be48f22a864557e63d43ded20eeb77dc58a9f63b5cfe6a78c02
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.2
|