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.

Coverage

PortalJurisdictionRecordsCheckedLast checked
California AGCalifornia5,415Every 30 minutes2026-11-09 11:30 UTC
Texas AGTexas716Every 30 minutes2026-11-09 11:31 UTC
Massachusetts OCABRMassachusetts1,949Every six hours2026-11-08 23:48 UTC
Washington AGWashington55Every 30 minutes2026-11-09 11:31 UTC
Delaware DOJDelaware311Every 30 minutes2026-11-09 11:31 UTC
Vermont AGVermont574Every 30 minutes2026-11-09 11:31 UTC
Iowa AGIowa48Every 30 minutes2026-11-09 11:31 UTC
Wisconsin DATCPWisconsin21Every 30 minutes2026-11-09 11:31 UTC
Oregon DOJOregon1,662Every six hours2026-11-09 06:54 UTC
HHS OCRFederal767Every 30 minutes2026-11-09 11:31 UTC
SEC 8-K Item 1.05Federal1Every 30 minutes2026-11-09 11: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, or-doj, 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, Oregon).
total_affectedintegerEveryone affected by the incident, when the filing says so: the count itself for HHS and Oregon, and the total Texas publishes next to its own residents. Null otherwise.
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