Get a free key
Dealer inventory

Dealer inventory

GEThttps://api.motorsdynamic.com/api/v2/dealers/{domainId}/inventory

Plan and price

PlanAccessPrice
FreeNonot included
GrowthNonot included
ScaleNonot included
EnterpriseYescontract

A call is billed when it answers 2xx. See pricing.

Parameters

NameInTypeRequiredDescription
domainIdpathintegeryesSite id (id from GET /dealers).
conditionquerynew or used or cpono
makequerystringnoCase-insensitive exact match.
modelquerystringnoCase-insensitive exact match.
year_minqueryintegerno
year_maxqueryintegerno
price_minquerynumberno
price_maxquerynumberno
powertrainquerygas or diesel or hybrid or phev or electric or hydrogen or unknownno
sortquerylast_seen_at or first_seen_at or price or year or mileageno
orderqueryasc or descno
limitqueryintegerno
cursorquerystringnopage.next_cursor from the previous page, unchanged.

Example request

curl "https://api.motorsdynamic.com/api/v2/dealers/101/inventory?condition=new&make=Honda&year_min=2024&limit=1" \
  -H "x-api-key: $MD_API_KEY"

Example response

{
  "data": [
    {
      "id": 5501,
      "vin": "1HGCV1F34RA000001",
      "domain_id": 101,
      "url": "https://www.alphahonda.com/new/2024-honda-accord-1HGCV1F34RA000001",
      "stock_number": "H1234",
      "condition": "new",
      "condition_raw": "New",
      "is_cpo": false,
      "year": 2024,
      "make": "Honda",
      "model": "Accord",
      "trim": "EX",
      "body_type": "Sedan",
      "exterior_color": "Platinum White Pearl",
      "interior_color": "Black",
      "drivetrain": "FWD",
      "transmission": "CVT",
      "engine": "1.5L I4 Turbo",
      "fuel_type": "Gasoline",
      "powertrain": "gas",
      "mileage": 8,
      "price": 31250,
      "msrp": 32895,
      "sale_price": null,
      "price_basis": null,
      "price_flags": [],
      "image_count": 32,
      "primary_image": "https://images.example.com/a.jpg",
      "status": "active",
      "first_seen_at": "2026-09-01T12:00:00.000000Z",
      "freshness": {
        "last_seen_at": "2026-09-24T10:00:00.123456Z",
        "observed_at": "2026-09-24T10:00:00.123456Z",
        "age_seconds": 3600
      },
      "provenance": {
        "source": "md_legacy",
        "adapter_version": null,
        "run_id": null,
        "episode": null
      }
    }
  ],
  "page": {
    "limit": 1,
    "has_more": true,
    "next_cursor": "eyJ2IjoxfQ"
  },
  "meta": {
    "domain_id": 101,
    "sort": "last_seen_at",
    "order": "desc"
  }
}

Response fields

FieldTypeDescription
data[]array of object
data[].idintegerStable listing id (same as /v1 vehicles.id).
data[].vinstring
data[].domain_idinteger
data[].urlstring
data[].stock_numberstring or null
data[].conditionnew or used or cpo or null
data[].condition_rawstring or null
data[].is_cpoboolean
data[].yearinteger or null
data[].makestring or null
data[].modelstring or null
data[].trimstring or null
data[].body_typestring or null
data[].exterior_colorstring or null
data[].interior_colorstring or null
data[].drivetrainstring or null
data[].transmissionstring or null
data[].enginestring or null
data[].fuel_typestring or null
data[].powertrainstring or null
data[].mileageinteger or null
data[].pricenumber or nullAdvertised price.
data[].msrpnumber or null
data[].sale_pricenumber or null
data[].price_basisstring or nullHow the v2 adapter derived the price (v2 sites only).
data[].price_flags[]array of stringsuspect_teamvelocity: legacy Team Velocity price, known to be wrong on most such sites.
data[].image_countinteger
data[].primary_imagestring or null
data[].statusactive
data[].first_seen_atstring or nullRFC 3339 UTC with microseconds.
data[].freshnessobject
data[].freshness.last_seen_atstring or nullRFC 3339 UTC with microseconds.
data[].freshness.observed_atstring or nullRFC 3339 UTC with microseconds.
data[].freshness.age_secondsinteger or null
data[].provenanceobject
data[].provenance.sourcev2 or md_legacy
data[].provenance.adapter_versionstring or null
data[].provenance.run_idinteger or null
data[].provenance.episodeinteger or null
pageobject
page.limitinteger
page.has_moreboolean
page.next_cursorstring or null
metaobject

Errors

StatusCodeWhen
400invalid_parameterA parameter is missing or malformed. The message names it.
401invalid_api_keyThe key is missing, revoked or mistyped.
402plan_requiredThe endpoint is on a higher plan. The body names the plan and links to the upgrade.
403not_entitledThe key may not read this dealer or source.
429rate_limited or quota_exceededSlow down (see Retry-After), or the Free monthly calls are used up.
504query_timeoutThe query passed its 4 second budget. Narrow the filters. Not billed.

Every error has the same body. Full list: errors.