Dealers API

Find vehicle dealers, and read a dealer's contact details and inventory statistics

Try it

Find dealers by name, website, location or the makes they sell, from the dealers seen in vehicle listings. Then read one dealer: its contact details, location, and the size, prices and days on market of its inventory.

Endpoints

GET https://api.auto.dev/dealers/search
GET https://api.auto.dev/dealers/{id}

View in Browser

https://api.auto.dev/dealers/search?name=Austin%20Subaru&state=TX

Search Dealers

GET /dealers/search answers the dealers that match, most recently seen first. At least one of name, domain, zip, state or make is required.

Parameters

PropTypeDefault
name?
string
-
domain?
string
-
zip?
string
-
radius?
number
-
state?
string
-
make?
string
-
limit?
number
50
offset?
number
0

Example Request

curl -X GET "https://api.auto.dev/dealers/search?name=Austin%20Subaru&state=TX" \
  -H "Authorization: Bearer YOUR_API_KEY"

Response Structure

PropTypeDefault
data?
array
-
total?
number
-
limit?
number
-
offset?
number
-

Search Result Fields

A field with nothing on file is null.

PropTypeDefault
id?
string
-
name?
string | null
-
phone?
string | null
-
website?
string | null
-
domain?
string | null
-
street?
string | null
-
city?
string | null
-
state?
string | null
-
zip?
string | null
-
country?
string | null
-
lat?
number | null
-
lon?
number | null
-
lastSeen?
string
-
listings?
string | null
-

Example Response

Recorded 2026-11-12, the first two of 10 results:

{
  "data": [
    {
      "id": "d_0050e3915c8f3cdf",
      "name": "Austin Subaru",
      "phone": "+15123232837",
      "website": "austinsubaru.com",
      "domain": "austinsubaru.com",
      "street": "8100 Burnet Rd",
      "city": "Austin",
      "state": "TX",
      "zip": "78757",
      "country": "US",
      "lat": 30.36,
      "lon": -97.731,
      "lastSeen": "2026-11-12 21:00:41.815",
      "listings": "https://api.auto.dev/listings?dealerId=d_0050e3915c8f3cdf"
    },
    {
      "id": "d_919fb2028afae889",
      "name": "Austin Subaru",
      "phone": "+15129579938",
      "website": null,
      "domain": null,
      "street": null,
      "city": "Austin",
      "state": "TX",
      "zip": null,
      "country": null,
      "lat": null,
      "lon": null,
      "lastSeen": "2026-11-12 06:23:58.915",
      "listings": null
    }
  ],
  "total": 10,
  "limit": 50,
  "offset": 0
}

Get a Dealer

GET /dealers/{id} answers one dealer. An id that was retired, because the dealer was merged into another, answers a 308 redirect to the same request with the current id (Location), and names the retired id in X-Dealer-Id-Retired.

Parameters

PropTypeDefault
id
string
-

Example Request

curl -X GET "https://api.auto.dev/dealers/d_0050e3915c8f3cdf" \
  -H "Authorization: Bearer YOUR_API_KEY"

Response Structure

data is the dealer. A field with nothing on file is null.

PropTypeDefault
id?
string
-
name?
string | null
-
dealerGroupName?
string | null
-
phone?
string | null
-
website?
string | null
-
email?
string | null
-
street?
string | null
-
city?
string | null
-
state?
string | null
-
zip?
string | null
-
country?
string | null
-
lat?
number | null
-
lon?
number | null
-
metro?
string | null
-
totalInventory?
number | null
-
newInventory?
number | null
-
usedInventory?
number | null
-
avgNewPrice?
number | null
-
avgUsedPrice?
number | null
-
avgDom?
number | null
-
avgDomNew?
number | null
-
avgDomUsed?
number | null
-
avgUsedMileage?
number | null
-

Example Response

Recorded 2026-11-12:

{
  "data": {
    "id": "d_0050e3915c8f3cdf",
    "name": "Austin Subaru",
    "dealerGroupName": null,
    "phone": "+15123232837",
    "website": "austinsubaru.com",
    "email": null,
    "street": "8100 Burnet Rd",
    "city": "Austin",
    "state": "TX",
    "zip": "78757",
    "country": "US",
    "lat": 30.36,
    "lon": -97.731,
    "metro": "640",
    "totalInventory": 609,
    "newInventory": 445,
    "usedInventory": 164,
    "avgNewPrice": 39643,
    "avgUsedPrice": 26172,
    "avgDom": 22.03,
    "avgDomNew": 21.54,
    "avgDomUsed": 23.37,
    "avgUsedMileage": 51443
  }
}

Error Responses

Errors come wrapped in an error object. Every response also carries the api and user blocks, omitted from the examples below.

Search Errors

/dealers/search answers 400 with code MISSING_FILTER when no filter is given, MISSING_ZIP for radius without zip, UNKNOWN_ZIP for a ZIP code with no location on file, and INVALID_PARAMETER for a parameter that is not a filter:

{
  "error": {
    "status": 400,
    "error": "At least one of name, domain, zip, state, make is required.",
    "code": "MISSING_FILTER",
    "path": "/dealers/search",
    "requestId": "a5986bdc6d74b33c"
  }
}

When the search cannot run right now, the answer is 503 with code SOURCE_ERROR. Retry later.

Dealer Not Found

{
  "error": {
    "status": 404,
    "error": "Resource \"d_0000000000000000\" not found",
    "code": "RESOURCE_NOT_FOUND",
    "path": "/dealers/d_0000000000000000",
    "requestId": "a5986bd59d0945a4"
  }
}

Interactive API Reference

Plan Availability

  • Free: ❌ Not available
  • Growth: ✅ Available
  • Scale: ✅ Available

See pricing for plan details and signup.

Was this API reference helpful?