This is the free, open developer sample of MechanicDB: an automotive OBD-II diagnostic database mapping standardized Diagnostic Trouble Codes (DTCs) to ranked repair procedures, DIY difficulty ratings, and aftermarket parts cost estimates.
The full commercial dataset covers 15,886 verified DTC codes (9,249 SAE-standard + 6,637 manufacturer-specific OEM codes across 32 makes) → 56,528 ranked fixes → 74,916 parts mappings across 644 authored fault families, delivered as CSV, Parquet, and SQLite. The OEM Complete license ($149) — the full merged SAE + OEM dataset — is live now. This repository contains a 90-code curated sample (75 SAE + 15 OEM) of the most commonly searched codes (P0420, P0171, P0300, …) in the identical schema, so you can prototype joins, pipelines, and apps before licensing the full database.
| File | Rows | Description |
|---|---|---|
dtc_codes.csv / .parquet |
90 (75 SAE + 15 OEM) | Code registry: DTC, system category, OEM flag/make, fault family, short description, detailed technical explanation |
diagnostic_fixes.csv / .parquet |
320 | Ranked repair procedures with difficulty, parts-cost range (USD), labor hours, step-by-step instructions |
replacement_parts.csv / .parquet |
449 | Aftermarket part names per fix with catalog search URLs |
dtc_fixes_joined.csv / .parquet |
320 | Pre-joined analytical view (codes × fixes) for one-file ingestion |
Full column documentation: DATA_DICTIONARY.md. CSVs are pipe-delimited (|), UTF-8 with BOM; Parquet uses Snappy compression.
import pandas as pd
df = pd.read_csv("dtc_fixes_joined.csv", sep="|", encoding="utf-8-sig")
easy = df[df["difficulty_level"] == "Easy DIY"]
print(easy[["dtc_code", "short_description", "fix_title", "est_parts_cost_min_usd"]].head())import duckdb
print(duckdb.query("""
SELECT dtc_code, fix_title, difficulty_level, est_parts_cost_min_usd
FROM 'dtc_fixes_joined.parquet'
ORDER BY est_parts_cost_min_usd
LIMIT 10
""").df())- Code definitions are compiled from public SAE J2012-derived sources (MIT-licensed compilation; attribution in LICENSE-upstream.txt and SOURCES.md).
- Repair procedures, difficulty ratings, and cost ranges are original authored content grounded in standard diagnostic practice. Cost and labor figures are editorial estimates for typical US aftermarket parts and independent-shop labor — not quotes.
- Every release is produced by a deterministic, test-gated build pipeline: referential integrity, anti-template uniqueness checks, and a no-fabricated-codes gate (every published code traces to the committed source).
- This sample dataset: Open Database License (ODbL) v1.0 — free for research, education, and benchmarking with attribution and share-alike.
- Full commercial dataset (15,886 codes — 9,249 SAE + 6,637 OEM across 32 makes — commercial application rights for OBD-II apps/dongles, AI mechanic co-pilots, shop software, valuation tools): available under commercial license in two tiers — Standard ($49, SAE-only) and OEM Complete ($149, the full merged dataset, live now). Open an issue in this repository or email mechanicdb.urologist336@simplelogin.com for licensing inquiries.
A browsable overview of the full commercial dataset (schema, specifications, licensing tiers, and an interactive DTC anatomy decoder) is live at mechanicdb-public.pages.dev (source: index.html).
The same sample is published on Kaggle: MechanicDB: Automotive OBD-II Diagnostic & Repair Database.