VIN Lookup API Documentation
Comprehensive documentation for integrating our vehicle data API with your applications
Introduction
L'API de recherche VIN d'Autoref permet d'accéder à des informations complètes sur les véhicules en interrogeant différents identifiants tels que le VIN (Numéro d'Identification du Véhicule), les numéros d'homologation UE et les codes d'homologation suisses.
Notre API est conçue pour s'intégrer facilement à vos applications, offrant des spécifications techniques détaillées, des données environnementales et des documents officiels sur les véhicules.
Fonctionnalités de l'API
- ✓Recherches de véhicules basées sur le VIN
- ✓Support des VIN anciens (avant 1981)
- ✓Recherches par homologation UE
- ✓Recherches par code d'homologation suisse (code TG)
- ✓Spécifications détaillées des véhicules
- ✓Support multilingue
Pour Commencer
Authentification
Pour utiliser l'API Autoref, vous aurez besoin d'une clé API. Toutes les requêtes doivent inclure votre clé API comme paramètre d'en-tête.
Vous n'avez pas de clé API ? Contactez-nousX-API-Key: your_api_key_here
URL de base
Toutes les requêtes API doivent être effectuées à l'URL de base suivante :
https://api.autoref.eu
Format de réponse
Toutes les réponses sont retournées au format JSON. Les réponses réussies incluent un code d'état 200 OK.
{
"success": true,
"data": [{
"id": 55411,
"VIN": "WBA11AL010",
"BRAND": "BMW",
"BRAND_MODEL": "BMW M235I XDRIVE",
"MODEL": "M235i",
"MODEL2": "xDrive",
"MODEL3": null,
"POWER_KW": 225.0,
"POWER_DIN": 306.0,
"FUEL": "Gasoline",
"DATE_FIRST_CIRCULATION": 2020,
"RECORD_TYPE": "TG"
}]
}
Gestion des erreurs
Lorsque des erreurs se produisent, l'API renvoie un code d'état HTTP approprié et un message d'erreur.
{
"success": false,
"error": "not_found",
"message": "Vehicle not found"
}
Note importante :
Les limites de taux de l'API s'appliquent en fonction de votre forfait d'abonnement. Consultez la section Tarification pour plus de détails sur les limites de requêtes pour votre niveau.
API Endpoints
Our API offers several endpoints to query vehicle information using different identifiers.
Recherche VIN
Récupérer les informations du véhicule par VIN (Numéro d'Identification du Véhicule).
Paramètres de chemin
Paramètre | Type | Description |
---|---|---|
vin | string | Le VIN (Numéro d'Identification du Véhicule) du véhicule. Minimum 10 caractères. |
Paramètres de requête
Paramètre | Type | Défaut | Description |
---|---|---|---|
lang | string | en | Code de langue pour les réponses localisées (en, fr, de, es, it) |
Exemple de requête
curl -X GET "https://api.autoref.eu/vehicles/WBA11AL0101234567" \
-H "X-API-Key: your_api_key_here"
Exemple de réponse
[
{
"id": 55411,
"VIN": "WBA11AL010",
"BRAND": "BMW",
"BRAND_MODEL": "BMW M235I XDRIVE",
"MODEL_COC": null,
"VARIANT": null,
"VERSION": null,
"MODEL": "M235i",
"MODEL2": "xDrive",
"MODEL3": null,
"POWER_KW": 225.0,
"POWER_DIN": 306.0,
"FUEL": "Essence",
"DATE_FIRST_CIRCULATION": 2020,
"RECORD_TYPE": "TG"
}
]
Champs de réponse
Champ | Type | Description |
---|---|---|
id | integer | Identifiant unique pour l'enregistrement du véhicule |
VIN | string | Numéro d'Identification du Véhicule |
BRAND | string | Fabricant du véhicule |
BRAND_MODEL | string | Nom complet du modèle incluant la marque |
MODEL | string | Nom du modèle principal |
MODEL2 | string | Identifiant de modèle secondaire |
MODEL3 | string | Identifiant de modèle tertiaire |
POWER_KW | number | Puissance du moteur en kilowatts |
POWER_DIN | number | Puissance du moteur en chevaux (CH) |
FUEL | string | Type de carburant (Essence, Diesel, Électrique, etc.) |
DATE_FIRST_CIRCULATION | integer | Année de première immatriculation |
RECORD_TYPE | string | Type de base de données source (TG, OC, OLD, X) |
Remarques :
- Les recherches VIN ne sont pas sensibles à la casse. "WBA11AL010" et "wba11al010" renverront les mêmes résultats.
- Les correspondances partielles de VIN sont prises en charge. L'API renverra tous les véhicules correspondant au préfixe VIN fourni.
- Pour la plupart des véhicules modernes, un minimum de 10 caractères est nécessaire pour une correspondance fiable.
Recherche VIN ancien
Récupérer des informations pour les véhicules antérieurs à 1981 en utilisant un format de VIN/numéro de châssis plus court ainsi que le nom de la marque.
Paramètres de chemin
Paramètre | Type | Description |
---|---|---|
vin | string | Le VIN ancien ou numéro de châssis du véhicule. |
Paramètres de requête
Paramètre | Type | Obligatoire | Description |
---|---|---|---|
brand | string | Yes | Le fabricant du véhicule (par exemple, PORSCHE, BMW, MERCEDES-BENZ) |
lang | string | No | Code de langue pour les réponses localisées (en, fr, de, es, it) |
Exemple de requête
curl -X GET "https://api.autoref.eu/legacy-vehicles/9119311194?brand=PORSCHE&lang=en" \
-H "X-API-Key: your_api_key_here"
Exemple de réponse
[
{
"id": 11580,
"VIN": "9119311",
"BRAND": "PORSCHE",
"BRAND_MODEL": "PORSCHE 911 SC 3,0 TARGA",
"MODEL_COC": null,
"VARIANT": null,
"VERSION": null,
"MODEL": "911",
"MODEL2": "SC",
"MODEL3": "3,0 Targa",
"POWER_KW": 132.4,
"POWER_DIN": 180.0,
"FUEL": "Gasoline",
"DATE_FIRST_CIRCULATION": 1979,
"RECORD_TYPE": "OLD"
},
{
"id": 11581,
"VIN": "9119311",
"BRAND": "PORSCHE",
"BRAND_MODEL": "PORSCHE 911 SC 3.0",
"MODEL_COC": null,
"VARIANT": null,
"VERSION": null,
"MODEL": "911",
"MODEL2": "SC",
"MODEL3": "3.0",
"POWER_KW": 132.0,
"POWER_DIN": 179.0,
"FUEL": "Gasoline",
"DATE_FIRST_CIRCULATION": 1979,
"RECORD_TYPE": "OLD"
}
]
Champs de réponse
Mêmes champs que la réponse de recherche VIN, avec les différences suivantes :
Champ | Description |
---|---|
RECORD_TYPE | Sera "OLD" pour les véhicules anciens |
Note importante :
Les véhicules antérieurs à 1981 n'avaient pas de VIN standardisés. Pour des résultats précis :
- Le paramètre de marque est obligatoire
- Le VIN peut être plus court que les normes modernes (souvent 3-10 caractères)
- Plusieurs résultats peuvent être renvoyés pour la même combinaison VIN/marque
Recherche par homologation de type
Récupérer les véhicules par leur numéro d'homologation UE.
Paramètres de chemin
Paramètre | Type | Description |
---|---|---|
approval | string | Numéro d'homologation UE (par exemple, e1*2007/46*2064*07) |
Paramètres de requête
Paramètre | Type | Défaut | Description |
---|---|---|---|
lang | string | en | Code de langue pour les réponses localisées (en, fr, de, es, it) |
Exemple de requête
curl -X GET "https://api.autoref.eu/vehicles-by-approval/e1*2007/46*2064*07?lang=en" \
-H "X-API-Key: your_api_key_here"
Exemple de réponse
[
{
"id": 55424,
"VIN": "WBA11AL010",
"BRAND": "BMW",
"BRAND_MODEL": "BMW M235I XDRIVE",
"MODEL_COC": null,
"VARIANT": null,
"VERSION": null,
"MODEL": "M235i",
"MODEL2": "xDrive",
"MODEL3": null,
"POWER_KW": 225.0,
"POWER_DIN": 306.0,
"FUEL": "Gasoline",
"DATE_FIRST_CIRCULATION": 2023,
"RECORD_TYPE": "TG"
}
]
Format du numéro d'homologation de type
Les numéros d'homologation UE suivent ce format : e1*2007/46*2064*07
e1
: Code du pays où l'homologation a été délivrée (e1 = Allemagne)2007/46
: Numéro de directive-cadre2064
: Numéro d'homologation de base07
: Numéro d'extension
Champs de réponse
Mêmes champs que la réponse de recherche VIN.
Remarques :
- Les numéros d'homologation de type contiennent des caractères spéciaux tels que *, /, etc. Assurez-vous d'encoder correctement ces caractères en URL dans vos requêtes.
- Ce point de terminaison peut renvoyer plusieurs véhicules si plusieurs modèles partagent la même homologation de type.
- Le RECORD_TYPE sera généralement "TG" pour les correspondances d'homologation de type.
Recherche par homologation suisse (code TG)
Récupérer des données complètes sur le véhicule par code d'homologation suisse (code TG).
Paramètres de chemin
Paramètre | Type | Description |
---|---|---|
tgcode | string | Code d'homologation suisse (par exemple, 1BC170) |
Paramètres de requête
Paramètre | Type | Défaut | Description |
---|---|---|---|
lang | string | en | Code de langue pour les réponses localisées (en, fr, de, es, it) |
Exemple de requête
curl -X GET "https://api.autoref.eu/vehicle/tgcode/1BC170?lang=en" \
-H "X-API-Key: your_api_key_here"
Exemple de réponse
{
"VIN_INFO": {
"id": 55424,
"VIN": "WBA11AL010",
"BRAND": "BMW",
"BRAND_MODEL": "BMW M235I XDRIVE",
"POWER_KW": 225.0,
"POWER_DIN": 306.0,
"GEARBOX": ["Manual"],
"CATEGORY": "M1",
"TYPE_VEHICLE": "Passenger car",
"MODEL_FULL": "M235i xDrive",
"MODEL": "M235i",
"MODEL2": "xDrive",
"BODY": "Coupe",
"COLOR": "Black",
"FUEL": "Gasoline",
"DRIVETRAIN": "All-wheel drive",
"DATE_FIRST_CIRCULATION": "2020-05-12"
},
"SPECS": {
"TGCODE": "1BC170",
"DATE_REGISTRAR_START": "2019-03-15",
"DATE_REGISTRAR_END": "2025-12-31",
"CATEGORY": "M1",
"TVV": ["WBA11AL010"],
"MANUFACTURER": "BMW AG, Munich",
"VIN_LOCATION": "lower right windshield, driver's door pillar",
"AXLES_WHEELS": "2/4",
"SUSPENSION_TYPE": "coil springs, shock absorbers",
"STEERING_TYPE": "rack and pinion, electric assistance",
"BRAKE_TYPE": "discs/discs",
"WEIGHT_EMPTY_MIN_MAX": "1655 - 1740",
"LENGTH_MIN_MAX": "4454 - 4454",
"WIDTH_MIN_MAX": "1774 - 1774",
"HEIGHT_MIN_MAX": "1408 - 1408"
},
"CONSUMPTION": [
{
"COMBINED_CONSUMPTION": 7.8,
"COMBINED_CONSUMPTION_WLTP": 8.2,
"URBAN_CONSUMPTION": 10.4,
"COMBINED_CO2_EMISSIONS": 192,
"COMBINED_CO2_EMISSIONS_WLTP": 188,
"ENERGY_EFFICIENCY_CATEGORY": "G"
}
],
"EMISSION": [
{
"COMBINED_CO2_EMISSIONS": 192,
"COMBINED_CO2_EMISSIONS_WLTP": 188,
"NOISE_DRIVING": 72,
"CODE_SWISS_EMISSION": "A7M",
"CATALIZER": true,
"PARTICLE_FILTER": false
}
],
}
Structure de réponse
Contrairement aux autres points de terminaison, celui-ci renvoie un enregistrement de véhicule beaucoup plus détaillé avec plusieurs sections :
Section | Description |
---|---|
VIN_INFO | Informations d'identification de base du véhicule |
SPECS | Spécifications techniques détaillées issues de l'homologation de type |
CONSUMPTION | Données de consommation de carburant dans différents cycles d'essai |
EMISSION | Données d'émissions pour divers polluants |
URL facultative vers la documentation PDF si disponible |
Remarques :
- Les codes TG suisses ont trois générations de format : numérique (avant 1985), alphanumérique à une lettre (1985-1995) et alphanumérique à deux lettres (après 1995).
- Ce point de terminaison renvoie les données de véhicule les plus complètes, y compris les détails de consommation et d'émission.
- La structure de réponse est différente des autres points de terminaison, contenant plusieurs sections imbriquées.
Recherche détaillée de véhicule
Récupérer des données complètes sur le véhicule par type d'enregistrement et ID.
Paramètres de chemin
Paramètre | Type | Description |
---|---|---|
record_type | string | Type de base de données source (TG, OC, OLD, X) |
id | integer | L'identifiant unique de l'enregistrement du véhicule |
Paramètres de requête
Paramètre | Type | Défaut | Description |
---|---|---|---|
lang | string | en | Code de langue pour les réponses localisées (en, fr, de, es, it) |
Exemple de requête
curl -X GET "https://api.autoref.eu/vehicle/TG/55424?lang=en" \
-H "X-API-Key: your_api_key_here"
Exemple de réponse
Le format de réponse est similaire au point de terminaison du code TG, avec des informations détaillées sur le véhicule organisées en sections.
Remarques :
- Ce point de terminaison est généralement utilisé après avoir trouvé un véhicule avec l'un des points de terminaison de recherche, en utilisant l'ID et le RECORD_TYPE des résultats de recherche initiaux.
- Différents types d'enregistrement peuvent renvoyer différentes structures de données, les enregistrements TG (homologation de type) contenant les informations les plus complètes.
- Valeurs valides pour record_type : TG (homologation de type), OC (certificat de conformité), OLD (ancien), X (importé)
Recherche de marques de véhicules
Récupérer une liste de toutes les marques de véhicules disponibles dans la base de données.
Paramètres de requête
Paramètre | Type | Défaut | Description |
---|---|---|---|
lang | string | en | Code de langue pour les réponses localisées (en, fr, de, es, it) |
Exemple de requête
curl -X GET "https://api.autoref.eu/vehicle-brands" \
-H "X-API-Key: your_api_key_here"
Exemple de réponse
[
...
{
"id": 490,
"brand": "ALFA ROMEO"
},
{
"id": 551,
"brand": "AUDI"
},
{
"id": 23,
"brand": "BMW"
},
{
"id": 279,
"brand": "CHEVROLET"
},
...
]
Champs de réponse
Champ | Type | Description |
---|---|---|
name | string | Nom complet de la marque |
code | string | Code de la marque (généralement 3 lettres) |
country | string | Code pays ISO d'origine du fabricant |
Remarques :
- Ce point de terminaison est utile pour remplir les menus déroulants dans les applications, en particulier lors de l'utilisation de recherches VIN anciennes qui nécessitent un paramètre de marque.
- La liste est complète et comprend tous les fabricants présents dans la base de données.
- Les noms de marque doivent être utilisés exactement comme ils apparaissent dans cette liste lors des appels API.
Réponses d'erreur
L'API utilise des codes d'état HTTP standard pour indiquer le succès ou l'échec des requêtes. Voici les réponses d'erreur courantes que vous pourriez rencontrer :
Code d'état | Type d'erreur | Description |
---|---|---|
400 | Requête incorrecte | La requête était invalide ou manquait de paramètres requis |
401 | Non autorisé | La clé API est manquante ou invalide |
403 | Interdit | La clé API est valide mais ne dispose pas des autorisations pour la ressource demandée |
404 | Non trouvé | Le véhicule ou la ressource spécifiée n'a pas été trouvé(e) |
429 | Trop de requêtes | Limite de taux dépassée pour votre forfait |
500 | Erreur interne du serveur | Une erreur inattendue s'est produite sur le serveur |
Exemple de réponse d'erreur
{
"success": false,
"error": "not_found",
"message": "Vehicle not found for VIN: WBA11AL010XXXXXX"
}
Limitation de débit
Les requêtes API sont soumises à une limitation de débit basée sur votre forfait d'abonnement. Lorsque vous dépassez votre limite de débit, vous recevrez une réponse 429 Trop de requêtes.
{
"success": false,
"error": "rate_limit_exceeded",
"message": "Rate limit exceeded. Please upgrade your plan or try again later.",
"reset_at": "2025-04-11T12:30:15Z"
}
Limites de taux et forfaits
Notre API propose plusieurs niveaux d'abonnement pour répondre à différents besoins d'utilisation. Chaque forfait a des limites de taux et des fonctionnalités spécifiques.
0 €/mois
- ✓50 requêtes / mois
- ✓Données de base des véhicules
- ✓Recherche VIN
- ✗Recherche d'homologation de type
- ✗Spécifications détaillées des véhicules
29 €/mois
- ✓5 000 requêtes / mois
- ✓Données complètes des véhicules
- ✓Toutes les méthodes de recherche
- ✓Spécifications détaillées des véhicules
- ✓Support par email
99 €/mois
- ✓25 000 requêtes / mois
- ✓Données complètes des véhicules
- ✓Toutes les méthodes de recherche
- ✓Spécifications détaillées des véhicules
- ✓Support prioritaire
Besoin de limites plus élevées ?
Si vous avez besoin de limites de taux plus élevées ou de fonctionnalités personnalisées, veuillez contacter notre équipe commerciale pour un forfait Entreprise adapté à vos besoins.
Contacter l'équipe commercialeSupport et FAQ
Comment obtenir une clé API ?
Actuellement, les clés API sont fournies sur demande via notre formulaire de contact. Remplissez simplement le formulaire de contact avec les détails de votre cas d'utilisation, et notre équipe vous répondra par email avec votre clé API unique et des instructions de configuration. Ce processus manuel nous permet de fournir une assistance personnalisée pour chaque intégration.
Quelle est la différence entre les différentes méthodes de recherche VIN ?
Notre API propose plusieurs méthodes pour rechercher des informations sur les véhicules :
- Recherche VIN: Utilise un VIN standard à 17 caractères (ou minimum 10 caractères) pour les véhicules modernes (après 1981)
- Recherche VIN ancien: Pour les véhicules plus anciens (avant 1981) utilisant des numéros de châssis plus courts ainsi que le nom de la marque
- Recherche par homologation de type: Recherche par numéro d'homologation UE
- Recherche par code TG: Recherche par code d'homologation suisse
Chaque méthode donne accès à différents niveaux de détail. Les recherches par code TG et par homologation de type fournissent généralement les données techniques les plus complètes.
Quelle est la précision des données des véhicules ?
Nos données de véhicules proviennent directement des bases de données d'homologation gouvernementales officielles et des homologations de type des fabricants, offrant une précision significativement plus élevée que les décodeurs VIN typiques qui utilisent souvent des algorithmes pour interpréter les modèles VIN.
Pour les véhicules européens et suisses, nous fournissons des spécifications précises telles que soumises par les fabricants aux autorités réglementaires. Pour les véhicules anciens, l'exhaustivité des données peut varier en fonction des archives historiques disponibles.
Quelles langues l'API prend-elle en charge ?
L'API prend en charge plusieurs langues pour les réponses localisées. Langues actuellement prises en charge :
en
- Anglais (par défaut)fr
- Françaisde
- Allemandes
- Espagnolit
- Italien
Spécifiez votre langue préférée en utilisant le lang
paramètre de requête avec n'importe quelle requête API.
Comment gérer les erreurs de l'API ?
Toutes les réponses de l'API incluent des codes d'état HTTP qui indiquent le succès ou l'échec de la requête. Pour les erreurs, nous fournissons également une réponse JSON structurée avec :
success
: Toujoursfalse
pour les réponses d'erreurerror
: Un code d'erreur lisible par machinemessage
: Une description lisible par l'homme de ce qui s'est mal passé
Nous recommandons d'implémenter une gestion appropriée des erreurs dans votre code pour gérer avec élégance différents types d'erreurs, en particulier les erreurs "not_found" pour les recherches VIN et les réponses de limitation de débit.
Besoin de plus d'aide ?
Si vous ne trouvez pas la réponse à votre question ici, notre équipe de support est prête à vous aider.
Exemples de code
Voici quelques exemples de code pour vous aider à intégrer notre API à votre application dans différents langages de programmation.
JavaScript / Node.js
// Example using fetch in Node.js (with node-fetch package)
const fetch = require('node-fetch');
async function getVehicleByVin(vin) {
try {
const response = await fetch(`https://api.autoref.eu/vehicles/${vin}`, {
headers: {
'X-API-Key': 'your_api_key_here'
}
});
if (!response.ok) {
const errorData = await response.json();
throw new Error(errorData.message || 'Failed to fetch vehicle data');
}
const data = await response.json();
return data;
} catch (error) {
console.error('Error fetching vehicle data:', error);
throw error;
}
}
// Usage
getVehicleByVin('WBA11AL010')
.then(data => console.log(data))
.catch(error => console.error(error));
Python
import requests
def get_vehicle_by_vin(vin, api_key, lang='en'):
"""
Fetch vehicle data by VIN
Args:
vin: Vehicle Identification Number
api_key: Your API key
lang: Language code for response (en, fr, de, es, it)
Returns:
Dictionary with vehicle data
"""
url = f"https://api.autoref.eu/vehicles/{vin}"
headers = {
"X-API-Key": api_key
}
params = {
"lang": lang
}
response = requests.get(url, headers=headers, params=params)
# Check for errors
if response.status_code != 200:
try:
error_data = response.json()
error_message = error_data.get('message', 'Unknown error')
except:
error_message = f"HTTP Error: {response.status_code}"
raise Exception(f"API Error: {error_message}")
return response.json()
# Usage
try:
api_key = "your_api_key_here"
vehicle_data = get_vehicle_by_vin("WBA11AL010", api_key)
print(vehicle_data)
except Exception as e:
print(f"Error: {e}")
PHP
<?php
/**
* Function to fetch vehicle data by VIN
*
* @param string $vin Vehicle Identification Number
* @param string $apiKey Your API key
* @param string $lang Language code for response
*
* @return array|null Vehicle data or null on error
*/
function getVehicleByVin($vin, $apiKey, $lang = 'en') {
$url = "https://api.autoref.eu/vehicles/" . urlencode($vin) . "?lang=" . urlencode($lang);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'X-API-Key: ' . $apiKey
]);
$response = curl_exec($ch);
$statusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($statusCode !== 200) {
$errorData = json_decode($response, true);
$errorMessage = isset($errorData['message']) ? $errorData['message'] : 'Unknown error';
error_log("API Error ($statusCode): $errorMessage");
return null;
}
return json_decode($response, true);
}
// Usage
$apiKey = 'your_api_key_here';
$vehicleData = getVehicleByVin('WBA11AL010', $apiKey);
if ($vehicleData) {
print_r($vehicleData);
} else {
echo "Failed to retrieve vehicle data";
}
?>
Java
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.http.HttpResponse.BodyHandlers;
import java.time.Duration;
public class VinLookupExample {
private static final String API_BASE_URL = "https://api.autoref.eu";
private static final String API_KEY = "your_api_key_here";
public static void main(String[] args) {
try {
String vin = "WBA11AL010";
String vehicleData = getVehicleByVin(vin);
System.out.println(vehicleData);
} catch (Exception e) {
System.err.println("Error: " + e.getMessage());
}
}
public static String getVehicleByVin(String vin) throws Exception {
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(10))
.build();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(API_BASE_URL + "/vehicles/" + vin))
.header("X-API-Key", API_KEY)
.GET()
.build();
HttpResponse<String> response = client.send(request, BodyHandlers.ofString());
if (response.statusCode() != 200) {
throw new Exception("API Error: HTTP " + response.statusCode() + " - " + response.body());
}
return response.body();
}
}
Prêt à commencer ?
Intégrez notre puissante API de données de véhicules à vos applications dès aujourd'hui et accédez à des spécifications techniques complètes pour des millions de véhicules.