The data

What a BreachTally record contains, where it comes from and how it is normalized. Everything on this page applies to the site, the alerts, the CSV files and the API alike.

Try it before paying

Download a sample CSV

The 500 most recent records, every field, no account needed. The same file format as the paid exports. The RSS feed at /feed.xml carries the 50 most recent records with a one-day delay.

Coverage

PortalJurisdictionRecordsCheckedLast checked
California AGCalifornia50Every 30 minutes2026-10-30 14:30 UTC
Texas AGTexas686Every 30 minutes2026-10-30 14:31 UTC
Massachusetts OCABRMassachusetts0DailyPending
Washington AGWashington50Every 30 minutes2026-10-30 14:31 UTC
Delaware DOJDelaware311Every 30 minutes2026-10-30 14:31 UTC
Vermont AGVermont49Every 30 minutes2026-10-30 14:31 UTC
Iowa AGIowa39Every 30 minutes2026-10-30 14:31 UTC
Wisconsin DATCPWisconsin21Every 30 minutes2026-10-30 14:31 UTC
HHS OCRFederal756Every 30 minutes2026-10-30 14:31 UTC
SEC 8-K Item 1.05Federal1Every 30 minutes2026-10-30 14:31 UTC

Records go back to each portal's earliest published year where the portal keeps an archive, and to the first day of indexing where it does not. New portals are added as their parsers are validated against the agency's own counts. Request one: support@breachtally.com.

Fields

FieldTypeMeaning
idstringStable record id, <source>:<source id>. Use it to deduplicate across pulls.
sourceenumPortal the record came from: ca-ag, tx-ag, ma-ocabr, wa-ag, de-ag, vt-ag, ia-ag, wi-datcp, hhs-ocr, sec-8k.
source_labelstringHuman name of the portal, as shown on the site.
org_namestringOrganization name as filed, whitespace and encoding cleaned, otherwise verbatim.
org_slugstringNormalized organization key (lowercase, punctuation and corporate suffixes removed). The same organization filing in several states shares one slug in most cases.
reported_datedateThe date the agency shows as the filing or posting date. ISO yyyy-mm-dd. Null when the portal gives none.
breach_start / breach_enddateStart and end of the breach window parsed from the filing. Equal when the filing gives one day. Null when the filing says unknown.
breach_dates_rawstringThe date text exactly as the portal shows it, for when the parse is not enough.
affected_countintegerNumber of people affected as stated to the agency. Null when the portal does not publish a count (California, SEC 8-K).
affected_scopeenumstate_residents when the count covers residents of the filing state, total when it covers everyone (HHS).
affected_statestringTwo-letter state of the filing. Null for federal sources (HHS, SEC).
data_typesstring[]Categories of data exposed, normalized from the filing text into the fixed vocabulary below. Empty when the portal lists none.
notice_urlurlThe agency's copy of the consumer notice letter (PDF) or the SEC filing. Null when the agency publishes none.
detail_urlurlThe record on the agency's own site.
summarystringShort text from the filing: the information listed as compromised, the entity type, or the Item 1.05 excerpt.
first_seen_atdatetimeUTC minute at which BreachTally indexed the record. This is the alert timestamp.
updated_atdatetimeUTC time of the last change to the record after indexing (amended counts, added letter). Null if never changed.
urlurlThe record's page on this site.

Data type vocabulary

Portals describe exposed data in free text. Each record is tagged with every category its text matches, so a filter means the same thing in every state.

TokenLabel
ssnSocial Security number
drivers_licenseDriver's license / state ID
passportPassport number
financialFinancial / bank account
medicalMedical / health information
health_insuranceHealth insurance
dobDate of birth
credentialsUsernames / passwords
emailEmail address
biometricBiometric data
military_idMilitary ID
tax_idTax ID / EIN / ITIN
phonePhone number
addressPostal address
nameName

What is not changed

Organization names, dates, counts and letter links are reproduced as the agency published them. Normalization adds fields (slug, ISO dates, data type tags), it never edits the agency's values. When an agency amends a record, the record here is updated and updated_at is set. When you report an error we check it against the agency's record and correct it within one business day, noting the correction on the record page.

Timing

Portals are checked every 30 minutes. Paid alerts go out in the same cycle a record is first seen, so the delay between an agency posting and the alert is under 30 minutes plus the agency's own publication lag. first_seen_at is on every record so the timing is verifiable.

Start a 14-day free trial API reference