All categories

The pricing index as a file

Everything on the public pricing pages, as CSV and as JSON, with a licence that lets you use it. One row per plan per company. Free to download, no account, no key.

Right now the file holds 119 rows across 27 companies. Every reading in it was captured on 14 Aug 2026. That count is read from the database as this page loads, so it is what the files will give you.

Both are served with Access-Control-Allow-Origin: *, so you can fetch them from a notebook or a browser tab without a proxy.

import pandas as pd
df = pd.read_csv("https://tierpeek.com/pricing-changes/data.csv")
df[df.confident].head()

The columns

Nine columns, in this order, in both files. In the CSV a missing value is an empty cell; in the JSON it is null.

ColumnTypeWhat it is
companytextThe company whose pricing page this row was read from.
categorytextThe index category the company sits in, for instance CRM or Customer support. Ours, not the vendor's.
source_urlurlThe vendor pricing page the row was read from. Open it before quoting a price.
plantextThe tier name as the page prints it, for instance Basic or Growth.
pricetextThe price string as printed, currency symbol and all. Kept as text because a page can print Free, or a range, or no number at all. Never converted between currencies.
periodtextThe billing unit as printed, for instance /month or /user/month. Empty when the page attaches none.
annual_pricetextThe annual billing figure for the same tier, when the page publishes one. Empty otherwise.
confidentbooleanfalse when we could not tie this tier to one unambiguous price. The row is still here so you can decide what to do with it.
observed_atISO 8601 timestamp, UTCWhen the snapshot behind this row was captured.

Why some rows are marked not confident

Some pricing pages do not let a tier be tied to one price. A page that prints every tier in twelve currencies and both billing cycles at once is the usual case. When our extractor cannot pick one figure out of that, it marks the tier and we do not stand behind the number.

The public pages drop those tiers, because a page of prices is an argument that we read pricing correctly and a blank beats a guess. A file is the opposite case. You can filter, and a row you can reject is worth more than a row that quietly went missing. So the file keeps them and tells you which ones they are. Filter on confident if you want only the readings we defend.

How often it updates

The pages in this public index are checked about once a day. Pages our customers track are checked every 8 hours, and those never appear here. The files are built from the newest snapshot of each page at the moment you request them, so a fresh download reflects the last check, not a nightly export. It is a daily reading, not a live feed.

The newest reading in the file was captured on 14 Aug 2026.

Licence

CC BY 4.0. You can copy it, change it, and use it commercially, including in a product you sell. The one condition is credit: say where it came from and link back. Full terms at creativecommons.org/licenses/by/4.0.

Attribution string:

Tierpeek, https://tierpeek.com/pricing-changes

What is not in it

Nine columns is the whole file. No identifiers, no internal keys, no page text, no screenshots, nothing about who runs the index or who reads it. Feature lists are left out too: they are the part of a pricing page most likely to be summarised wrongly, and we would rather publish nothing than publish that.

Prices are the vendor's own strings. We do not convert currencies, we do not average, and we do not fill a blank with a figure from an older reading. The only edit is typographic: a long dash in a vendor string leaves as a plain hyphen. Anything you plan to quote, open source_url first.

The same numbers, read for you rather than by you: what all these pages have in common compares them category by category, and the index has the change log behind every row.

Run this on your own competitors

The file above is a fixed public list. Tierpeek runs the same read on any pricing page you point it at, every 8 hours, and sends what moved to your inbox or Slack.

Track your own competitors