Inferred Sales Stats

Analyze sales figures based on nationwide dealer inventory changes tracked by MarketCheck with 90-day historical data.

The Inferred Sales Stats API provides comprehensive sales analytics by analyzing nationwide dealer inventory changes to infer actual sales figures. This powerful tool tracks inventory fluctuations across dealerships to determine sales patterns and market performance.

Sales statistics are regenerated monthly using a 90-day rolling period (T-7 to T-97 days from the current date), ensuring data freshness while providing sufficient historical context for meaningful analysis.

The API delivers regional demand insights with varying granularity across multiple dimensions:

  • Vehicle Specifications: Year, Make, Model, Trim (YMMT)
  • Geographic Levels: City, State, National
  • Inventory Types: New, Used, Certified Pre-Owned (CPO)

For used vehicles, the API distinguishes between certified pre-owned (CPO) and regular vehicles. CPO statistics appear in cpo_{{field_name}}_stats keys, while regular/non-CPO vehicles use standard {{field_name}}_stats keys.

This API enables dealers, manufacturers, and market analysts to understand sales velocity, identify market trends, and make data-driven inventory and pricing decisions.

Base Path

GET https://api.marketcheck.com/v2/sales/car

The following example demonstrates how to use the Inferred Sales Stats API to analyze sales performance and market trends.

request.js
import axios from 'axios';

const options = {
method: 'GET',
url: 'https://api.marketcheck.com/v2/sales/car',
params: {api_key: 'YOUR_API_KEY', make: 'Honda', state: 'CA'},
headers: {Accept: 'application/json'}
};

try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}

Request

Parameter Required - You must provide at least one parameter: make, mm, ymm, ymmt, taxonomy_vin, or vin.

The Inferred Sales Stats API requires specific vehicle identification parameters to generate meaningful sales analytics. You can query sales data at different levels of granularity, from broad make-level analysis to specific trim-level statistics.

Parameters

10 Params
api_key
string required

Your MarketCheck API authentication key. Required for every request, unless OAuth is used.

make
string

The vehicle make for sales statistics queries.

mm
string

The Make-Model (mm) combination for sales statistics, pipe-separated (e.g., ford|f-150).

ymm
string

Year-Make-Model (ymm) group for sales statistics, pipe-separated (e.g., 2015|ford|f-150).

ymmt
string

Year-Make-Model-Trim (ymmt) combination for sales statistics, pipe-separated.

taxonomy_vin
string

The taxonomy VIN (aka squish VIN) for sales statistics queries.

vin
string

The full VIN (17 characters) to be transformed into a taxonomy VIN for statistics.

state
string

US state code for state-level sales statistics. 2-letter code (e.g., FL, CA).

city_state
string

City and state for city-level sales statistics, pipe-separated (e.g., jacksonville|FL).

country
string

Country for which to retrieve sales statistics. Allowed values — us, ca. Default — us.

Defaults

  • car_type: Defaults to used vehicles. Use car_type=new for new vehicle statistics
  • country: Defaults to US, but can be set to CA for Canadian market analysis

Required Parameters

At least one of the following vehicle identification parameters must be provided:

make

  • Specify the vehicle manufacturer to get make-level sales statistics.
  • Example: make=Toyota returns sales data for all Toyota vehicles.

mm (Make-Model)

  • Use pipe-separated format to specify make and model combinations.
  • Multiple combinations can be provided, separated by commas.
  • Example: mm=Toyota|Camry,Honda|Civic

ymm (Year-Make-Model)

  • Use pipe-separated format to specify year, make, and model combinations.
  • Provides more granular sales data than make or make-model alone.
  • Example: ymm=2023|Toyota|Camry,2023|Honda|Civic

ymmt (Year-Make-Model-Trim)

  • Use pipe-separated format for the most detailed vehicle specification.
  • Provides the highest level of granularity for sales analysis.
  • Example: ymmt=2023|Toyota|Camry|LE,2023|Honda|Civic|EX

taxonomy_vin

  • Specify a decoded VIN identifier for sales statistics of similar vehicles.
  • Useful for analyzing sales performance of vehicles with specific configurations.

vin

  • Provide a full Vehicle Identification Number.
  • The API automatically converts this to the corresponding taxonomy_vin for analysis.
  • Enables sales analysis for vehicles similar to the specified VIN.

Geographic Parameters

state

  • Filter sales data by specific U.S. states or Canadian provinces.
  • Use standard abbreviations (e.g., CA for California, ON for Ontario).
  • Example: state=CA returns sales data for California.

city_state

  • Get city-level sales statistics using pipe-separated format.
  • Format: city_name|STATE_CODE
  • Takes precedence over the state parameter if both are provided.
  • Example: city_state=Los Angeles|CA

country

  • Specify the country for sales analysis.
  • Supported values: US, CA
  • Defaults to US if not specified.

Response

Schema

interface SalesStatsResponse {
  count: number; // Total number of vehicles sold
  cpo: number; // Number of certified pre-owned vehicles sold
  non_cpo: number; // Number of non-CPO vehicles sold
  inventory_type: string; // Type of inventory analyzed (e.g., "used", "new")
  make: string; // Vehicle make
  model: string; // Vehicle model
  year: number; // Vehicle year
  trim: string; // Vehicle trim
  dom_stats: Stats; // Days on market statistics
  price_stats: Stats; // Price statistics
  miles_stats: Stats; // Mileage statistics
  cpo_dom_stats?: Stats; // CPO-specific days on market statistics
  cpo_price_stats?: Stats; // CPO-specific price statistics
  cpo_miles_stats?: Stats; // CPO-specific mileage statistics
}

interface Stats {
  geometric_mean: number; // Geometric mean of the dataset
  min: number; // Minimum value
  median: number; // Median value
  population_standard_deviation: number; // Population standard deviation
  variance: number; // Variance of the dataset
  max: number; // Maximum value
  mean: number; // Arithmetic mean
  trimmed_mean: number; // Mean with outliers removed
  standard_deviation: number; // Sample standard deviation
  iqr: number; // Interquartile range (Q3 - Q1)
}

Success Response

  • 200 OK - Returns a JSON object containing sales statistics and related metrics
  • CPO-specific statistics (cpo_*_stats) are only included when CPO vehicles are present in the dataset

Error Response

Status CodeDescriptionCommon Causes
400Bad RequestInvalid parameter values or missing required parameters
401UnauthorizedMissing/invalid API key
403ForbiddenAccess denied to resource
422Unprocessable EntityInvalid VIN or parameter combination
429Too Many RequestsRate limit exceeded
500Internal Server ErrorTemporary server issues
502Bad GatewayIssues with upstream services
503Service UnavailableAPI maintenance or downtime

Error Response Format

Most error responses follow this structure, except for 502 and 503 errors:

{
  "code": <HTTP status code>,
  "message": "<Error message describing the issue>"
}

Use Cases & Examples

Manufacturer Performance Analysis

Analyze sales performance for specific vehicle manufacturers to understand market share and brand performance. This is useful for competitive analysis and strategic planning.

Use the make parameter to get comprehensive sales data for all vehicles from a specific manufacturer.

Example:

request.js
import axios from 'axios';

const options = {
method: 'GET',
url: 'https://api.marketcheck.com/v2/sales/car',
params: {api_key: 'YOUR_API_KEY', make: 'Toyota'},
headers: {Accept: 'application/json'}
};

try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}

Model-Specific Sales Analysis

Compare sales performance between specific make-model combinations to identify popular models and market trends. This helps in understanding consumer preferences and model popularity.

Use the mm parameter with pipe-separated make-model combinations for targeted analysis.

Example:

request.js
import axios from 'axios';

const options = {
method: 'GET',
url: 'https://api.marketcheck.com/v2/sales/car',
params: {api_key: 'YOUR_API_KEY', car_type: 'used', mm: 'Toyota|Camry'},
headers: {Accept: 'application/json'}
};

try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}

Year-over-Year Model Comparison

Analyze how specific vehicle models perform across different model years to understand depreciation patterns, popularity trends, and market demand changes.

Use the ymm parameter to compare sales statistics for the same model across different years.

Example:

request.js
import axios from 'axios';

const options = {
method: 'GET',
url: 'https://api.marketcheck.com/v2/sales/car',
params: {api_key: 'YOUR_API_KEY', car_type: 'used', ymm: '2023|Toyota|Camry'},
headers: {Accept: 'application/json'}
};

try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}

Trim-Level Performance Analysis

Get detailed sales insights for specific vehicle trims to understand which configurations are most popular and how different trim levels perform in the market.

Use the ymmt parameter for the most granular analysis of vehicle sales performance.

Example:

request.js
import axios from 'axios';

const options = {
method: 'GET',
url: 'https://api.marketcheck.com/v2/sales/car',
params: {api_key: 'YOUR_API_KEY', car_type: 'used', ymmt: '2023|Toyota|Camry|LE'},
headers: {Accept: 'application/json'}
};

try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}

VIN-Based Similar Vehicle Analysis

Analyze sales performance for vehicles similar to a specific VIN. This is particularly useful for understanding how vehicles with similar specifications perform in the market.

The vin parameter automatically converts to the corresponding taxonomy_vin for analysis of similar vehicles.

Example:

request.js
import axios from 'axios';

const options = {
method: 'GET',
url: 'https://api.marketcheck.com/v2/sales/car',
params: {api_key: 'YOUR_API_KEY', car_type: 'used', vin: '2T3A1RFV9MW234437'},
headers: {Accept: 'application/json'}
};

try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}

Regional Market Analysis

Compare sales performance across different geographic regions to understand regional preferences, market dynamics, and economic factors affecting vehicle sales.

National vs International Markets

Example:

request.js
import axios from 'axios';

const options = {
method: 'GET',
url: 'https://api.marketcheck.com/v2/sales/car',
params: {api_key: 'YOUR_API_KEY', car_type: 'used', make: 'Ford', country: 'CA'},
headers: {Accept: 'application/json'}
};

try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}

State-Level Analysis

Get state-specific sales data to understand regional market performance and identify high-performing markets.

Example:

request.js
import axios from 'axios';

const options = {
method: 'GET',
url: 'https://api.marketcheck.com/v2/sales/car',
params: {api_key: 'YOUR_API_KEY', car_type: 'used', make: 'Ford', state: 'TX'},
headers: {Accept: 'application/json'}
};

try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}

City-Level Analysis

Analyze sales performance at the city level for the most granular geographic insights. This is valuable for dealers looking to understand local market conditions.

Use the city_state parameter with pipe-separated format for city-specific analysis.

Use either city_state or state parameter, not both. The city_state parameter takes precedence and includes state information.

Example:

request.js
import axios from 'axios';

const options = {
method: 'GET',
url: 'https://api.marketcheck.com/v2/sales/car',
params: {
api_key: 'YOUR_API_KEY',
car_type: 'used',
ymmt: '2023|toyota|camry|LE',
country: 'CA',
city_state: 'Edmonton|AB'
},
headers: {Accept: 'application/json'}
};

try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}

See Also