German Vehicle #KBA #API: Complete Guide to German Car Data Lookup Using KBA Numbers
https://www.kbaapi.de/

Germany represents Europe’s largest automotive market and home to world-renowned manufacturers like BMW, Mercedes-Benz, Audi, and Volkswagen. Unlike most vehicle registration APIs that use license plates, the German Vehicle API operates using KBA numbers (Kraftfahrt-Bundesamt codes) – unique identifiers registered with the Federal Motor Transport Authority. (https://www.kbaapi.de/)
Understanding the German KBA System
The Kraftfahrt-Bundesamt (KBA) is Germany’s Federal Motor Transport Authority, responsible for vehicle type approvals and maintaining the central database of vehicle specifications. Every vehicle model sold in Germany receives a unique KBA number that identifies its exact specifications, engine type, and technical details.
What is a KBA Number?
A KBA number consists of two parts in the format HSN/TSN:
- HSN (Herstellerschlüsselnummer) – Manufacturer key number
- TSN (Typschlüsselnummer) – Type key number
Together, these numbers uniquely identify a specific vehicle model variant, including engine specifications, body type, and equipment levels.
Where to Find KBA Numbers
KBA numbers can be found in several locations on German vehicle documentation:
- Vehicle Registration Certificate (Part 1) – Fields 2.1 and 2.2
- Vehicle Registration Document – Boxes 2 and 3
- Certificate of Conformity – Technical documentation
- Insurance Documents – Often included in policy details
German Vehicle API Features
The German endpoint provides comprehensive technical specifications for vehicles registered in Germany:
Available Data
When querying German vehicle records using KBA numbers, you can retrieve:
- Make and Model – Complete manufacturer and model designation
- Engine Specifications – Power in both KW and horsepower (PS)
- Engine Capacity – Displacement in cubic centimeters
- Fuel Type – Petrol (Benzin), diesel, electric, or hybrid classifications
- Technical Period – Years of manufacture for this specification
- Representative Images – Visual identification of the vehicle type
Sample Response Format
{
"Description": "ALFA GIULIETTA Spider 1.3 [196101 - 196212] (59kW 80hp Otto AR 00508)",
"CarMake": {
"CurrentTextValue": "alfa romeo"
},
"CarModel": {
"CurrentTextValue": "GIULIETTA SPIDER"
},
"MakeDescription": {
"CurrentTextValue": "alfa romeo"
},
"ModelDescription": {
"CurrentTextValue": "GIULIETTA SPIDER"
},
"PowerKW": 59,
"PowerHP": 80,
"EngineSize": 1281,
"Fuel": "Benzin"
}
API Implementation
Endpoint Usage
The German Vehicle API uses the /CheckGermany endpoint and requires two parameters:
- KBA Number – In HSN/TSN format (e.g., “4000/305”)
- Username – Your API authentication username
Basic Implementation Example
// JavaScript example for German KBA lookup
async function lookupGermanVehicle(kbaNumber, username) {
const apiUrl = `https://www.regcheck.org.uk/api/reg.asmx/CheckGermany?KBANumber=${kbaNumber}&username=${username}`;
try {
const response = await fetch(apiUrl);
const xmlText = await response.text();
// Parse XML response
const parser = new DOMParser();
const xmlDoc = parser.parseFromString(xmlText, "text/xml");
const jsonData = xmlDoc.getElementsByTagName("vehicleJson")[0].textContent;
const vehicleInfo = JSON.parse(jsonData);
return {
make: vehicleInfo.MakeDescription.CurrentTextValue,
model: vehicleInfo.ModelDescription.CurrentTextValue,
powerKW: vehicleInfo.PowerKW,
powerHP: vehicleInfo.PowerHP,
engineSize: vehicleInfo.EngineSize,
fuel: vehicleInfo.Fuel,
description: vehicleInfo.Description
};
} catch (error) {
console.error('German KBA lookup failed:', error);
return null;
}
}
// Usage example
lookupGermanVehicle("4000/305", "your_username")
.then(data => {
if (data) {
console.log(`Vehicle: ${data.make} ${data.model}`);
console.log(`Power: ${data.powerKW}kW (${data.powerHP}hp)`);
console.log(`Engine: ${data.engineSize}cc ${data.fuel}`);
}
});
Python Implementation
import requests
import xml.etree.ElementTree as ET
import json
def lookup_german_vehicle(kba_number, username):
"""
Look up German vehicle data using KBA number
Args:
kba_number (str): KBA number in format "HSN/TSN"
username (str): API username
Returns:
dict: Vehicle specifications or None if not found
"""
url = "https://www.regcheck.org.uk/api/reg.asmx/CheckGermany"
params = {
'KBANumber': kba_number,
'username': username
}
try:
response = requests.get(url, params=params)
response.raise_for_status()
# Parse XML response
root = ET.fromstring(response.content)
json_element = root.find('.//vehicleJson')
if json_element is not None and json_element.text:
vehicle_data = json.loads(json_element.text)
return {
'make': vehicle_data.get('MakeDescription', {}).get('CurrentTextValue'),
'model': vehicle_data.get('ModelDescription', {}).get('CurrentTextValue'),
'power_kw': vehicle_data.get('PowerKW'),
'power_hp': vehicle_data.get('PowerHP'),
'engine_size': vehicle_data.get('EngineSize'),
'fuel_type': vehicle_data.get('Fuel'),
'description': vehicle_data.get('Description')
}
else:
return None
except Exception as e:
print(f"Error looking up KBA {kba_number}: {e}")
return None
# Example usage
vehicle_info = lookup_german_vehicle("4000/305", "your_username")
if vehicle_info:
print(f"Make: {vehicle_info['make']}")
print(f"Model: {vehicle_info['model']}")
print(f"Power: {vehicle_info['power_kw']}kW ({vehicle_info['power_hp']}hp)")
print(f"Engine: {vehicle_info['engine_size']}cc")
print(f"Fuel: {vehicle_info['fuel_type']}")
German Automotive Market Context
Major German Manufacturers
The German automotive industry is dominated by several world-leading manufacturers, each with distinct KBA number ranges:
Luxury Brands:
- Mercedes-Benz – Known for luxury sedans, SUVs, and commercial vehicles
- BMW – Premium vehicles including the iconic 3 Series, 5 Series, and X-series SUVs
- Audi – Volkswagen Group’s luxury division with quattro all-wheel drive technology
Volume Manufacturers:
- Volkswagen – Europe’s largest automaker with diverse model range
- Opel – German subsidiary of Stellantis (formerly General Motors)
- Ford Germany – American manufacturer’s European operations
Specialist Manufacturers:
- Porsche – High-performance sports cars and SUVs
- Smart – City cars and electric vehicles
- Maybach – Ultra-luxury vehicles
Technical Specifications in German Data
German vehicle data typically includes precise technical specifications reflecting the country’s rigorous automotive standards:
Engine Data:
- Power ratings in both KW (European standard) and PS (German horsepower)
- Precise displacement measurements in cubic centimeters
- Detailed fuel type classifications including Euro emission standards
Period Information:
- Exact production periods showing when specifications were valid
- Model year ranges for specific technical configurations
- Regulatory compliance periods
Use Cases for German KBA API
Insurance Industry Applications
Premium Calculation:
- Access precise power ratings for risk assessment
- Engine size data for determining insurance categories
- Technical specifications for replacement value calculations
Claims Processing:
- Verify vehicle specifications for parts compatibility
- Confirm power ratings for performance-related claims
- Validate technical data for repair cost estimates
Automotive Industry
Parts and Service:
- Identify correct parts using precise technical specifications
- Determine service intervals based on engine types
- Verify compatibility for aftermarket components
Vehicle Trading:
- Accurate vehicle descriptions for used car listings
- Specification verification for import/export documentation
- Technical data for vehicle valuations
Fleet Management
Asset Tracking:
- Maintain detailed technical records of company vehicles
- Power and fuel type data for operational planning
- Engine specifications for maintenance scheduling
Compliance Monitoring:
- Verify emissions standards for environmental regulations
- Power ratings for driver license category compliance
- Technical data for safety inspections
Development and Research
Market Analysis:
- Technical specification trends in German automotive market
- Power and efficiency data for competitive analysis
- Fuel type distribution for market research
Regulatory Compliance:
- Emission standard verification for import/export
- Technical data for type approval processes
- Specification validation for regulatory filings
KBA Number Validation and Best Practices
Input Validation
function validateKBANumber(kbaNumber) {
// KBA format: HSN/TSN (e.g., "4000/305")
const kbaPattern = /^\d{4}\/\d{3}$/;
if (!kbaNumber) {
return { valid: false, error: "KBA number is required" };
}
if (!kbaPattern.test(kbaNumber)) {
return {
valid: false,
error: "Invalid KBA format. Expected format: XXXX/XXX (e.g., 4000/305)"
};
}
const [hsn, tsn] = kbaNumber.split('/');
if (parseInt(hsn) < 1000 || parseInt(hsn) > 9999) {
return { valid: false, error: "HSN must be between 1000 and 9999" };
}
if (parseInt(tsn) < 1 || parseInt(tsn) > 999) {
return { valid: false, error: "TSN must be between 001 and 999" };
}
return { valid: true };
}
// Example usage
const validation = validateKBANumber("4000/305");
if (validation.valid) {
// Proceed with API call
} else {
console.error(validation.error);
}
Error Handling
class GermanVehicleAPI:
def __init__(self, username):
self.username = username
self.base_url = "https://www.regcheck.org.uk/api/reg.asmx/CheckGermany"
def validate_kba_format(self, kba_number):
"""Validate KBA number format"""
if not kba_number or '/' not in kba_number:
return False, "KBA number must contain HSN/TSN format"
try:
hsn, tsn = kba_number.split('/')
if len(hsn) != 4 or len(tsn) != 3:
return False, "HSN must be 4 digits, TSN must be 3 digits"
int(hsn) # Validate numeric
int(tsn) # Validate numeric
return True, "Valid format"
except ValueError:
return False, "HSN and TSN must be numeric"
def lookup(self, kba_number):
"""Lookup vehicle by KBA number with comprehensive error handling"""
# Validate format
is_valid, message = self.validate_kba_format(kba_number)
if not is_valid:
return {"error": message}
try:
response = requests.get(self.base_url, params={
'KBANumber': kba_number,
'username': self.username
}, timeout=10)
if response.status_code == 404:
return {"error": "KBA number not found in database"}
response.raise_for_status()
# Parse response
root = ET.fromstring(response.content)
json_element = root.find('.//vehicleJson')
if json_element is None or not json_element.text:
return {"error": "No vehicle data available for this KBA number"}
return json.loads(json_element.text)
except requests.Timeout:
return {"error": "API request timed out"}
except requests.RequestException as e:
return {"error": f"API request failed: {str(e)}"}
except ET.ParseError:
return {"error": "Invalid XML response from API"}
except json.JSONDecodeError:
return {"error": "Invalid JSON data in response"}
# Usage
api = GermanVehicleAPI("your_username")
result = api.lookup("4000/305")
if "error" in result:
print(f"Lookup failed: {result['error']}")
else:
print(f"Vehicle found: {result.get('Description')}")
Comparison with License Plate Systems
Why KBA Numbers Instead of License Plates?
The German system’s use of KBA numbers instead of license plates reflects several key differences:
Technical Precision:
- KBA numbers identify exact technical specifications
- License plates only identify individual vehicles
- Multiple vehicles can share the same KBA specifications
Privacy Protection:
- KBA lookups don’t reveal personal ownership information
- License plate systems often include owner data
- Complies with strict German data protection laws (GDPR)
Standardization:
- KBA numbers are consistent across all German states
- License plate formats vary by region and time period
- Technical specifications remain constant regardless of registration location
Alternative: German License Plate Availability
For developers specifically needing German license plate availability checking, a separate service is available through RapidAPI. However, this service only checks if a license plate combination is available for registration, not vehicle specifications.
Data Coverage and Limitations
Coverage Scope
- Complete KBA Database – All vehicles approved for German market
- Historical Data – Vehicles from 1960s onwards
- Technical Accuracy – Official specifications from Federal Motor Transport Authority
- Regular Updates – Database maintained with current approvals
Limitations
- KBA Number Required – Cannot lookup by license plate
- German Market Only – Covers vehicles approved for German sale
- Technical Focus – Provides specifications, not ownership data
- Import Vehicles – Limited data for non-German market vehicles
Getting Started with German KBA API
Account Setup Process
- Register Account – Sign up at regcheck.org.uk
- Email Verification – Confirm account to receive test credits
- Test with Sample Data – Use KBA number “4000/305” for testing
- Production Setup – Purchase credits for live applications
Sample KBA Numbers for Testing
- 4000/305 – Alfa Romeo Giulietta Spider 1.3L
- Test this KBA number without consuming credits during development
Integration Planning
- Determine if your application needs KBA number input from users
- Consider how to help users locate their KBA numbers
- Plan for error handling when KBA numbers aren’t found
- Design UI to display technical specifications clearly
Conclusion
The German Vehicle KBA API provides unique access to precise technical specifications for vehicles in the German market. By using official KBA numbers rather than license plates, the system offers technical accuracy while maintaining privacy compliance.
The API serves various industries from insurance and automotive services to fleet management and regulatory compliance. With proper implementation and error handling, developers can integrate reliable German vehicle specification data into their applications.
Understanding the KBA system’s technical focus and format requirements is essential for successful integration. The system’s precision makes it particularly valuable for applications requiring exact vehicle specifications rather than general identification data.
Ready to access German vehicle technical data? Register for your API account and start exploring the comprehensive KBA database today.
https://www.kbaapi.de/