Where every price comes from
No guessed numbers. Each model price in Harpd is sourced from the provider's official pricing page, recorded with a verification date and source link, and published in one canonical file.
Every price in Harpd is pulled from the model provider's official pricing page and stored with a sourceUrl and verifiedAt timestamp. Deprecated models are flagged. The canonical machine-readable source is /data/llm-pricing.json — we never fabricate an unknown price.
- Sourced from official provider pricing pages
- Every entry has
verifiedAt+sourceUrl - Deprecated models flagged, never deleted silently
- One canonical file:
/data/llm-pricing.json
Procedure
- 1
Fetch the official price
We read the provider's published pricing page for each model — input, output, cached input, and batch rates where the provider publishes them.
- 2
Record provenance
Each entry stores the
sourceUrlwe read and averifiedAtISO timestamp of when we captured it. - 3
Flag deprecated models
Models the provider has retired are kept but marked
deprecated: trueso historical comparisons stay possible without silently dropping data. - 4
Publish one canonical file
The result is generated from
src/lib/pricing-registry.tsinto/data/llm-pricing.jsonand/data/llm-pricing.csv. Every price shown on Harpd traces back to this file.
Data schema
Each record in the dataset carries the following fields:
| Field | Type | Meaning |
|---|---|---|
| id | string | Stable model identifier |
| provider | string | Provider name (e.g. openai, anthropic) |
| displayName | string | Human-readable model name |
| inputPerMillion | number | Input price per 1M tokens (USD) |
| outputPerMillion | number | Output price per 1M tokens (USD) |
| cachedInputPerMillion | number | null | Cached input price per 1M tokens, if published |
| batchInputPerMillion | number | null | Batch input price per 1M tokens, if published |
| batchOutputPerMillion | number | null | Batch output price per 1M tokens, if published |
| contextWindow | number | null | Context window in tokens, if published |
| sourceUrl | string | Official pricing page the price came from |
| sourceName | string | Short label for the source |
| verifiedAt | string | ISO timestamp of verification |
| deprecated | boolean | True if the provider has retired the model |
What we do not do
We never fabricate a price we cannot source. If a provider does not publish a rate (for example, a batch price that isn't available), the field is null — not an estimate. Any derived "estimated cost" shown on the site is computed from real published fields and labeled as a calculation, not presented as a new price.