Example codes to try
- P0171 — System too lean (Bank 1). Generic OBD-II, common on every BMW.
- P0300 — Random/multiple cylinder misfire detected.
- P0420 — Catalyst system efficiency below threshold.
- P0011 — Camshaft position A timing over-advanced.
- 29E0 — Fuel injection rail, pressure sensor signal (BMW-specific).
- 2A82 — VANOS intake control fault (BMW-specific).
- 30FF — Turbocharger, charge-air pressure too low (BMW-specific).
- U0100 — Lost communication with ECM/PCM "A".
API reference
The lookup widget is a thin client over the public Beemuu API. The same endpoints are available to any tooling:
| Endpoint | Returns |
|---|---|
GET /api/dtc | List of codes (paginated). 444 entries. |
GET /api/dtc/<code> | Single code. 404 if not in the catalog. |
The single-code endpoint returns a JSON document with code, title, description, severity, category, likely_causes, verified, source and timestamps. The lookup widget reads the same shape.
Privacy
The lookup tool sends only the code you typed. It has no access to your VIN, your vehicle, or any other identifying information. The request is logged at the API like every other public request and contains the code, the user agent and the IP that made the request. No cookies are set by this page.
A DTC tells you what a control module decided is outside its expected range. It does not automatically identify a failed component. Read freeze frames, compare related codes, and inspect live data before changing parts.
Lookup questions
What does the lookup tool do?
It calls the Beemuu public API and renders the result as a card.
Does it work without JavaScript?
Yes. The form is a plain GET against the same URL; the API returns JSON that the browser renders.
Why does my code return 404?
The catalog is seeded from the project's research files. Codes not yet seeded return 404.
Does it send my VIN?
No. Only the code you typed is transmitted.