Vehicle data

BMW 3-Series vehicle data API: signals, model years and connection options

Get API keys →

DIMO gives developers API access to BMW 3-Series vehicle data. Model years 2006 and newer connect with a DIMO device (DIMO LTE R1 or AutoPi). Headline signals include odometer, fuel percentage and vehicle speed.

DIMO gives developers API access to vehicle-state data: diagnostics, fault codes, battery and fuel health, odometer, and maintenance signals. For the BMW 3-Series, the vehicle connects through a DIMO device, for model years 2006 and newer, and this coverage has been tested. You read the data through the Telemetry API with a Vehicle JWT. DIMO adds vehicle-state depth on top of GPS tracking; it doesn't replace it.

Signals by connection type

DIMO device — DIMO LTE R1 (2006 and newer)

SignalDIMO nameUnit
OdometerpowertrainTransmissionTravelledDistancekm
Fuel PercentagepowertrainFuelSystemRelativeLevel%
Vehicle Speedspeedkm/h
Vehicle Ignition StatusisIgnitionOn—
Engine RPMpowertrainCombustionEngineSpeedrpm
Coolant TemperaturepowertrainCombustionEngineECT°C
Air TemperatureexteriorAirTemperature°C
Back Left WheelchassisAxleRow2WheelLeftTirePressurekPa
Back Right WheelchassisAxleRow2WheelRightTirePressurekPa
Battery RangepowertrainTractionBatteryRangekm
Distance with MIL OnobdDistanceWithMILkm
DTC CountobdStatusDTCCount—
Engine runtimeobdRunTimeseconds
Front Left WheelchassisAxleRow1WheelLeftTirePressurekPa
Front Right WheelchassisAxleRow1WheelRightTirePressurekPa
Fuel TypeobdFuelTypeName—
Low Voltage BatterylowVoltageBatteryCurrentVoltagevolts
OBD Device Plugged InobdIsPluggedIn—
Powertrain TypepowertrainType—
Throttle PositionpowertrainCombustionEngineTPS%
Altitude LevelcurrentLocationAltitudem
CoordinatescurrentLocationCoordinates—
HeadingcurrentLocationHeadingdegrees

DIMO device — AutoPi (2010 and newer)

SignalDIMO nameUnit
Vehicle Speedspeedkm/h
Engine RPMpowertrainCombustionEngineSpeedrpm
Coolant TemperaturepowertrainCombustionEngineECT°C
Air TemperatureexteriorAirTemperature°C
Barometric PressureobdBarometricPressurekPa
Diagnostic Trouble CodesobdDTCList—
Engine Air IntakepowertrainCombustionEngineMAFgrams/second
Engine LoadobdEngineLoad%
Engine runtimeobdRunTimeseconds
Intake temperatureobdIntakeTemp°C
Low Voltage BatterylowVoltageBatteryCurrentVoltagevolts
Throttle PositionpowertrainCombustionEngineTPS%
Altitude LevelcurrentLocationAltitudem
CoordinatescurrentLocationCoordinates—

No factory connectivity?

BMW 3-Series model years 2006 and newer have no OEM cloud connection listed. For these years, a DIMO device (DIMO LTE R1 or AutoPi) plugs into the OBD-II port and streams vehicle signals once the owner connects it and consents to sharing.

See the developer quickstart for how owners connect vehicles and grant access.

Events available

  • Idling
  • Refuel
  • Harsh braking
  • New diagnostic trouble code

Build it

Query the latest BMW 3-Series signals with the DIMO TypeScript SDK. The vehicle owner must first share access with your app through DIMO Connect.

import { DIMO } from '@dimo-network/data-sdk';
const dimo = new DIMO('Production');
const tokenId = Number(process.env.DIMO_TOKEN_ID); // from DIMO Connect
const developerJwt = await dimo.auth.getDeveloperJwt({
client_id: process.env.DIMO_CLIENT_ID,
domain: process.env.DIMO_REDIRECT_URI,
private_key: process.env.DIMO_API_KEY,
});
const vehicleJwt = await dimo.tokenexchange.getVehicleJwt({
...developerJwt,
tokenId,
});
// Latest BMW 3-Series signals
const data = await dimo.telemetry.query({
...vehicleJwt,
query: `
query {
signalsLatest(tokenId: ${tokenId}) {
powertrainTransmissionTravelledDistance {
value
timestamp
}
powertrainFuelSystemRelativeLevel {
value
timestamp
}
speed {
value
timestamp
}
}
}`,
});
console.log(JSON.stringify(data, null, 2));

Full walkthrough: Developer quickstart.

FAQ

Can I read fuel level remotely on a BMW 3-Series?

Yes, with a DIMO device. The DIMO LTE R1 lists a Fuel Percentage signal, powertrainFuelSystemRelativeLevel, which you can query through the Telemetry API. Refuel events are listed for that device and can be detected with the refuel mechanism in the segments query.

How do I track a BMW 3-Series with no connected services?

Install a DIMO device, which is the connection type listed for this vehicle. Once the owner shares the vehicle with you, exchange your Developer JWT for a Vehicle JWT through the Token Exchange API and query signals in the Telemetry API. Trips are available through the segments query.

Can I get check-engine light alerts for a BMW 3-Series?

Yes, with the AutoPi DIMO device, which lists the dtc event and the obdDTCList signal (Diagnostic Trouble Codes). To get pushed alerts, use the Vehicle Triggers API (webhooks), which sends a POST to your targetURL when a condition you configure is met.

How do I detect idling on a BMW 3-Series?

Idling is listed as an event for both DIMO devices on this vehicle. Query the segments resource in the Telemetry API with the idling mechanism, which finds contiguous periods where engine RPM stays in the idle range and requires a DIMO device.

How do I verify BMW 3-Series mileage?

The DIMO LTE R1 lists an Odometer signal. Call the Attestation API's odometer-statement endpoint with a Vehicle JWT to generate a verifiable odometer attestation, then retrieve it through the Telemetry API.

Which BMW 3-Series model years work with DIMO?

DIMO devices have been seen working on BMW 3-Series model years 2006 and newer. For older vehicles, contact DIMO for additional support.

Do I need hardware to get BMW 3-Series data?

Yes. DIMO lists no OEM cloud connection for the BMW 3-Series, so data comes from a DIMO device.

Source: DIMO vehicle compatibility records. Coverage tested on a connected vehicle. Last verified .