Methodology and limitations
SaaS Reference tracks published list prices of 16 widely used B2B software products. The dataset holds 238 price points (112 live captures, 118 archive snapshots, 8 announcement prices), 9 official announcements and 52 derived changes. Latest evidence: 11 Oct 2026.
What counts as evidence
A price point exists only if one of these sources shows it:
- Live capture — the vendor's official pricing page, fetched by our capture script. We store the extracted plan prices, the capture date and a SHA-256 hash of the response body. We do not store or republish the page text.
- Archive snapshot — an Internet Archive Wayback Machine snapshot of the official pricing page. The evidence link is the timestamped snapshot URL and the point is dated on the snapshot date.
- Official announcement — a vendor blog post, press release or documentation page that states a new price. The point is dated on the stated effective date.
News articles, reseller blogs and search-engine snippets are never used as the source of a price. We use web search only to find official pages, which we then fetch and read.
How prices are extracted
Each product has a parser: a small set of patterns for each generation of its pricing page, with test fixtures taken from real captures. When a vendor redesigns its page and a pattern no longer matches, the capture is reported as a failure for a human to fix. Partial extractions are never published.
Every new point, whether from a live capture or an archive snapshot, goes into a review queue and is published only after a person checks it against the page.
The first capture (10 October 2026) was made through an external fetching tool rather than the scheduled script, because the build environment had no direct internet access. It went through the same parsers and the same review queue. For some large pages that tool could only transfer a Markdown rendering, which we parsed instead of the HTML; the hash then covers that rendering.
From the second capture (11 October 2026) the capture script fetches the pages itself. That run came from a US IP address, so vendors that price by location served USD; the location of the first capture was not recorded. Pages that answer automated requests with a block page, or fill in prices with JavaScript, are not captured: we do not disguise the script as a browser.
How changes are derived
- A series is one product, plan, currency, billing type and unit (for example "Zoom Workplace Pro, USD, per user/month, billed annually"). A change is two consecutive points in the same series with different amounts.
- We never compare monthly with annual billing, different currencies, or per-user with flat prices. When a page doesn't say how a price is billed we record "billing not stated", and those points are compared only with each other.
- Dates are observation dates. A change is shown "between" the last date the old price was seen and the first date the new price was seen. The vendor may have changed the price at any point in that window. If an official announcement gives an effective date in that window, we link it.
- When a vendor renames a plan, we connect the old and new names only if an official source says they are the same plan. Otherwise they appear as separate plans. Bundles with new features (for example "with Copilot") are treated as separate plans, not as price changes.
- Introductory discounts ("50% off for 3 months", first-year discounts) are ignored. We record the regular price the page shows.
- Averages on category and report pages are unweighted means of plan-level changes. They are not a price index and do not account for how many customers use each plan.
Limitations
- List prices only. Discounts, negotiated enterprise contracts, partner/reseller pricing, taxes, usage-based fees, add-ons and payment-processing fees are not covered.
- Several vendors choose the currency based on the visitor's location. Our first live capture was served in EUR for some products; the second, from a US IP address, was served in USD. Archive snapshots do not record the visitor's location. Different currencies are separate series and are never compared.
- Coverage has gaps. Some pricing pages render prices only with JavaScript, block automated requests, or were archived as error pages. Those products or periods are missing rather than assumed stable. Products without a parseable public pricing page (for example Jira, HubSpot and Pipedrive) are not tracked; ERPs sold only through quotes were not evaluated.
- "Billing not stated" means the page didn't say. It doesn't mean the vendor offers no monthly or annual option.
- A price shown on a page is not proof that every customer pays it. Existing customers often keep old prices until renewal.
Updates and corrections
A scheduled job can re-capture every pricing page and flag differences for review. Wayback backfill runs on demand and keeps a local cache so that it doesn't load the archive unnecessarily. If you find an error, open an issue in the project repository and include the evidence link. Corrections are made in the data files and recorded in the version history.
Re-use
You may quote and chart the extracted figures with attribution to SaaS Reference and a link to the relevant product page. Each chart has an embed snippet that includes the attribution. Vendor names and trademarks belong to their owners. SaaS Reference is independent and not affiliated with any vendor. See also the terms and disclaimer.
The whole dataset is downloadable, every row with its evidence URL: Price changes (CSV) · Price points with evidence (CSV) · Full dataset (JSON). Files are regenerated with every data update; "as of" is the latest evidence date (11 Oct 2026).
Suggested citation: "SaaS Reference, B2B SaaS list-price history, data as of 11 Oct 2026, <page URL>". For journalists and analysts: each change row links to the before and after evidence, so you can verify a figure without trusting us.