US Product & Food/Drug/Device Recalls (CPSC + FDA)
A clean, cross-agency recall feed no scraper sells: US consumer-product recalls (CPSC) plus FDA food, drug and device enforcement/recalls (openFDA), normalised into ONE tidy table - one row per recalled product. Common schema across sources: recall id, date, product, recalling firm, reason/hazard, FDA severity classification, status, country/state and a link. The dedup + normalisation IS the product. Consumer-contact and injury free-text dropped (no PII).
- Source
- CPSC + FDA
- Licence
- Redistributable open data
- Quality
- QC clean · 0 failures
- Format
- Apache Parquet + dictionary
Safe to train on
Built only from a named, redistributable official source under a documented open licence - not scraped web data. No copyright grey zone, no personal data. Ships machine-readable Croissant metadata (ML Commons - loads in Hugging Face / Kaggle / Google), an AI training-licence manifest documenting source, licence and provenance for your model's data governance, and a machine-readable data dictionary (drop it into an agent / RAG prompt so the model knows every column) - all inspectable before you buy.
What's included
- CPSC consumer-product recalls + FDA food/drug/device enforcement in one normalised table
- One row per recalled product: id, date, product, firm, reason/hazard, severity, status, link
- Common schema across agencies - the cross-jurisdiction dedup/normalise is the value-add
- FDA classification (Class I/II/III severity) + status; CPSC hazard descriptions
- Audiences: retail & marketplace trust-&-safety, compliance/QA, insurers, ESG/supply-chain
- No PII - consumer-contact & injury free-text dropped
- Public domain (CPSC) + CC0 (FDA openFDA) - free commercial reuse & resale
- Sources: U.S. Consumer Product Safety Commission + U.S. FDA (openFDA enforcement)
Schema
| Column | Type | Description | Filled | Distinct |
|---|---|---|---|---|
| source | str | CPSC / FDA-food / FDA-drug / FDA-device (part of primary key) | 100.0% | 4 |
| recall_id | str | Recall number/id within the source (part of primary key) | 100.0% | 53,010 |
| recall_date | str | Recall date (YYYY-MM-DD) | 100.0% | 4,146 |
| product | str | Recalled product description | 100.0% | 52,445 |
| product_type | str | Product type / category | 100.0% | 4 |
| recalling_firm | str | Recalling firm / manufacturer | 95.1% | 8,505 |
| reason | str | Reason for recall / hazard description | 100.0% | 17,072 |
| classification | str | FDA severity classification (Class I/II/III; null for CPSC) | 92.0% | 3 |
| status | str | Recall status (Ongoing/Completed/Terminated; null for CPSC) | 92.0% | 3 |
| country | str | Country of the recalling firm / manufacture | 92.4% | 55 |
| state | str | US state (FDA rows) | 92.0% | 60 |
| url | str | Link to the recall notice (CPSC) | 8.0% | 4,238 |
Sample & preview
Every purchase ships as Apache Parquet with a data dictionary and the full QC report. A free sample (first rows + schema) is downloadable here - confirm fit before you buy. Source: CPSC + FDA (redistributable open data; attribution passes through - see our Licence).
Don't trust screenshots - drop the sample into your notebook right now.
import pandas as pd df = pd.read_parquet("global-product-recalls_sample.parquet") df.info() # typed columns, gap-aware, ready to join⬇ Download free Parquet sample or CSV for Excel
Related datasets
EU Business Formation Dynamics
Net business creation across Europe: enterprise births, deaths, active-population, birth/death/churn rates, net population growth, jobs created & lost, and 1/3/5-year survival rates - by country x NACE sector x year, 2009-2023. Sourced from Eurostat Business Demography (bd_size), cleaned to one tidy Parquet panel. Aggregate flows only, no company-level data.
European Power Plant Registry
Every conventional power plant in Europe in one clean table: name, operator, country, net capacity, fuel/technology, commissioning year and location - assembled and de-duplicated from Open Power System Data. The asset reference table that joins to generation, capacity and carbon analytics by country and fuel.
Global Cities Gazetteer (GeoNames, pop ≥ 1,000)
Every populated place on Earth with population ≥ 1,000 - ~150k cities and towns - in one clean, geocoded table. GeoNames ships it as a header-less tab-delimited dump; we parse it to a tidy row per place: name (+ ASCII), country, admin-1/2 codes, population, elevation, timezone and lat/lon. The universal populated-place join key (name ⋈ country ⋈ coordinates) that geocodes or enriches any geo dataset. CC-BY 4.0.