The caffeine dataset: a free hosted JSON feed

The Barista Life caffeine dataset is a hosted JSON feed of 154 drinks with caffeine per serving, serving size, caffeine per ounce, and a cited source on every row. It is free to use, including commercially, if you credit it. Paid licence tiers exist for teams that want update notifications and a signed licence, but you do not need one to use the feed.

Get the v1 feed (JSON)

The feed URL

https://baristalife.co/cdn/shop/t/32/assets/bl-caffeine-feed-v1.json

One caveat worth reading before you hardcode it. The /t/32/ segment is the store's current theme path. If the storefront theme is ever replaced, that number changes and the old path stops updating. This page is the stable pointer: resolve the feed URL from here, or fetch this page once at deploy time and read the URL out of it. If you want a change notice by email instead, that is what the licence tiers are for.

What is in it

Category Entities
Soda 40
Energy drinks 39
Coffee and chain coffee drinks 31
Tea and matcha 21
Ready to drink 10
Chocolate 7
Decaf 4
Dessert 2
Total 154

Fields

Field What it holds
slug Stable identifier. Safe to key on across versions.
name Display name.
category coffee, tea, energy, soda, rtd, chocolate, dessert, decaf.
caffeine_mg Milligrams for the stated serving.
serving, serving_oz The serving the figure applies to, as a label and as US fluid ounces.
mg_per_oz caffeine_mg divided by serving_oz, to two decimals.
source_label, source_url The source the figure was checked against.
guide_url The Barista Life page that shows the working.
last_reviewed ISO date the figure was last checked.

Sample record

{
 "slug": "java-monster",
 "name": "Java Monster",
 "category": "rtd",
 "caffeine_mg": 200,
 "serving": "15 oz can",
 "serving_oz": 15,
 "mg_per_oz": 13.33,
 "source_label": "Caffeine Informer",
 "source_url": "https://www.caffeineinformer.com/caffeine-content/java-monster",
 "guide_url": "https://baristalife.co/blogs/blog/monster-caffeine-content",
 "last_reviewed": "2026-07-09"
}

Versioning policy

The version lives in the filename, not just in the payload. bl-caffeine-feed-v1.json stays on the v1 shape for as long as v1 exists.

  • Field changes are breaking. Renaming or removing a field, or changing what a field means, ships as a new file at bl-caffeine-feed-v2.json. The v1 file keeps serving the v1 shape.
  • Adding a field is not breaking. New optional fields can appear in v1 without notice. Parse defensively and ignore what you do not use.
  • Value changes are not breaking. A caffeine figure changing because its source changed is the feed working as intended, not a version bump.
  • Adding or removing entities is not breaking. Slugs are stable, so an entity that leaves the feed leaves its slug retired rather than reassigned.
  • Every payload states its own version. Read feed_version, dataset_version, and generated from the JSON itself rather than assuming.
  • A retired version gets a year. If v2 ever ships, v1 keeps serving its last good payload for at least 12 months from the day v2 goes up.

Update cadence

Quarterly. The current payload is dataset version 1.2, generated 2026-08-15, with the next scheduled cut on 2026-11-15. Between cuts, an entity is re-checked and corrected as soon as its cited source publishes a different figure, so generated can move earlier than the schedule. Corrections reported through the contact page ship within a week, which is the same standard as the rest of the site under our editorial standards.

Changelog

Version Date Change
1.2 2026-08-15 First hosted feed. 154 entities, up from 127, adding chocolate, dessert, decaf, and the rest of the soda and energy set. Java Monster consolidated on the current 200 mg label figure; the retired 188 mg figure was dropped rather than averaged.
1.1 2026-07-09 Added tea and matcha entities.
1.0 2026-07-09 Initial release, 76 entities across coffee, tea, energy, and soda.

License

Free for any use, including commercial, with attribution. Attribution means a visible "data by Barista Life" credit linked to baristalife.co wherever the data appears. Two limits: do not resell the raw feed as a dataset product, and do not present the figures as health guidance. That is the whole free licence.

The paid tiers on the licence page add a signed licence document and emailed update notifications for teams that need one on file. They do not unlock extra data. The feed above is the same data.

Known limits

Chain drinks change. A figure is correct as of its last_reviewed date against the source in its own row, and the source is often a menu page that the chain can revise without notice. Serving sizes are the ones the source states, so a "large" is that chain's large and not a standard volume. Figures for drinks that are prepared to order vary with how they are made. If you are building something where a wrong number matters, show source_url and last_reviewed to your users the way this site does.

Also available

The embeddable comparison widget is a drop-in script that renders the same data. The interactive tool and the caffeine day curve use it on this site, the caffeine database is the human-readable version, and the printable chart is the paper one. Missing a drink, or spotted a figure that moved? Tell us.