Open data: AI coding plans, models and prices
Everything on this site is generated from these files. Use them in your own tools, articles and research under CC BY 4.0: free to copy, change and redistribute, commercially too, as long as you credit codingplans.dev. Last verified 2026-11-01.
Files
JSON is the canonical format. Every file is served with open CORS, so a browser app can fetch it directly. CSV exports flatten lists into ; -separated text.
| Dataset | Contents | Download | Fields |
|---|---|---|---|
| plans | 73 AI coding subscriptions: price, annual price, included models, usage limit, main limitation, adoption estimate, source and check date. | JSON · CSV | Schema |
| models | 42 models: Artificial Analysis Intelligence Index, speed, latency, context window, cheapest token price, cost per task and effort profiles. | JSON · CSV | Schema |
| providers | Token prices by provider, including the DeepSeek peak and off-peak rate tables. | JSON | Schema |
| apps | Coding agents and how to switch models in each (OpenCode, Command Code, Pi, OpenRouter). | JSON | Schema |
| schedules | DeepSeek peak windows in UTC and the off-peak discount, machine-readable. | JSON | Schema |
| enterprise | Contract and team plans with seat prices, minimums, terms and security features (SSO, SCIM, audit logs, data residency). | CSV | Schema |
How the data is checked
- Every record has a
source(the vendor page, or Artificial Analysis for benchmarks) and asource_date: the day someone last checked that page, not the launch date. - A validator runs before every build. It rejects a record without a source or date, a date in the future, an annual price above the monthly price, or a schedule whose peak rate does not match its published multiple. A dataset that fails is not published.
- Records not rechecked within 45 days are flagged for review.
- Prices are copied, not estimated. Where a vendor publishes no number the field is empty and a reason, starting with an em dash, says why.
- Benchmark figures are copied from Artificial Analysis without rounding.
Confidence labels
- Plan popularity (
popularity_confidence): published is a vendor figure, reported comes from credible reporting, proxy is an install or download count, assumed is an explicit estimate. The score is an adoption estimate, not market share; the method is on the About page. - Enterprise seat prices (
confidence): published on the vendor page, reported by credible sources, estimated (an explicit estimate; the record'sreasonfield says how it was reached), or unpublished (shown as "Quote").
Plan fields
| Field | Type | Meaning |
|---|---|---|
id |
string | Stable lower-case identifier, vendor-prefixed. Also the anchor of the plan on its vendor page; never changes. |
name |
string | Plan name as the vendor sells it. |
vendor |
string | Company that sells the plan. |
monthly_price |
number | Price in US dollars per month with monthly billing. Per seat for team plans. 0 for free tiers. |
annual_monthly_price |
number or null | Effective monthly price in US dollars with annual billing (the yearly price divided by 12, rounded to cents), or null when the vendor sells no annual option. |
annual_monthly_price_reason |
string | Why annual_monthly_price is what it is, starting with an em dash, e.g. "— (monthly billing only)". |
kind |
string: IDE extension, Editor / IDE, CLI / Terminal, Cloud agent & IDE, Web chat & coding agent, API / PAYG, Coding subscription | Product category: where you use the plan. |
included_models |
array | Models the plan gives access to, as the vendor names them. A note in parentheses marks a restriction, e.g. "(usage credits)". |
usage_limit |
string | The allowance as the vendor describes it, in plain text. Vendors rarely publish exact request counts. |
main_limitation |
string | The most important catch or restriction, in plain text. |
vendor_notes |
string | Further context from the vendor page. |
source |
string | Vendor page the price and limits were taken from. |
source_date |
string | Date (YYYY-MM-DD) the source was last checked. Not the launch date. |
buyer |
string: individual, team | Who buys it self-serve. team = multi-seat with shared billing and admin, bought without a sales contract; it is shown as the entry rung of the vendor's enterprise ladder. Contract plans live in enterprise.json. |
seat_pricing |
object | How a team plan's price scales with seats. The price itself stays in monthly_price / annual_monthly_price (per seat for per_seat and base_plus_seat, for the whole team for per_team). |
popularity_score |
integer | Adoption index 0-100, log-scaled from the product's published reach and a documented tier share. Not a vendor-published metric. |
popularity_basis |
string | The raw adoption signal behind the score plus the tier share used, in plain words. |
popularity_source |
string | Where the adoption signal behind popularity_score comes from. |
popularity_source_date |
string | Date (YYYY-MM-DD) the popularity source was checked. |
popularity_confidence |
string: published, reported, proxy, assumed | How solid the adoption signal is: published (vendor figure), reported (credible reporting), proxy (installs or downloads), assumed (explicit estimate). |
Model fields
| Field | Type | Meaning |
|---|---|---|
id |
string | Stable lower-case identifier. Also the anchor of the model on its vendor page; never changes. |
name |
string | Model name as the vendor publishes it. |
vendor |
string | Company that trains the model. |
intelligence_index |
number or null | Artificial Analysis Intelligence Index score at the highest measured reasoning effort, copied without rounding; null when unmeasured. |
intelligence_index_reason |
string or null | Why intelligence_index is null, starting with an em dash. |
intelligence_index_version |
string or null | AA Intelligence Index version the score was measured on, e.g. 5.0. Null when no score is published for the model. |
median_speed_tps |
number or null | Median output speed in tokens per second (Artificial Analysis); null when unmeasured. |
is_median_speed_est |
boolean | True when median_speed_tps is an estimate rather than a measurement. |
ttft_seconds |
number or null | Seconds to the first answer token, including thinking time (Artificial Analysis). |
end_to_end_seconds |
number or null | Seconds to a complete 500-token answer, including thinking time (Artificial Analysis). |
context_window |
string | Maximum context window, e.g. "1M" or "256K" tokens. |
open_weights |
boolean | True when the weights are publicly downloadable. |
specialized |
boolean | True for a specialised decision model kept below the index floor; see specialized_reason. |
specialized_reason |
string or null | Why a specialised model is kept despite a low index. |
cheapest_token_price |
string | Lowest list price as "$input / $output per M" (US dollars per million tokens). |
cheapest_provider |
string | Where cheapest_token_price is offered. |
cost_per_task |
string | Artificial Analysis cost to run its Intelligence Index on this model at API list prices, in US dollars; a guide to relative cost, not a bill. |
source |
string | Main source page for the record. |
benchmark_source |
string | Artificial Analysis model page the benchmark figures come from. |
pricing_source |
string | First-party pricing page (or OpenRouter) for the token price. |
source_date |
string | Date (YYYY-MM-DD) the sources were last checked. |
effort_profile |
object | Score and cost at each reasoning-effort level on an agentic coding benchmark, used to recommend an effort level. |
Units: prices in US dollars; token prices per million tokens; speed in tokens per second; times in seconds; dates as YYYY-MM-DD. The full rules for every file are in the JSON Schemas.
Research: OpenCode Go allowance benchmark
The raw data behind OpenCode Go usage limits, measured: 26 models, 4 agent tasks each, every model call logged, run 2026-10-31 on OpenCode v2.1.4. With these files you can rerun the benchmark on your own OpenCode Go account and check the projection.
| File | Contents |
|---|---|
results.csv | One row per measured model: requests, cost, mean tokens per call, published and projected requests per five hours for Go and Go Plus, and runway. Generated from the run below. |
raw.jsonl | Every model call in the run: model, task, step, input, cache read and write, output and reasoning tokens, cost in US dollars and latency in milliseconds. |
summary.json | Per-model totals, per-request means and medians, and the result of each hidden check. |
analysis.md | The projection to 50K, 100K and 150K-token sessions, as written by analyze.mjs. |
published-2026-10-31.json | OpenCode's published prices, monthly caps and requests per window, parsed from its usage-limits page. |
tasks.json | The four agent tasks each model ran, in one session. |
verify.mjs | The hidden checks: the bug is fixed, the billing change and rename are made, and the test suite passes. |
bench.mjs | Runs every paid opencode-go model through the tasks in its own copy of the fixture and logs each call. |
analyze.mjs | Turns a run into the projection used by the brief. |
fixture/ | The small Node project each model works on, with one real bug: AGENTS.md, package.json, src/cost.mjs, src/format.mjs, src/limits.mjs, src/prices.mjs, src/report.mjs, test/cost.test.mjs, test/format.test.mjs, test/limits.test.mjs, test/report.test.mjs. |
To rerun: copy the files into one folder, keep fixture/ beside the scripts, then run node bench.mjs and node analyze.mjs runs/<timestamp>. It needs the OpenCode CLI signed in to OpenCode Go and spends real allowance.
How to cite
Credit codingplans.dev and link the page or file you used. For example:
Spotted a wrong number? Email hello@codingplans.dev with the record id and a source.