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.
Download the CSV
/pricing-changes/data.csv
RFC 4180, comma separated, UTF-8, quoted where a value contains a comma or a quote.
Download the JSON
/pricing-changes/data.json
The same rows, plus the licence, the attribution string and the column list in the payload.
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.
| Column | Type | What it is |
|---|---|---|
| company | text | The company whose pricing page this row was read from. |
| category | text | The index category the company sits in, for instance CRM or Customer support. Ours, not the vendor's. |
| source_url | url | The vendor pricing page the row was read from. Open it before quoting a price. |
| plan | text | The tier name as the page prints it, for instance Basic or Growth. |
| price | text | The 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. |
| period | text | The billing unit as printed, for instance /month or /user/month. Empty when the page attaches none. |
| annual_price | text | The annual billing figure for the same tier, when the page publishes one. Empty otherwise. |
| confident | boolean | false 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_at | ISO 8601 timestamp, UTC | When 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.
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