ADF XML Parser: Turn Dealer Leads into JSON, CSV and CRM Records
ADF XML is how car marketplaces send leads to dealerships. See what an ADF lead contains, why it is hard to use as it arrives, and how to turn it into JSON, CSV or CRM records with Airparser. Includes a sample lead.
To parse ADF XML, read the lead's <prospect> element and turn it into flat fields: the customer's name, email and phone, the vehicle they want, a trade-in vehicle, the dealer and the lead source. With Airparser you create an inbox from the ADF XML template, forward the lead emails to it, and every lead comes back as one JSON or CSV record that you can send to Google Sheets, Zapier, Make, n8n or a webhook. When your fields use the standard ADF names, the values are taken straight from the XML, without AI.
ADF (Auto-lead Data Format) is the XML format that car marketplaces, dealer websites and lead services use to send a shopper's lead to a dealership's CRM. In practice the same lead often arrives as raw XML in the body of an email, or as an .xml file, and that is the version this article shows how to parse.
What an ADF XML lead contains
One lead is one <adf> document with a <prospect> inside. These are the elements that matter:
<id>and<requestdate>: the sender's lead id (withsourceandsequenceattributes) and the time of the request.<vehicle interest="buy">: the vehicle the customer wants, with its status (new or used), year, make, model, trim, VIN, stock number and price.<vehicle interest="trade-in">: the customer's trade-in vehicle, for example with its odometer reading and condition.<customer><contact>: the name in parts (part="first"andpart="last"), email, phone and address, followed by the<timeframe>and the customer's<comments>.<vendor>is the dealer, and<provider>is the service that sent the lead.
The format is followed loosely. Kelley Blue Book's ADF usage guide notes that the original ADF 1.0 specification contradicts itself in places and that senders use their own variations. A parser has to be forgiving, not strict.
A sample ADF XML lead
This invented lead has a vehicle to buy and a trade-in. You can download it as an .xml or .eml file from the ADF XML page and try it yourself.
<?xml version="1.0" encoding="UTF-8"?>
<?adf version="1.0"?>
<adf>
<prospect status="new">
<id sequence="1" source="Example Auto Marketplace">LD-2026-004217</id>
<requestdate>2026-10-28T09:14:02-04:00</requestdate>
<vehicle interest="buy" status="used">
<year>2022</year>
<make>Toyota</make>
<model>RAV4</model>
<trim>XLE AWD</trim>
<vin>1HGBH41JXMN109186</vin>
<stock>T4821</stock>
<price type="asking" currency="USD">28950</price>
</vehicle>
<vehicle interest="trade-in" status="used">
<year>2017</year>
<make>Ford</make>
<model>Escape</model>
<odometer status="original" units="mi">64000</odometer>
<condition>Good</condition>
</vehicle>
<customer>
<contact>
<name part="first">Jordan</name>
<name part="last">Rivera</name>
<email>[email protected]</email>
<phone type="phone" time="day">(555) 010-7788</phone>
<address type="home">
<street>218 Maple Avenue</street>
<city>Columbus</city>
<regioncode>OH</regioncode>
<postalcode>43215</postalcode>
<country>US</country>
</address>
</contact>
<timeframe>
<description>Within 2 weeks</description>
</timeframe>
<comments>Is the RAV4 still available? I can come by on Saturday morning and would like an appraisal for my Escape.</comments>
</customer>
<vendor>
<vendorname>Riverside Motors</vendorname>
</vendor>
<provider>
<name part="full">Example Auto Marketplace</name>
<service>Lead feed</service>
</provider>
</prospect>
</adf>Why ADF is awkward to use as it arrives
Reading one clean file is easy. Reading the leads that actually reach a mailbox is not, because of a few recurring problems:
- The XML can be anywhere in the email. It may sit in the plain-text body, in the HTML part, sometimes shown as escaped text (
<adf>), or in a separate .xml file. - One lead holds several vehicles. A rule like "take the first vehicle" can pick the trade-in instead of the car the customer wants.
- Names come in parts, and a lead can carry several phone numbers.
- Forwarded and quoted emails add a
>in front of every line, and a stray&in a value (for example in a company name) makes the XML invalid.
Airparser handles all of these: it finds the ADF in the text, in the HTML (also when it is escaped) or in an .xml file (attached to the email or uploaded), cleans quoted lines, and reads the vehicle to buy as the main vehicle.
How to parse ADF XML with Airparser
1. Create an inbox from the ADF XML template
Click New inbox, open Advanced settings and choose Inbox template → ADF XML (car dealer leads). The XML / ADF mode is already on, and the Extraction Schema already has the standard ADF fields (customer, vehicle, trade-in, dealer, lead source), so there is nothing to set up. Most inboxes should start empty; use this template only for car dealer leads.

2. Send the leads to the inbox
Forward the lead emails to the inbox address, or set up an automatic forwarding rule in your mailbox or lead provider. If the lead comes as an .xml file, you can attach it to the email, upload it, or send it through the API.
3. Get one clean record per lead
Each lead becomes one record with the same fields every time. This is what the sample lead above returns. The main vehicle fields come from the vehicle to buy, and the vehicles list keeps every vehicle, the trade-in too:
{
"request_date": "2026-10-28",
"customer_first_name": "Jordan",
"customer_last_name": "Rivera",
"customer_email": "[email protected]",
"customer_phone": "(555) 010-7788",
"customer_comments": "Is the RAV4 still available? I can come by on Saturday morning and would like an appraisal for my Escape.",
"vehicle_interest": "buy",
"vehicle_status": "used",
"vehicle_year": 2022,
"vehicle_make": "Toyota",
"vehicle_model": "RAV4",
"vehicle_trim": "XLE AWD",
"vehicle_vin": "1HGBH41JXMN109186",
"vehicle_stock": "T4821",
"vehicle_price": 28950,
"vendor_name": "Riverside Motors",
"provider_name": "Example Auto Marketplace",
"vehicles": [
{
"interest": "buy",
"year": 2022,
"make": "Toyota",
"model": "RAV4"
},
{
"interest": "trade-in",
"year": 2017,
"make": "Ford",
"model": "Escape"
}
]
}An ADF lead uses 1 credit, like any other document. Airparser reads ADF with either of its parsing engines. For all the details see the help center article on extracting XML and ADF.
Standard field names or your own
If every field of your schema is named like a standard ADF key, such as customer_email, vehicle_make, vehicle_vin or vendor_name, the values are taken straight from the XML, with no AI involved. Typed fields (a number or a date) are converted as usual.
If your CRM or spreadsheet expects other names, such as lead_name or car_of_interest, you can name the fields as you like. Airparser still reads the ADF first, and AI only matches the already parsed lead to your fields, so the XML itself is never misread. The full list of standard fields is in the ADF field reference.
Several vehicles and several leads
The vehicle fields come from the vehicle the customer wants to buy (the first one with interest="buy"). Every vehicle, including the trade-in, is also available in a vehicles list. If one ADF document holds several leads, your fields are filled from the first lead and all of them are returned in a prospects list, so no lead is lost.
Sending ADF leads to a CRM
Airparser does not have a connector for every dealer CRM. It delivers the flat records to Google Sheets, Zapier, Make, n8n or a webhook, and your CRM can take them from there. You can also download the leads as CSV or JSON.
For example, to create contacts in HubSpot from a webhook or an automation step, map customer_first_name to firstname, customer_last_name to lastname, customer_email to email and customer_phone to phone, and keep the vehicle fields (vehicle_make, vehicle_model, vehicle_vin, vehicle_stock) in custom properties. The same pattern works for any CRM that accepts JSON.
When you want the whole XML tree: Raw XML as JSON
The other XML mode in the inbox settings converts any XML it finds to JSON exactly as it is: the same nesting, with attributes marked by an @_ prefix and a name split into parts returned as a list. It ignores your fields and works only with the Text engine, so use it when you need every element of the XML, not a flat record. A schema is still needed as a backup for documents without XML.
ADF XML FAQ
What is ADF XML?
ADF (Auto-lead Data Format) is an XML format that car marketplaces, dealer websites and lead services use to send a shopper's lead to a dealership. A lead holds the customer's contact details, the vehicle they want, a trade-in vehicle, the dealer and the source of the lead.
Is ADF the same as ADF XML?
Yes. ADF is the name of the format and XML is how it is written, so both names are used for the same lead files.
How do I convert ADF XML to JSON or CSV?
Create an Airparser inbox from the ADF XML template, forward the lead email to it (or upload the .xml file), and download the result as JSON or CSV. Each lead becomes one record with fields such as customer_email, vehicle_make and vehicle_vin.
Does Airparser use AI to read ADF?
Not for the XML itself. If every field of your schema has a standard ADF name, the values are taken straight from the XML. If you use your own field names, AI only matches the already parsed lead to them. An email without ADF is read by the usual AI parser.
What happens if an email has no ADF in it?
The document is parsed in the usual way with your extraction schema, so ordinary lead emails and ADF leads can go to the same inbox. The same happens if the XML is not valid.
What does it cost?
An ADF lead email uses 1 credit, like any other document.
Try it on your own leads
Download the sample lead from the ADF XML page, create an inbox from the ADF XML template and send it. For other dealership documents, such as service records and vehicle documents, see the automotive parser. If you are new to parsing emails in general, start with what email data extraction is.
