LLM API prices across 70+ providers: cheapest offer, comparisons, history and cost estimates.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Cheapest current API offers for one model across direct providers and aggregators, in USD per 1M tokens (input, output, blended 3:1). Stale prices, and flex/batch tiers, are excluded by default. Optional filters (context, tools, JSON, vision, region, no training on prompts, open sign-up) and usage (tokens per request, requests per day) to get an estimated cost per request and per month. Returns the winner in detail and one short line per following offer. A condition that is absent was not published by the provider, it never means "no"; a flag not listed in signals is false.
Model id or name, e.g. 'deepseek-v3.2', 'deepseek/deepseek-v4-pro', 'gpt-5.6-luna'. Use search_models when unsure.
Only offers that support JSON output
Number of offers to return, winner included (default 5, max 25)
Only offers that support tool calling
compact (default): the winner in detail and one short line per other offer (provider, prices, signals, training on prompts when published). full: every field of every offer (all published conditions, reliability), much longer
Only providers that process data in this region: eu, us, …
Exclude offers whose provider does not publish the filtered information (by default they are kept and flagged)
Only offers that accept image input
Minimum context window in tokens
Only providers whose published terms say they do not train on your prompts
Only providers with open sign-up (no waitlist, invitation or country restriction)
Share of input tokens served from the provider's prompt cache (0 to 1)
Also include lower-priority service tiers, comma-separated: flex, batch (hidden by default)
Output tokens per request, for the estimated cost
Input tokens per request, for the estimated cost
Requests per day, to also get an estimated monthly cost
Cheapest current API offers for one model across direct providers and aggregators, in USD per 1M tokens (input, output, blended 3:1). Stale prices, and flex/batch tiers, are excluded by default. Optional filters (context, tools, JSON, vision, region, no training on prompts, open sign-up) and usage (tokens per request, requests per day) to get an estimated cost per request and per month. Returns the winner in detail and one short line per following offer. A condition that is absent was not published by the provider, it never means "no"; a flag not listed in signals is false.
| Argument | Type | Description |
|---|---|---|
| json | boolean | Only offers that support JSON output |
| limit | integer | Number of offers to return, winner included (default 5, max 25) |
| model* | string | Model id or name, e.g. 'deepseek-v3.2', 'deepseek/deepseek-v4-pro', 'gpt-5.6-luna'. Use search_models when unsure. |
| tools | boolean | Only offers that support tool calling |
| detail | string | compact (default): the winner in detail and one short line per other offer (provider, prices, signals, training on prompts when published). full: every field of every offer (all published conditions, reliability), much longer |
| region | string | Only providers that process data in this region: eu, us, … |
| strict | boolean | Exclude offers whose provider does not publish the filtered information (by default they are kept and flagged) |
| vision | boolean | Only offers that accept image input |
| min_context | integer | Minimum context window in tokens |
| no_training | boolean | Only providers whose published terms say they do not train on your prompts |
| no_waitlist | boolean | Only providers with open sign-up (no waitlist, invitation or country restriction) |
| cached_ratio | number | Share of input tokens served from the provider's prompt cache (0 to 1) |
| include_tiers | string | Also include lower-priority service tiers, comma-separated: flex, batch (hidden by default) |
| output_tokens | integer | Output tokens per request, for the estimated cost |
| prompt_tokens | integer | Input tokens per request, for the estimated cost |
| requests_per_day | integer | Requests per day, to also get an estimated monthly cost |
{
"type": "object",
"required": [
"model"
],
"properties": {
"json": {
"type": "boolean",
"description": "Only offers that support JSON output"
},
"limit": {
"type": "integer",
"maximum": 25,
"minimum": 1,
"description": "Number of offers to return, winner included (default 5, max 25)"
},
"model": {
"type": "string",
"description": "Model id or name, e.g. 'deepseek-v3.2', 'deepseek/deepseek-v4-pro', 'gpt-5.6-luna'. Use search_models when unsure."
},
"tools": {
"type": "boolean",
"description": "Only offers that support tool calling"
},
"detail": {
"enum": [
"compact",
"full"
],
"type": "string",
"description": "compact (default): the winner in detail and one short line per other offer (provider, prices, signals, training on prompts when published). full: every field of every offer (all published conditions, reliability), much longer"
},
"region": {
"type": "string",
"description": "Only providers that process data in this region: eu, us, …"
},
"strict": {
"type": "boolean",
"description": "Exclude offers whose provider does not publish the filtered information (by default they are kept and flagged)"
},
"vision": {
"type": "boolean",
"description": "Only offers that accept image input"
},
"min_context": {
"type": "integer",
"minimum": 0,
"description": "Minimum context window in tokens"
},
"no_training": {
"type": "boolean",
"description": "Only providers whose published terms say they do not train on your prompts"
},
"no_waitlist": {
"type": "boolean",
"description": "Only providers with open sign-up (no waitlist, invitation or country restriction)"
},
"cached_ratio": {
"type": "number",
"maximum": 1,
"minimum": 0,
"description": "Share of input tokens served from the provider's prompt cache (0 to 1)"
},
"include_tiers": {
"type": "string",
"description": "Also include lower-priority service tiers, comma-separated: flex, batch (hidden by default)"
},
"output_tokens": {
"type": "integer",
"minimum": 0,
"description": "Output tokens per request, for the estimated cost"
},
"prompt_tokens": {
"type": "integer",
"minimum": 0,
"description": "Input tokens per request, for the estimated cost"
},
"requests_per_day": {
"type": "integer",
"minimum": 0,
"description": "Requests per day, to also get an estimated monthly cost"
}
},
"additionalProperties": false
}Current offers for one model, one line per provider and source (direct or via an aggregator), cheapest first (10 by default), with price, quantization, signals and training on prompts when published; the cheapest offer comes in detail. Pass detail: "full" for context, every published condition (data regions, sign-up) and reliability from official status pages on each offer.
| Argument | Type | Description |
|---|---|---|
| sort | string | Sort order: default blended (3:1 mix), or estimated_cost (the cost of your load) when prompt_tokens or output_tokens is given; estimated_cost needs one of them |
| limit | integer | Number of offers to return, cheapest included (default 10, max 50) |
| model* | string | Model id or name, e.g. 'deepseek-v3.2', 'deepseek/deepseek-v4-pro', 'gpt-5.6-luna'. Use search_models when unsure. |
| detail | string | compact (default): the winner in detail and one short line per other offer (provider, prices, signals, training on prompts when published). full: every field of every offer (all published conditions, reliability), much longer |
| region | string | Only providers that process data in this region: eu, us, … |
| strict | boolean | Exclude offers whose provider does not publish the filtered information (by default they are kept and flagged) |
Estimated cost of a workload on one model at each provider: cost per request, and per month if requests_per_day is given, taking the provider's tiered pricing and prompt-cache price into account. Offers sorted by estimated cost, cheapest first: the cheapest in detail, then one short line per offer with its estimated cost.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Number of offers to return, cheapest included (default 5, max 25) |
| model* | string | Model id or name, e.g. 'deepseek-v3.2', 'deepseek/deepseek-v4-pro', 'gpt-5.6-luna'. Use search_models when unsure. |
| detail | string | compact (default): the winner in detail and one short line per other offer (provider, prices, signals, training on prompts when published). full: every field of every offer (all published conditions, reliability), much longer |
| cached_ratio | number | Share of input tokens served from the provider's prompt cache (0 to 1) |
| output_tokens | integer | Output tokens per request, for the estimated cost |
| prompt_tokens | integer | Input tokens per request, for the estimated cost |
| requests_per_day | integer |
Rental offers for one GPU type: provider, price in USD per GPU per hour, number of GPUs in the published configuration, billing and region when published. One block per tier (guaranteed, community, spot), each with its own cheapest offer, also given per configuration (cheapest_by_gpu_count: the price per GPU of a single GPU and of a multi-GPU node are not comparable); tiers are never compared with each other. guaranteed: capacity the provider presents as not interrupted; community: third-party hosts; spot: interruptible capacity. Prices are as published by the provider, and dated. Get the GPU id from list_gpus.
| Argument | Type | Description |
|---|---|---|
| gpu* | string | GPU id from list_gpus, for example h100-sxm-80gb |
| tier | string | Only this tier (default: one block per tier) |
| detail | string | compact (default): the 3 cheapest offers of each tier. full: up to 50 offers per tier |
| region | string | Only this region, as published by the provider |
| gpu_count | integer | Only this published configuration: 1, 2, 4, 8 or 16 GPUs |
{
"type": "object",
"required": [
"gpu"
],
"properties": {
"gpu": {
"type": "string",
"description": "GPU id from list_gpus, for example h100-sxm-80gb"
},
"tier": {
"enum": [
"guaranteed",
"community",
"spot"
],
"type": "string",
"description": "Only this tier (default: one block per tier)"
},
"detail": {
"enum": [
"compact",
"full"
],
"type": "string",
"description": "compact (default): the 3 cheapest offers of each tier. full: up to 50 offers per tier"
},
"region": {
"type": "string",
"description": "Only this region, as published by the provider"
},
"gpu_count": {
"type": "integer",
"maximum": 16,
"minimum": 1,
"description": "Only this published configuration: 1, 2, 4, 8 or 16 GPUs"
}
},
"additionalProperties": false
}GPU types whose rental price InferIndex tracks (H100, A100, L40S…), with the lowest price per GPU per hour in USD for each tier (guaranteed, community, spot) and the number of GPUs of that configuration. Prices are per GPU per hour, as published by each provider, and dated. Tiers are different products and are never compared with each other.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}Price history of one model: every offer tracked by InferIndex (daily or weekly min/max/last price in USD, or raw price changes), plus the official price of the model's lab over time. Give either days, or from/to (YYYY-MM-DD), or at (a date) for the prices in effect that day.
| Argument | Type | Description |
|---|---|---|
| at | string | A single date, YYYY-MM-DD: prices in effect that day |
| to | string | End date, YYYY-MM-DD |
| days | integer | Number of days back from today (default 7) |
| from | string | Start date, YYYY-MM-DD (with to, instead of days) |
| limit | integer | Maximum number of points (default 100, max 500) |
| model* | string | Model id or name, e.g. 'deepseek-v3.2', 'deepseek/deepseek-v4-pro', 'gpt-5.6-luna'. Use search_models when unsure. |
| provider | string | Only this provider |
| granularity | string | day (default), week, or raw price changes |
Find the exact id of an LLM tracked by InferIndex from a name or partial name (e.g. 'deepseek', 'qwen3 max', 'claude opus'). Returns matching model ids and names, best match first.
| Argument | Type | Description |
|---|---|---|
| query* | string | Model name or part of it |
{
"type": "object",
"required": [
"query"
],
"properties": {
"query": {
"type": "string",
"description": "Model name or part of it"
}
},
"additionalProperties": false
}Is it cheaper to host an open-weights model yourself on rented GPUs, or to use the cheapest API offer? Returns a one-sentence verdict (headline) and the numbers behind it: the break-even volume in million tokens per day, the throughput the whole configuration must deliver for self-hosting to cost less (required_tokens_per_second: compare it with what your setup does), the break-even utilization when a throughput is known, the GPU configuration and its hourly price, and what the verdict rests on (confidence). Without a volume you still get the verdict and the break-even volume. It is an estimate: the throughput is a published measurement (measured), an estimate scaled from one (derived; estimated for a wide range), or a published minimum (lower_bound: a floor, valid for requests of up to 2,048 tokens in total, that can show self-hosting wins, never that the API is cheaper); or you give your own tokens_per_second. When no published figure decides, the headline gives the break-even volume and the required throughput, to compare with yours, rather than a yes or no, and may point out a dearer setup that published figures do decide (settled_alternative: for comparison, not a recommendation). headline_kind and headline_values give the headline as fields. It declines to give a number (status refused, with a reason) when it cannot do so reliably, for example a closed model, weights that do not fit the requested GPU, or a GPU nobody rents. Hardware rental only: the hourly price the provider publishes for the machine. It does not count the engineering to deploy and run the model, monitoring, redundancy, start-up time, or storage and network costs billed separately.
| Argument | Type | Description |
|---|---|---|
| gpu | string | Impose a GPU: id from list_gpus, for example h100-sxm-80gb |
| tier | string | GPU rental tier (default guaranteed) |
| model |
| no_training | boolean | Only providers whose published terms say they do not train on your prompts |
| no_waitlist | boolean | Only providers with open sign-up (no waitlist, invitation or country restriction) |
| cached_ratio | number | Share of input tokens served from the provider's prompt cache (0 to 1) |
| include_tiers | string | Also include lower-priority service tiers, comma-separated: flex, batch (hidden by default) |
| output_tokens | integer | Output tokens per request, for the estimated cost |
| prompt_tokens | integer | Input tokens per request, for the estimated cost |
| requests_per_day | integer | Requests per day, to also get an estimated monthly cost |
{
"type": "object",
"required": [
"model"
],
"properties": {
"sort": {
"enum": [
"blended",
"input",
"output",
"estimated_cost"
],
"type": "string",
"description": "Sort order: default blended (3:1 mix), or estimated_cost (the cost of your load) when prompt_tokens or output_tokens is given; estimated_cost needs one of them"
},
"limit": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "Number of offers to return, cheapest included (default 10, max 50)"
},
"model": {
"type": "string",
"description": "Model id or name, e.g. 'deepseek-v3.2', 'deepseek/deepseek-v4-pro', 'gpt-5.6-luna'. Use search_models when unsure."
},
"detail": {
"enum": [
"compact",
"full"
],
"type": "string",
"description": "compact (default): the winner in detail and one short line per other offer (provider, prices, signals, training on prompts when published). full: every field of every offer (all published conditions, reliability), much longer"
},
"region": {
"type": "string",
"description": "Only providers that process data in this region: eu, us, …"
},
"strict": {
"type": "boolean",
"description": "Exclude offers whose provider does not publish the filtered information (by default they are kept and flagged)"
},
"no_training": {
"type": "boolean",
"description": "Only providers whose published terms say they do not train on your prompts"
},
"no_waitlist": {
"type": "boolean",
"description": "Only providers with open sign-up (no waitlist, invitation or country restriction)"
},
"cached_ratio": {
"type": "number",
"maximum": 1,
"minimum": 0,
"description": "Share of input tokens served from the provider's prompt cache (0 to 1)"
},
"include_tiers": {
"type": "string",
"description": "Also include lower-priority service tiers, comma-separated: flex, batch (hidden by default)"
},
"output_tokens": {
"type": "integer",
"minimum": 0,
"description": "Output tokens per request, for the estimated cost"
},
"prompt_tokens": {
"type": "integer",
"minimum": 0,
"description": "Input tokens per request, for the estimated cost"
},
"requests_per_day": {
"type": "integer",
"minimum": 0,
"description": "Requests per day, to also get an estimated monthly cost"
}
},
"additionalProperties": false
}| Requests per day, to also get an estimated monthly cost |
{
"type": "object",
"required": [
"model"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 25,
"minimum": 1,
"description": "Number of offers to return, cheapest included (default 5, max 25)"
},
"model": {
"type": "string",
"description": "Model id or name, e.g. 'deepseek-v3.2', 'deepseek/deepseek-v4-pro', 'gpt-5.6-luna'. Use search_models when unsure."
},
"detail": {
"enum": [
"compact",
"full"
],
"type": "string",
"description": "compact (default): the winner in detail and one short line per other offer (provider, prices, signals, training on prompts when published). full: every field of every offer (all published conditions, reliability), much longer"
},
"cached_ratio": {
"type": "number",
"maximum": 1,
"minimum": 0,
"description": "Share of input tokens served from the provider's prompt cache (0 to 1)"
},
"output_tokens": {
"type": "integer",
"minimum": 0,
"description": "Output tokens per request, for the estimated cost"
},
"prompt_tokens": {
"type": "integer",
"minimum": 0,
"description": "Input tokens per request, for the estimated cost"
},
"requests_per_day": {
"type": "integer",
"minimum": 0,
"description": "Requests per day, to also get an estimated monthly cost"
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"model"
],
"properties": {
"at": {
"type": "string",
"description": "A single date, YYYY-MM-DD: prices in effect that day"
},
"to": {
"type": "string",
"description": "End date, YYYY-MM-DD"
},
"days": {
"type": "integer",
"minimum": 1,
"description": "Number of days back from today (default 7)"
},
"from": {
"type": "string",
"description": "Start date, YYYY-MM-DD (with to, instead of days)"
},
"limit": {
"type": "integer",
"maximum": 500,
"minimum": 1,
"description": "Maximum number of points (default 100, max 500)"
},
"model": {
"type": "string",
"description": "Model id or name, e.g. 'deepseek-v3.2', 'deepseek/deepseek-v4-pro', 'gpt-5.6-luna'. Use search_models when unsure."
},
"provider": {
"type": "string",
"description": "Only this provider"
},
"granularity": {
"enum": [
"day",
"week",
"raw"
],
"type": "string",
"description": "day (default), week, or raw price changes"
}
},
"additionalProperties": false
}| string |
| Model id or name, e.g. 'deepseek-v3.2', 'deepseek/deepseek-v4-pro', 'gpt-5.6-luna'. Use search_models when unsure. |
| detail | string | compact (default): verdict, headline and key numbers. full: also the three throughput scenarios, the model and every assumption |
| gpu_count | integer | Impose a number of GPUs: 1, 2, 4, 8 or 16 |
| utilization | number | Average share of time the GPUs serve requests, in percent (default 50) |
| quantization | string | Precision of the weights (default fp8); must be published by at least one provider unless fp16 or bf16 |
| output_tokens | integer | Output tokens per request |
| prompt_tokens | integer | Input tokens per request |
| tokens_per_day | integer | Your volume in tokens per day (input and output together). Or give requests_per_day, prompt_tokens and output_tokens |
| weights_margin | integer | Percent of the GPU memory the model weights may fill (default 70; the rest is the engine reserve and the context cache) |
| requests_per_day | integer | Requests per day (with prompt_tokens and output_tokens) |
| tokens_per_second | number | Your own measured throughput for the whole configuration, input and output tokens together, instead of our estimate |
{
"type": "object",
"required": [
"model"
],
"properties": {
"gpu": {
"type": "string",
"description": "Impose a GPU: id from list_gpus, for example h100-sxm-80gb"
},
"tier": {
"enum": [
"guaranteed",
"community",
"spot"
],
"type": "string",
"description": "GPU rental tier (default guaranteed)"
},
"model": {
"type": "string",
"description": "Model id or name, e.g. 'deepseek-v3.2', 'deepseek/deepseek-v4-pro', 'gpt-5.6-luna'. Use search_models when unsure."
},
"detail": {
"enum": [
"compact",
"full"
],
"type": "string",
"description": "compact (default): verdict, headline and key numbers. full: also the three throughput scenarios, the model and every assumption"
},
"gpu_count": {
"type": "integer",
"maximum": 16,
"minimum": 1,
"description": "Impose a number of GPUs: 1, 2, 4, 8 or 16"
},
"utilization": {
"type": "number",
"maximum": 100,
"minimum": 1,
"description": "Average share of time the GPUs serve requests, in percent (default 50)"
},
"quantization": {
"enum": [
"fp16",
"bf16",
"fp8",
"int8",
"fp4",
"int4"
],
"type": "string",
"description": "Precision of the weights (default fp8); must be published by at least one provider unless fp16 or bf16"
},
"output_tokens": {
"type": "integer",
"minimum": 1,
"description": "Output tokens per request"
},
"prompt_tokens": {
"type": "integer",
"minimum": 1,
"description": "Input tokens per request"
},
"tokens_per_day": {
"type": "integer",
"minimum": 1,
"description": "Your volume in tokens per day (input and output together). Or give requests_per_day, prompt_tokens and output_tokens"
},
"weights_margin": {
"type": "integer",
"maximum": 95,
"minimum": 50,
"description": "Percent of the GPU memory the model weights may fill (default 70; the rest is the engine reserve and the context cache)"
},
"requests_per_day": {
"type": "integer",
"minimum": 1,
"description": "Requests per day (with prompt_tokens and output_tokens)"
},
"tokens_per_second": {
"type": "number",
"minimum": 1,
"description": "Your own measured throughput for the whole configuration, input and output tokens together, instead of our estimate"
}
},
"additionalProperties": false
}