Download the data

Check our figures, or reuse them: the clinic facts, study cards, and regulatory records behind every report.

Data as of
September 28, 2026
Files
4 files, rebuilt from the data with every build of the site
License
CC BY 4.0: reuse with credit, a link to the license, and a note of any changes

Files

Each file is built from the same data as the reports, every time the site is built.
FileWhat it holdsRowsSize
clinics.csv One row per listed clinic: where it is, whether the listing is verified, and what the clinic's own website states about EBO2 (price, packages, session length, device, supervision, intake, recommended course, add-ons), with the page each price came from and the date read. 177 clinics 79 KB
clinics.json The same records as clinics.csv, with lists as arrays, plus the license, the date, and this field dictionary. 177 clinics 224 KB
studies.csv One row per study card: the citation, study type and size, design, setting, study arms, each procedure parameter as the paper writes it, adverse events, follow-up, funding, and whether we read the full text or only the abstract. 78 studies 109 KB
regulatory.json Every regulatory record: date, issuing body, type, title, the address of the primary source, our neutral summary, the key language quoted from the source, and the party named. 34 records 41 KB

License

The files are published under the Creative Commons Attribution 4.0 International license (CC BY 4.0). You may copy, share, and adapt them for any purpose, including commercially, as long as you give credit the way the license asks: credit EBO2.com, link to https://ebo2.com/data/, name the license and link to it, and say whether you changed the data. Each citation below does the first three. The CSV files carry no license line of their own; the license covers them all the same, and the JSON files give the license's address and the credit line in their license and credit fields. Our terms of use explain what the license covers and what it does not, such as the quotes and map coordinates that come from others.

The data records what clinics and papers state. It is not medical advice, and it does not rate or recommend any clinic.

How to cite

If you changed the data, add a note to the citation that says what you changed.

Field dictionary

Columns appear in this order in each file. Dates are written as YYYY-MM-DD and prices in whole US dollars.

clinics.csv and clinics.json

FieldTypeWhat it holds
idtextOur identifier for the listing. It is also the last part of the listing page address.
nametextThe clinic name as listed.
citytextCity of the listed address.
statetextTwo-letter postal code of the state.
ziptextZIP code, when the listing has one.
websiteURLThe clinic's website as listed. An address whose path words a health claim is shortened to the site's own address, as in pages_read_urls and price_source_url.
listing_verifiedyes/noWhether we confirmed, on the clinic's own website, that it offers EBO2 or EBOO. yes or no in the CSV, true or false in the JSON.
listing_verified_datedateThe date of that listing check, as YYYY-MM-DD.
other_serviceslistOther services the listing records beside EBO2, as codes: mah (Major autohemotherapy (MAH)), 10pass (10-pass ozone), iv-therapy (IV nutrient therapy), hbot (Hyperbaric oxygen), prp (PRP), peptides (Peptide therapy), chelation (Chelation), nad (NAD+ therapy), other (Other services).
latitudenumberLatitude of the listed address, when known, to up to five decimal places (about a meter), which is precise enough to find the building.
longitudenumberLongitude of the listed address, when known, to up to five decimal places.
listing_urlURLThe clinic's page on EBO2.com, which shows each fact with the clinic's exact words.
pages_statustextread: a research pass read the clinic's EBO2 page, so an empty fact below means the page does not state it. could-not-read: the pass could not load or find the page, so an empty fact means unknown. not-yet-researched: no pass has run for this listing yet.
pages_read_datedateThe date the research pass read the pages. Empty unless pages_status is read.
pages_read_urlslistThe pages the research pass read. Every fact below comes from one of them. Empty unless pages_status is read. An address whose path words a health claim is shortened to the site's own address.
price_usdnumberThe price of one EBO2 session in US dollars, as the clinic states it.
price_notetextWording that qualifies the price, such as "starting at" or a separate member rate, when there is any. Left empty when that wording names a condition or makes a health claim.
price_sourcetextclinic-page: the research pass read the price on the clinic's EBO2 page, with its exact words checked against the saved text of the pages read for that clinic. listing: the price was recorded from the clinic's website earlier, when the listing was checked. Every price figure on the site counts the clinic-page prices of rows whose pages_status is read, and no others; the rest show on the clinic's page. Empty when there is no price.
price_source_urlURLThe page the price came from, shortened to the site's own address when its path words a health claim.
price_datedateThe date the price was read: pages_read_date for a clinic-page price, and the date of the listing check for a listing price.
packageslistMulti-session packages as sessions:total in US dollars, for example 3:4200. In the JSON, a list of objects with sessions and total_usd.
session_minutes_minnumberThe shortest session length the clinic states, in minutes.
session_minutes_maxnumberThe longest session length the clinic states, in minutes. The same as the minimum when the clinic states one length.
devicetextThe device or system, as the clinic names it. Here and in the text fields below, a value whose wording names a condition or makes a health, safety, or FDA claim reads "Described on the clinic's page" instead, as on the clinic's page on EBO2.com.
supervisiontextWho supervises sessions, as the clinic words it (a short form of the sentence on its page).
intaketextWhat the clinic says happens before a first session, such as a consultation, labs, or screening (short form).
course_sessions_minnumberThe smallest number of sessions in the course the clinic recommends.
course_sessions_maxnumberThe largest number of sessions in the course the clinic recommends.
course_cadencetextHow often the clinic says sessions happen, in its words (short form).
add_onslistServices the clinic offers together with an EBO2 session, with the price when stated, for example UV light ($150). In the JSON, a list of objects with name and usd.

studies.csv

FieldTypeWhat it holds
idtextOur identifier for the study. Its notes page is https://ebo2.com/research/<id>/.
titletextTitle of the paper.
authorslistAuthors as cited.
yearnumberYear of publication.
journaltextJournal or publisher.
pmidtextPubMed identifier, when there is one.
doitextDigital Object Identifier, when there is one.
urlURLWhere to read the paper or its abstract.
study_typetextrct, controlled-trial, cohort, case-series, case-report, review, meta-analysis, in-vitro, animal, mechanistic, or other.
sample_sizenumberThe sample size recorded in our library. What it counts depends on study_type: people, animals, or the people across the studies a review covers.
relevancetextebo2 (a study of EBO2 or EBOO as given to people, or a review of them), safety, ozone-general (other ozone methods), or mechanism (background science).
designtextThe design, as the paper describes it (short form).
settingtextCountry, institution, or setting, as the paper states it.
armslistStudy groups as label (n=size): what they received. The size is left out when the paper does not give it.
ozone_concentrationtextOzone concentration, as the paper writes it, in its own units; empty when the text we read does not report it.
blood_volumetextBlood volume treated, as the paper writes it, in its own units; empty when the text we read does not report it.
session_lengthtextSession length, as the paper writes it, in its own units; empty when the text we read does not report it.
sessionstextNumber or schedule of sessions, as the paper writes it, in its own units; empty when the text we read does not report it.
blood_flowtextBlood flow rate, as the paper writes it, in its own units; empty when the text we read does not report it.
anticoagulanttextAnticoagulant, as the paper writes it, in its own units; empty when the text we read does not report it.
filtertextFilter or oxygenator, as the paper writes it, in its own units; empty when the text we read does not report it.
adverse_eventstextAdverse events as the paper reports them, including "none recorded". Empty when the text we read does not address them.
follow_uptextHow long participants were followed, as reported.
funding_or_conflictstextFunding or conflicts of interest, as the paper states them. Empty when the text we read says nothing.
noticeslistErrata, corrections, or retraction notices shown on the paper's PubMed page.
read_fromtextfull-text when the methods section was available to us; abstract when only the abstract was.
card_notestextWhat the reader noted about the source: what was available, and what the text does not say.
card_checkeddateThe date the paper was read for this card.
card_pageslistThe pages the card was read from. Every field above carries an exact quote from one of them on our study pages.

regulatory.json

FieldTypeWhat it holds
idtextOur identifier for the record.
datedateThe date on the document itself: issued, effective, or published.
jurisdictiontextUS-federal, US-state, EU, UK, Italy, Germany, Canada, Australia, or other.
bodytextThe agency, court, legislature, or board that issued the document.
kindtextwarning-letter, regulation, guidance, statement, enforcement, safety-communication, position-statement, court-decision, or other.
titletextThe title of the document.
urlURLThe primary source: the issuing body's own page or document.
summarytextWhat the document is and says, in our neutral words.
key_quotetextExact words from the source at url. A script checks each one against the saved text of the regulatory sources we read, pooled across all of them rather than against the one page at url; the saved copies are not published.
topictextebo2, ozone-devices, ozone-therapy, dialysis-filters, or health-claims.
namedtextThe party the document names, when it names one.
statustextcurrent, superseded, or historical, as of the date we checked.
checkeddateThe date we read the source.

Change log

DateChange
Clinics: a new price_source column says whether a price was read on the clinic's EBO2 page or recorded when the listing was checked; the reports count only the first kind, from clinics whose pages_status is read. A device, supervision, intake, course cadence, or add-on value whose wording names a condition or makes a health, safety, or FDA claim now reads "Described on the clinic's page", and such a price note is left empty, as on the clinic pages.
First release: clinics as CSV and JSON, study cards as CSV, and regulatory records as JSON.

Routine refreshes of the data are not listed: each file states the date its data was read.

Report an error

If a value is wrong, tell us through the contact form and choose "Report an error or request a correction". Give the file, the row's id, and what the source says. Clinics can also claim and correct their listing.