---
title: "Count matching listings (distinct VINs)"
method: GET
path: "/v2/listings/count"
tags: ["listings"]
---

# Count matching listings (distinct VINs)

`GET /v2/listings/count`

## Request

- Base URL: `https://api.cardog.app`
- URL: `https://api.cardog.app/v2/listings/count`
- Auth: one of:
  - API key in header `x-api-key`
  - HTTP bearer

## Query parameters

- `make` string[]
- `model` string[]
- `nano` string[]
- `bodyStyle` string[]
- `fuelType` string[]
- `driveType` string[]
- `transmission` string[]
- `electrification` string[]
- `vehicleType` string[]
- `trim` string[]
- `seller` string[]
- `exteriorColor` string[]
- `interiorColor` string[]
- `year.min` integer
- `year.max` integer
- `price.min` number
- `price.max` number
- `odometer.min` number
- `odometer.max` number
- `lat` number
- `lng` number
- `radius` number
- `verified` boolean
- `createdAfter` string, date-time
- `updatedAfter` string, date-time
- `spec.{attributeId}` string

## Response `200`

One count, planner-estimate flagged

- ListingCount
  - `count` integer, required
  - `countIsApproximate` boolean
  - `filters` object, required
    - `ids` string[]
    - `makes` string[]
    - `models` string[]
    - `nanos` string[]
    - `bodyStyles` string[]
    - `fuelTypes` string[]
    - `driveTypes` string[]
    - `transmissions` string[]
    - `electrificationLevels` string[]
    - `vehicleTypes` string[]
    - `trims` string[]
    - `saleTypes` string[]
    - `sellers` string[]
    - `year` object
      - `min` number
      - `max` number
    - `price` object
      - `min` number
      - `max` number
    - `odometer` object
      - `min` number
      - `max` number
    - `cylinders` object
      - `min` number
      - `max` number
    - `doors` object
      - `min` number
      - `max` number
    - `exteriorColors` string[]
    - `interiorColors` string[]
    - `location` object
      - `lat` number, required
      - `lng` number, required
      - `radius` number, required
    - `verified` boolean
    - `createdAfter` string, date-time
    - `updatedAfter` string, date-time
    - `spec` object: Spec filters keyed by attribute id (see GET /v2/specs/catalog). Numeric attributes take a {min, max} range; equipment attributes take availability values ("standard", "optional", "unavailable"). Example: {"fuelEconomyCombined": {"min": 35}, "heatedSeatsFront": ["standard"]}

## Other responses

- `400`: Invalid request — grammar failure or unknown-but-well-formed refs, NAMED in `refs`/`details`, with nearest-ref `suggestions` where computable. Never a fuzzy fallback.
- `401`: No valid credential (API key, session, or internal token)
- `402`: Insufficient credits (free-tier hard stop; paid tiers bill overage instead)
- `429`: Per-minute rate limit exceeded
- `500`: Internal error

---

[API](https://skmtc.dev/cardog/apis/cardog-api-v2.md) · [All operations](https://skmtc.dev/cardog/apis/cardog-api-v2/llms.txt) · [OpenAPI document](https://skmtc.dev/cardog/apis/cardog-api-v2/revisions/b9d48193126f?raw)
