The Agent Pricing Index · 68 products · 7 categories · CC BY 4.0
Cite this index
Every row is one vendor, one page, one dated read, one verbatim quote. You can quote it, build on it, and check it — and when it is wrong, the correction publishes with the date.
68
rows
one per product, 7 categories. 11 read 2026-09-08, 2 re-read 2026-09-18, 2 re-read 2026-10-14, 1 re-read 2026-10-15, 1 re-read 2026-10-16, 1 re-read 2026-10-18, 6 read 2026-10-22, 1 re-read 2026-10-22, 37 re-read 2026-10-27, 2 re-read 2026-10-31, 4 re-read 2026-11-03.
11
publish no price at all
recorded as null with the page that says nothing quoted. Kept apart from the 44 that gate only a top tier.
17
derived figures
computed by IY from published numbers and flagged unit_price_derived, entry_usd_month_derived or annual_discount_derived. Never averaged in unmarked.
58
dated re-reads on file
a row is never quietly edited. What changed, and when, stays on the row.
01
How to cite
The dataset, or one row of it
The index
Nathan Battin (2026). The Agent Pricing Index: list prices of 68 AI agents and models, read from vendor pages. IgnatiusTheYoungerAI. https://ignatiustheyoungerai.com/pricing-index — dataset https://ignatiustheyoungerai.com/pricing-index/agent-pricing-index.json, rows verified 2026-09-08 to 2026-11-03. CC BY 4.0.
One row
Cite the row by product, its verified_date, and its source_url — the three fields that make the claim checkable.
The Agent Pricing Index, row "Lindy" (verified 2026-09-18, source https://www.lindy.ai/pricing), IgnatiusTheYoungerAI, https://ignatiustheyoungerai.com/pricing-index, CC BY 4.0.
BibTeX
@misc{battin2026agentpricingindex,
author = {Battin, Nathan},
title = {The Agent Pricing Index: list prices of 68 AI agents and models, read from vendor pages},
year = {2026},
publisher = {IgnatiusTheYoungerAI},
howpublished = {\url{https://ignatiustheyoungerai.com/pricing-index}},
note = {Dataset: https://ignatiustheyoungerai.com/pricing-index/agent-pricing-index.json. Rows verified 2026-09-08 to 2026-11-03. CC BY 4.0.}
}
schema.org / JSON-LD
{
"@context": "https://schema.org",
"@type": "Dataset",
"name": "The Agent Pricing Index",
"description": "List prices of 68 AI agents and models across 7 categories, read verbatim from each vendor's own pricing page on a dated pass. One row per product; null means the vendor publishes nothing.",
"url": "https://ignatiustheyoungerai.com/pricing-index",
"license": "https://creativecommons.org/licenses/by/4.0/",
"creator": {
"@type": "Person",
"name": "Nathan Battin",
"affiliation": "IgnatiusTheYoungerAI"
},
"publisher": {
"@type": "Organization",
"name": "IgnatiusTheYoungerAI",
"url": "https://ignatiustheyoungerai.com"
},
"distribution": [
{
"@type": "DataDownload",
"encodingFormat": "application/json",
"contentUrl": "https://ignatiustheyoungerai.com/pricing-index/agent-pricing-index.json"
},
{
"@type": "DataDownload",
"encodingFormat": "application/json",
"contentUrl": "https://api.ignatiustheyoungerai.com/v1/pricing/index"
}
],
"temporalCoverage": "2026-09-08/2026-11-03",
"dateModified": "2026-11-03",
"isAccessibleForFree": true
}
02
What a row carries
The fields that make a claim checkable, and what each one means
| field | meaning |
source_url | The vendor's own page. No URL, no entry. |
verified_date | The day that page was read, by a person or by a text-extraction tool a person checks. The row is a claim about one vendor on one day, nothing more. |
| evidence quote | The vendor's words, verbatim, from the page on that day. The number in the row is what the quote says. |
label | OBSERVED a price was read · ABSENT the page publishes none. Never MODELED — this dataset carries no estimates. |
null | The vendor publishes nothing. A finding, not a gap; it is never filled with a guess. |
entry_usd_month = 0 | A sentinel: no platform fee, not a $0 subscription. Excluded from floors and averages. |
unit_price_derived | true when IY computed the unit price from a plan price and an included quantity. The arithmetic is shown on the units page. |
usage_unit | What the vendor counts. Do not compare unit prices across different units — see The Unit Problem. |
enterprise_contact_sales | The top tier is gated. Distinct from publishing nothing: most gated vendors still publish entry and mid prices. |
03
The record
Corrections, right of reply, removal — the three things that make a public index safe to cite
Corrections publish with their date. A re-read of a page is appended to the row with what changed; the earlier reading stays. A row is never edited in place.
Right of reply. Any vendor in the index may write to hello@ignatiustheyoungerai.com. A correction publishes with the date and what changed.
Removal. The policy, as it stands in the dataset: "A vendor may ask to be removed. The row comes down and the index records only that a row was withdrawn at the vendor's request, with the date." No request has been received as of 2026-11-03.
Two measures, kept apart. "11 of 68 publish no price at all" and "55 of 68 gate an enterprise tier" answer different questions and are never quoted interchangeably.
No vendor pays for inclusion, placement or rating. If the index is ever sponsored, the sponsor is named on the page and this line stays.
04
The API
The same rows, for agents
| endpoint | what | price |
GET https://api.ignatiustheyoungerai.com/v1/pricing/index | the full dataset, one row per product | free |
GET https://api.ignatiustheyoungerai.com/v1/pricing/aggregates | counts and floors, derived at request time | free |
POST https://api.ignatiustheyoungerai.com/v1/pricing/submit | submit a price, a correction or a row — the submit rail behind right of reply | free |
GET https://api.ignatiustheyoungerai.com/v1/pricing | per-query read on the machine-payable rail (HTTP 402, Stripe MPP) | $0.50 |
The JSON at https://ignatiustheyoungerai.com/pricing-index/agent-pricing-index.json is the file of record; the endpoints read from it. llms.txt lists it.
05
What it is not
Say less than the data can carry
It is list price only. Nothing here is what a customer paid; there are no negotiated figures, no volumes, no ARPU.
It is 68 rows, chosen for category leadership, not breadth. Category cells are 6 to 13 products; an "average price in support" would average the entry prices of 6 of its 11 vendors, so the index does not publish one.
It is a dated snapshot with dated re-reads, not a continuous feed. "Prices are rising" is not a claim it makes until enough rows have been re-read to say so.
It is USD. A vendor that prices only in another currency is recorded as publishing no USD price.
06
Who wrote it
A name, a background, and a record of correcting himself in public
Nathan Battin, founder of IgnatiusTheYoungerAI. A pricing and corporate-strategy operator who has priced real deals, applying the same rule to pricing pages that he applies to everything else: verify the artifact, not the claim. Every row is read off the vendor's own page and checked by a person, the arithmetic is shown, and the mistakes are filed where anyone can read them.
Write to the authorBack to the index