The Dealership Inventory Syndication API provides access to a dealer's complete active inventory, including duplicate listings across multiple sources. This is specifically designed for inventory syndication workflows where comprehensive data access is required on dealer level inventory.
Units & Conventions:
| Field / Pattern | Unit | Notes |
|---|---|---|
| price, msrp | USD (US), CAD (CA) | Applies to all price-like currency fields |
| miles, radius, dist | Miles | Applies to both markets in request as well as response |
| *_at | Unix epoch seconds (UTC) | Applies to all timestamp fields (e.g. last_seen_at) |
| *_at_date | ISO-8601 YYYY-MM-DDThh:mm:ssZ (UTC) | Same instant as the matching *_at field |
| city_mpg, highway_mpg | Miles per Gallon | Applies to both markets |
GET https://api.marketcheck.com/v2/dealerships/inventory
The following example demonstrates a basic request to retrieve dealer inventory:
import axios from 'axios';
const options = {
method: 'GET',
url: 'https://api.marketcheck.com/v2/dealerships/inventory',
params: {
api_key: 'YOUR_API_KEY',
dealer_id: '1035095',
start: 0,
rows: 5,
facets: 'year,make',
stats: 'price'
},
headers: {Accept: 'application/json'}
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}
Explore the full range of parameters available for filtering, sorting, and configuring search results in the Parameters section below.
The Dealership Inventory Syndication API provides access to dealer-specific inventory with enhanced capabilities for syndication workflows. You can search by specifying the target dealer using at least one of the available dealer identification parameters, and optionally apply additional filtering, sorting, and analysis parameters.
Available parameters for filtering, sorting, and configuring search results:
Your MarketCheck API authentication key. Required for every request, unless OAuth is used.
If true, the response URLs (such as cached images & relevant links) include the api_key query parameter along with value; if false, they do not. Default — true.
The base exterior color to filter results by (e.g. White, Black, Blue, Silver, Red). Accepts multiple colors as a comma-separated list.
Alias for base_ext_color. Filters by base exterior color (comma-separated list).
The base interior color to filter results by (e.g. Black, Brown, Beige, Red). Accepts multiple colors as a comma-separated list.
Alias for base_int_color. Filters by base interior color (comma-separated list).
Filters listings by body subtype (e.g., Crew, Extended, Regular, Extended Crew). Accepts multiple values separated by commas.
Filters listings by body type (e.g., SUV, Pickup, Sedan, Hatchback, Convertible). Accepts multiple values separated by commas.
Filters listings by inventory type. Allowed values - new, used, certified.
Filters listings by city name (e.g. Los Angeles, San Francisco, Houston).
Filters listings by city fuel-economy mileage. Specify as min-max MPG (e.g., 20-35).
Filters listings by country code. Allowed values - us, ca, all. Default — us.
Filters listings by engine cylinder count (e.g., 4, 6, 8). Accepts multiple values as a comma-separated list.
Filters listings by MarketCheck dealer ID.
Filters listings by dealer name (case-insensitive complete match, substring not supported).
Filters dealers by type. Allowed values — franchise, independent.
Filters listings by the name of the dealership group. Accepts multiple values as a comma-separated list.
Filters listings by Days on Market observed over the last 180 days. Specify as min-max days (e.g., 10-50).
Filters listings by active Days on Market (DOM). Specify as min-max days.
Filters listings by total Days on Market (DOM). Specify as min-max days.
Filters listings by number of doors (e.g., 2, 4). Accepts multiple values as comma-separated list.
Filters listings by active Days on Site (DOS). Specify as min-max days.
Filters listings by drivetrain (FWD, RWD, 4WD). Accepts multiple values separated by commas.
Filters listings by engine designation (e.g., 2.0L I4, 3.5L V6, 2.5L H4). Accepts multiple values as comma-separated list.
Filters listings by engine aspiration (Turbocharged, Naturally Aspirated, etc.). Accepts multiple values separated by commas.
Filters listings by engine block layout (V, I, H). Accepts multiple values separated by commas.
Filters listings by engine displacement size (e.g., 2.0, 2.5, 3.5). Accepts multiple values separated by commas.
Filters listings by engine displacement size. Specify as min-max liters (e.g., 1.5-3.0).
Filters listings by exterior color (e.g. White, Summit White, Gun Metallic). Accepts multiple values as comma-separated list.
Sorts facet buckets. Allowed values — count (descending count, default) or index (alphabetical).
Field name to return bucket facets for. Accepts multiple fields as a comma-separated list.
Filters listings by the number of days since they were first seen by MarketCheck. Specify as min-max days. Alternative of first_seen_at_mc_range.
Filters listings by the date they were first seen by MarketCheck. Specify as YYYYMMDD-YYYYMMDD (e.g., 20220523-20220631). Alternative of first_seen_at_mc_days.
Filters listings by the number of days since first seen on the source site. Specify as min-max days. Alternative of first_seen_at_source_range.
Filters listings by date first seen on the source site. Specify as YYYYMMDD-YYYYMMDD. Alternative of first_seen_at_source_days.
Filters listings by the number of days since they were first seen in MarketCheck inventory. Specify as min-max days. Alternative of first_seen_range.
Filters listings by the first seen date. Specify as YYYYMMDD-YYYYMMDD (e.g., 20220523-20220631). Alternative of first_seen_days.
Filters listings by fuel type (e.g., Unleaded, Diesel, Electric, Premium Unleaded, Electric / Unleaded). Accepts multiple values separated by commas.
Filters listings by highway fuel-economy mileage. Specify as min-max MPG (e.g., 25-40).
If true, returns listings marked as in transit; if false or omitted, no in-transit filter is applied.
If true, includes listings without a VIN; if false, such listings are excluded. Default — false.
If true, includes relevant links to other MarketCheck API endpoints in the response. Default — false.
Filters listings by interior color. Accepts multiple values as comma-separated list.
Filters listings by the number of days since last seen. Specify as min-max days. Alternative of last_seen_at_range.
Filters listings by last seen date. Specify as YYYYMMDD-YYYYMMDD (e.g., 20220523-20220631). Alternative of last_seen_at_days.
Filters listings by vehicle make (e.g., Toyota, Ford, Mercedes-Benz). Accepts multiple values as comma-separated list.
Filters listings by MarketCheck category code.
Filters listings by MarketCheck dealer ID.
Filters listings by MarketCheck dealership group ID.
Filters listings by dealership group name.
Filters listings by MarketCheck location ID.
Filters listings by MarketCheck rooftop ID.
Filters listings by MarketCheck sub-dealership group ID.
Filters listings by sub-dealership group name.
Filters listings by MarketCheck website ID.
Filters listings by odometer reading. Specify as min-max miles (e.g., 1000-50000).
Filters listings with at least the specified number of photo links (e.g. 3, 8).
Filters listings with at least the specified number of cached photo links (e.g. 3, 8).
Filters listings by specific vehicle model (e.g., Camry). Accepts multiple values separated by commas.
Filters listings by Metropolitan Statistical Area (MSA) code.
Filters listings by Manufacturer's Suggested Retail Price (MSRP). Specify as min-max USD (e.g., 20000-45000).
When used with dealer_id, mc_website_id, or source, true returns listings actually owned by that dealer. Default — false.
If true, returns only listings that contain at least one photo link. Default — false.
If true, returns only listings that contain cached photo links. Default — false.
Filters listings by powertrain type (e.g., Combustion, BEV, HEV, MHEV, PHEV). Accepts multiple values separated by commas.
Filters listings by advertised price in USD. Specify as min-max (e.g., 1000-50000).
Comma-separated list of numeric field names for which to return range facets in the response.
Number of results to return per request. Default — 1500. Maximum — 1500.
Filters listings by seating capacity (e.g., 2, 5, 7). Accepts multiple values separated by commas.
Field to sort results by. If omitted, defaults to distance when a location filter is used.
Specifies result sort order. Allowed values — asc or desc. Default — asc.
Filters listings by source marketplace domain (e.g., autotrader.com, cars.com).
Pagination offset (0-based). Default — 0. Maximum page is limited to 10,000/rows.
Filters listings by US or Canadian state/province code (e.g., CA, NY, ON). Accepts multiple codes separated by commas.
Comma-separated list of numeric fields for which to return aggregate statistics (mean, max, min, count).
Filters listings by dealer stock number.
Filters listings by transmission type (Automatic, Manual, etc.). Accepts multiple values separated by commas.
Filters listings by vehicle trim (e.g., EX, Limited). Accepts multiple values separated by commas.
Filters listings by vehicle type (Truck, Car). Accepts multiple values separated by commas.
Filters listings by vehicle version name.
Filters listings by full 17-character Vehicle Identification Number (VIN).
Filters listings by model year (e.g., 2020). Accepts multiple years separated by commas.
Filters listings by model year range. Specify as min-max (e.g., 2015-2025).
Filters listings within the specified 5-digit ZIP code.
1500 (maximum allowed)
false - includes all syndicated listings including non-attributed
owned=true to retrieve dealer-owned inventory only i.e Attributed (Searchable) listingsAPI response includes num_found property indicating the total number of listings matching the search criteria. By default, the API returns 1,500 listings per page (significantly higher than standard API limits).
You can use start and rows parameters to iterate through search results efficiently.
Parameters:
start - Offset from which listings are returned (starts at 0)rows - Number of listings per page (maximum 1,500, default 1,500)Increment start proportionally to rows value for consistent pagination:
start=0&rows=1500 - fetches listings 1-1,500start=1500&rows=1500 - fetches listings 1,501-3,000start=3000&rows=1500 - fetches listings 3,001-4,500Limits:
rows parameter accepts a maximum value of 1,500 (default is also 1,500)
rows greater than 1,500, the API will automatically use the maximum value of 1,500rowsstart and rows exceeds your subscription's pagination limit, or if start is greater than the total number of available results (num_found), the API will respond with a HTTP 422 error status.The Dealership Inventory Syndication API allows sorting results by a single numeric or date field at a time. Sorting by multiple fields simultaneously is not supported.
Sort Parameters:
sort_by - Field name to sort bysort_order - Sort direction (asc or desc)Default Behavior:
last_seen (desc) and vin (asc)Common Sort Fields
Below are the most commonly used sort fields. For a complete list, see the next table.
| Field Name | sort_by | Data Type | Default Order | Description |
|---|---|---|---|---|
| Price | price | Numeric | asc | Sort listings by price |
| Miles | miles | Numeric | asc | Sort listings by mileage |
| DOS | dos_active | Numeric | asc | Sort listings by Days on site |
| Last Seen | last_seen | Date | asc | Sort listings by last seen date |
All Available Sort Fields
| Field Name | sort_by | Data Type | Default Order | Description |
|---|---|---|---|---|
| MSRP | msrp | Numeric | asc | Sort listings by MSRP |
| First Seen | first_seen | Date | asc | Sort listings by first seen date |
| DOM Active | dom_active | Numeric | asc | Sort listings by DOM Active |
| DOM 180 | dom_180 | Numeric | asc | Sort listings by DOM 180 |
| DOM | dom | Numeric | asc | Sort listings by DOM lifetime |
| Highway MPG | highway_mpg | Numeric | asc | Sort listings by highway mileage |
| City MPG | city_mpg | Numeric | asc | Sort listings by city mileage |
| Price Change Percentage | price_change_percent | Numeric | asc | Sort listings by price change percentage |
sort_by values. Results return with default sorting when invalid sort fields are specified.The Dealership Inventory Syndication API supports facets for building UI filters and analyzing inventory distribution for dealership inventory. Use facets to get unique value counts for categorical fields and range-based counts for numeric fields.
Field facets return unique terms and their counts for categorical data, useful for building search filters and understanding dealerships active inventory distribution.
Parameters and Syntax
facets — Comma-separated list of field names to facet on. Supports pagination and minimum count:facets=field_name|offset|limit|min_countoffset - Starting position (default: 0)limit - Maximum terms returned (default: 20, max: 1000)min_count - Minimum count threshold (default: 1)facets=make|0|60|2 returns top 60 makes with at least 2 listings eachfacet_sort — Controls sort order of facet terms:count (default): Sort by frequency (highest first)index: Sort alphabetically|) character, which is used to separate positional parameters. For example, use %7C for | in URLs.Example
import axios from 'axios';
const options = {
method: 'GET',
url: 'https://api.marketcheck.com/v2/dealerships/inventory',
params: {
api_key: 'YOUR_API_KEY',
source: 'stgautogroup.com',
start: 0,
rows: 0,
facets: 'make|0|100|0,model|0|100|100'
},
headers: {Accept: 'application/json'}
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}
Response
facets field of the response, structured as key-value pairsitem and count properties
item is the unique termcount is the number of listings for that term.{
"facets": {
"make": [
{ "item": "Toyota", "count": 219 },
{ "item": "Chevrolet", "count": 118 },
...
],
"model": [
{ "item": "RAV4", "count": 44 },
{ "item": "Camry", "count": 35 },
...
]
}
}
If requested field is not allowed for faceting, it will be included in the response but with an error message indicating the field is not supported for facets.
{
"facets": {
"xyz": [
{
"result": "Error",
"message": "Field xyz is not allowed in facets"
}
]
}
}
Available Field Facets
| Field | Description |
|---|---|
| base_ext_color | Base exterior color |
| base_int_color | Base interior color |
| body_subtype | Detailed body variant |
| body_type | Main body classification |
| city | Listing city location |
| cylinders | Engine cylinder count |
| dealer_id | MarketCheck dealer ID |
| dealer_type | Type of dealer (e.g., franchise, independent) |
| dealership_group_name | Dealership group name |
| doors | Number of doors |
| drivetrain | Vehicle drivetrain type |
| engine | Complete engine specification |
| engine_block | Engine block configuration |
| engine_size | Engine displacement |
| exterior_color | Exterior color designation |
| fuel_type | Primary fuel type |
| interior_color | Interior color designation |
| make | Vehicle manufacturer |
| mc_dealer_id | MarketCheck dealer ID (under new system of dealership management) |
| mc_location_id | MarketCheck location ID |
| mc_rooftop_id | MarketCheck rooftop ID |
| mc_website_id | MarketCheck website ID |
| model | Vehicle model name |
| msa_code | Metropolitan Statistical Area code |
| powertrain_type | Powertrain classification |
| seating_capacity | Passenger seating capacity |
| seller_name | Seller name (lowercase) |
| source | Website domains where listed |
| state | Listing state location |
| transmission | Transmission configuration |
| trim | Vehicle trim level |
| vehicle_type | General vehicle category |
| version | Vehicle version identifier |
| year | Vehicle model year |
| zip | Listing zip code |
Facet Pagination
By default, facets return the top 20 terms for each field. You can control pagination using positional parameters offset, limit:
offset - Starting position for terms (default: 0)limit - Maximum number of terms to return (default: 20, max: 1000)Example: facets=make|20|20 returns makes 21-40
Facets Sorting
Facet terms can be sorted by count or alphabetically using the facet_sort parameter:
count (default) - Sort by frequency (highest first)index - Sort alphabeticallyExample: facets=make|0|20&facet_sort=index returns makes sorted alphabetically
Range facets provide statistical distribution analysis for numeric fields, creating buckets for data visualization and market insights.
Parameters and Syntax
range_facets — Comma-separated list of field names to facet on, with optional range and interval:range_facets=field_name|start|end|intervalstart (optional): Lower bound of the range (default varies by field)end (optional): Upper bound of the range (default varies by field)interval (optional): Size of each bucket (default: (end - start)/20)range_facets=price|500|20000|1000 returns price ranges with 1000 intervals between 500 and 20000.start is specified but end is not, the API adds the default end value for that field to the start value.interval has to be greater than (end - start)/200, otherwise the API will return an error.|) character, which is used to separate parameters. For example, use %7C for | in URLs.Example
import axios from 'axios';
const options = {
method: 'GET',
url: 'https://api.marketcheck.com/v2/dealerships/inventory',
params: {
api_key: 'YOUR_API_KEY',
source: 'stgautogroup.com',
start: 0,
rows: 0,
range_facets: 'price|500|100000|10000,miles|5000|50000|5000'
},
headers: {Accept: 'application/json'}
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}
Response
range_facets field of the response, structured as key-value pairscounts: Array of buckets with lower_bound, upper_bound, and count propertiesinterval: Size of each bucketstart: Lower bound of the rangeend: Upper bound of the rangebefore: Count of listings below the start valuebetween: Count of listings within the rangeafter: Count of listings above the end value{
"range_facets": {
"xyz": {
"result": "Error",
"message": "Field xyz is not allowed in range facets"
}
}
}
Available Range Facets
| Field | Description | Default Range |
|---|---|---|
| city_mpg | City fuel efficiency | 0-100 |
| dom | Days on market | 0-100 |
| dom_180 | Days on market (180-day window) | 0-100 |
| dom_active | Active days on market | 0-100 |
| dos_active | Days on source active | 0-100 |
| highway_mpg | Highway fuel efficiency | 0-100 |
| miles | Vehicle mileage range | 0-10000 |
| msrp | Manufacturer suggested retail price | 500-10500 |
| price | Listing price range | 500-10500 |
The Search API calculates comprehensive statistics for numeric fields, providing market analysis and competitive intelligence insights.
Parameters
stats — Comma-separated list of fields to calculate statistics on
stats=price,miles,msrpstats can be combined with other parameters like facets, sort_by for detailed analysisExample
import axios from 'axios';
const options = {
method: 'GET',
url: 'https://api.marketcheck.com/v2/dealerships/inventory',
params: {
api_key: 'YOUR_API_KEY',
source: 'stgautogroup.com',
start: 0,
rows: 0,
stats: 'price,miles'
},
headers: {Accept: 'application/json'}
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}
Response
stats field of the response, structured as key-value pairsmin: Minimum valuemax: Maximum valuecount: Total number of listings with non-null valuesmissing: Number of listings with missing valuessum: Total sum of valuesmean: Average valuestddev: Standard deviationsum_of_squares: Sum of squares for variance calculationmedian: Median valuepercentiles: Percentile distribution (5th, 25th, 50th, 75th, 90th, 95th, 99th){
"stats": {
"xyz": {
"result": "Error",
"message": "Field xyz is not allowed in stats"
}
}
}
Available Stats Fields
Below are the available fields for statistics calculations:
Financial Metrics
| Field | Description |
|---|---|
| price | Listing price statistics |
| msrp | MSRP statistics |
Performance and Efficiency
| Field | Description |
|---|---|
| miles | Vehicle mileage statistics |
| highway_mpg | Highway fuel efficiency statistics |
| city_mpg | City fuel efficiency statistics |
Market Timing
| Field | Description |
|---|---|
| dom | Days on market statistics |
| dom_180 | DOM 180-day statistics |
| dom_active | Active days on market statistics |
| dos_active | Days on site active statistics |
Search for dealerships inventory available near specific locations using zip codes for location-based inventory discovery.
Parameters
zip - ZIP code reference point for spatial searchThe Dealership Inventory API returns JSON data with comprehensive vehicle listing information, including inventory details, dealer information, vehicle specifications, and optional facets and statistics.
interface DealershipInventoryResponse {
num_found: number; // Total number of listings matching search criteria
listings: Listing[]; // Array of vehicle listings
facets?: Facets; // Categorical facets (when facets parameter is used)
stats?: Stats; // Statistical data (when stats parameter is used)
range_facets?: RangeFacets; // Range-based facets (when range_facets parameter is used)
}
interface Listing {
id: string; // Unique listing identifier
heading: string; // Listing title
price: number; // Listing price
miles: number; // Vehicle mileage
msrp?: number; // Manufacturer suggested retail price
inventory_type: 'new' | 'used'; // Vehicle condition
last_seen_at: number; // Last seen timestamp (Unix epoch)
last_seen_at_date: string; // Last seen date (ISO-8601)
first_seen_at: number; // First seen timestamp (Unix epoch)
first_seen_at_date: string; // First seen date (ISO-8601)
first_seen_at_mc: number; // First seen at MarketCheck timestamp
first_seen_at_mc_date: string; // First seen at MarketCheck date
first_seen_at_source: number; // First seen at source timestamp
first_seen_at_source_date: string; // First seen at source date
vdp_url: string; // Vehicle detail page URL
source: string; // Website domain
vin: string; // Vehicle identification number
stock_no?: string; // Dealer stock number
dom: number; // Days on market (lifetime)
dom_active: number; // Days on market (active)
dom_180: number; // Days on market (180-day window)
dos_active: number; // Days on source active
price_change?: number; // Price change amount
price_change_percent?: number; // Price change percentage
carfax_1_owner?: boolean; // Single owner status
carfax_clean_title?: boolean; // Clean title status
is_certified?: number; // Certified pre-owned status
in_transit?: boolean; // In-transit status
car_location?: CarLocation; // Vehicle location details
media?: Media; // Photo and media links
dealer?: Dealer; // Legacy dealer information
mc_dealership?: McDealership; // MarketCheck dealer information
finance?: ListingFinance; // Finance information
lease?: ListingLease; // Lease information
build?: Build; // Vehicle specifications
}
interface ListingFinance {
loan_term?: number; // Loan term in months
loan_apr?: number; // Annual percentage rate
down_payment?: number; // Down payment amount
estimated_monthly_payment?: number; // Monthly payment estimate
}
interface ListingLease {
lease_term?: number; // Lease term in months
down_payment?: number; // Down payment amount
estimated_monthly_payment?: number; // Monthly lease payment estimate
}
interface CarLocation {
mc_car_location_id?: string; // MarketCheck car location identifier
seller_name: string; // Dealer or seller name
street: string; // Street address
city: string; // City name
zip: string; // Postal/ZIP code
state: string; // State name
latitude: string; // Geographic latitude
longitude: string; // Geographic longitude
}
interface Media {
photo_links?: string[]; // Array of photo URLs from dealer website
photo_links_cached?: string[]; // Array of cached photo URLs from MarketCheck
}
interface Dealer {
id: number; // Unique dealer identifier
name: string; // Dealer name
phone?: string; // Contact phone number
street?: string; // Street address
city?: string; // City
state?: string; // State abbreviation
zip?: string; // ZIP code
country?: string; // Country code
latitude?: number; // Geographic latitude
longitude?: number; // Geographic longitude
website?: string; // Dealer website URL
inventory_count?: number; // Total inventory count
type?: string; // Dealer type
msa_code?: string; // Metropolitan Statistical Area code
}
interface McDealership {
mc_website_id?: number; // MarketCheck website identifier
mc_dealer_id?: number; // MarketCheck dealer identifier
mc_location_id?: number; // MarketCheck location identifier
mc_rooftop_id?: number; // MarketCheck rooftop identifier
mc_dealership_group_id?: number; // MarketCheck dealership group identifier
mc_dealership_group_name?: string; // Dealership group name
mc_sub_dealership_group_id?: number; // Sub-group identifier
mc_sub_dealership_group_name?: string; // Sub-group name
name?: string; // Dealership name
street?: string; // Street address
city?: string; // City
state?: string; // State abbreviation
zip?: string; // ZIP code
country?: string; // Country code
latitude?: number; // Geographic latitude
longitude?: number; // Geographic longitude
website?: string; // Dealership website URL
inventory_count?: number; // Total inventory count
type?: string; // Dealership type
phone?: string; // Contact phone number
}
interface Build {
year: number; // Model year
make: string; // Vehicle manufacturer
model: string; // Vehicle model
trim?: string; // Trim level
body_type?: string; // Body style
body_subtype?: string; // Body subtype
vehicle_type?: string; // Vehicle category
drivetrain?: string; // Drivetrain type
transmission?: string; // Transmission type
engine?: string; // Engine specification
engine_size?: number; // Engine displacement
engine_block?: string; // Engine block type
cylinders?: number; // Cylinder count
fuel_type?: string; // Primary fuel type
city_mpg?: number; // City fuel economy
highway_mpg?: number; // Highway fuel economy
exterior_color?: string; // Exterior color
interior_color?: string; // Interior color
doors?: number; // Number of doors
seating_capacity?: number; // Passenger capacity
options_packages?: string[]; // Option packages
high_value_features?: string[]; // Premium features
powertrain_type?: string; // Powertrain classification
}
interface Facets {
[key: string]: {
item: string; // Facet term
count: number; // Number of listings
}[];
}
interface Stats {
[key: string]: {
min: number;
max: number;
count: number;
sum: number;
sum_of_squares: number;
mean: number;
std_deviation: number;
variance: number;
percentiles: {
[percentile: string]: number;
};
};
}
interface RangeFacets {
[key: string]: {
counts: {
lower_bound: number;
upper_bound: number;
count: number;
}[];
before: number;
between: number;
after: number;
};
}
200 OK - Returns JSON object with search resultsnum_found field indicating total matching listingslistings array contains vehicle data (empty if no matches)facets, stats, and range_facets based on request parameters| Status Code | Description | Common Causes |
|---|---|---|
| 400 | Bad Request | Invalid parameter values or malformed request |
| 401 | Unauthorized | Missing/invalid API key |
| 403 | Forbidden | Access denied to resource |
| 422 | Unprocessable Entity | Pagination limits exceeded, invalid parameters |
| 429 | Too Many Requests | Rate limit exceeded |
| 500 | Internal Server Error | Temporary server issues |
| 502 | Bad Gateway | Issues with upstream services |
| 503 | Service Unavailable | API 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>"
}
Best Practices
dealer_id, source, or other dealer attributes, such as the following:dealership_group_namemc_website_idmc_dealer_idmc_location_idmc_rooftop_idmc_dealership_group_idmc_dealership_group_namemc_sub_dealership_group_idmc_sub_dealership_group_namemc_dealer_id=10027620,1000030.Example:
Here we're retriving active inventory for a specific using their website domain stgautogroup.com with the maximum pagination limit to access comprehensive dealer data in a single request.
import axios from 'axios';
const options = {
method: 'GET',
url: 'https://api.marketcheck.com/v2/dealerships/inventory',
params: {api_key: 'YOUR_API_KEY', source: 'stgautogroup.com', start: 0, rows: 2},
headers: {Accept: 'application/json'}
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}
car_type to filter by new or used vehicles in dealership inventory:
car_type=new for new vehiclescar_type=used for used vehiclescar_type=certified for certified pre-owned vehicles. These are subset of used vehicles.car_type is not specified, the API returns all types by default.inventory_type field which shows new or used values. When car_type=certified is used, the inventory_type will be used since certified cars are used vehicles, but they will have an additional is_certified field with value 1 to distinguish them from regular used cars.Examples:
Here we're retrieving used active inventory actually owned by a specific dealership:
import axios from 'axios';
const options = {
method: 'GET',
url: 'https://api.marketcheck.com/v2/dealerships/inventory',
params: {
api_key: 'YOUR_API_KEY',
source: 'autonationusa.com',
car_type: 'used',
start: 0,
rows: 2,
owned: true
},
headers: {Accept: 'application/json'}
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}
Certified Pre-Owned Vehicles:
car_type=used, you will also get certified vehicles included in the results.car_type=certified.
inventory_type=used and an additional is_certified=1 field.Examples:
Here we're retrieving certified pre-owned vehicles from a dealership group:
import axios from 'axios';
const options = {
method: 'GET',
url: 'https://api.marketcheck.com/v2/dealerships/inventory',
params: {
api_key: 'YOUR_API_KEY',
source: 'autonationusa.com',
rows: 5,
car_type: 'certified'
},
headers: {Accept: 'application/json'}
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}
include_non_vin_listings=true parameterExample:
Here we're including non-VIN listings in dealership inventory for comprehensive syndication:
import axios from 'axios';
const options = {
method: 'GET',
url: 'https://api.marketcheck.com/v2/dealerships/inventory',
params: {
api_key: 'YOUR_API_KEY',
mc_website_id: '10000469',
rows: 1500,
include_non_vin_listings: true
},
headers: {Accept: 'application/json'}
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}
first_seen_at_source_range (absolute) or first_seen_at_source_days (relative) parametersExamples:
Here we're finding vehicles that were first seen on the source website in the last 24 hours:
import axios from 'axios';
const options = {
method: 'GET',
url: 'https://api.marketcheck.com/v2/dealerships/inventory',
params: {
api_key: 'YOUR_API_KEY',
source: 'carmax.com',
first_seen_at_source_days: '1-*',
rows: 2
},
headers: {Accept: 'application/json'}
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}
facets and range_facets parameters to get unique values and distributions for specific fields.facets provides unique counts for categorical fields, while range_facets provides distribution analysis for numeric fields.Example:
Here we're getting unique makes and their counts for a large dealership like CarMax to understand their inventory distribution:
import axios from 'axios';
const options = {
method: 'GET',
url: 'https://api.marketcheck.com/v2/dealerships/inventory',
params: {api_key: 'YOUR_API_KEY', source: 'carmax.com', rows: 0, facets: 'make'},
headers: {Accept: 'application/json'}
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}
For large dealership groups with thousands of vehicles, you can use facets to segment inventory and then use pagination to retrieve detailed listings for specific segments. This approach is particularly effective for dealerships like CarMax, AutoNation, or Carvana that maintain extensive inventories across multiple locations.
Example:
Step 1: Get City Distribution for Dealerships
First, get the distribution of inventory across different cities for CarMax to understand where their vehicles are located:
import axios from 'axios';
const options = {
method: 'GET',
url: 'https://api.marketcheck.com/v2/search/car/active',
params: {api_key: 'YOUR_API_KEY', source: 'carmax.com', facets: 'city'},
headers: {Accept: 'application/json'}
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}
This returns city counts like:
{
"facets": {
"city": [
{ "item": "Houston", "count": 1867 },
{ "item": "Raleigh", "count": 983 },
{ "item": "Austin", "count": 960 },
{ "item": "Norcross", "count": 956 },
...
]
}
}
Step 2: Paginate Through Specific City Inventory
Now drill down into a specific city (Houston) with high inventory count and paginate through their listings:
import axios from 'axios';
const options = {
method: 'GET',
url: 'https://api.marketcheck.com/v2/dealerships/inventory',
params: {
api_key: 'YOUR_API_KEY',
source: 'carmax.com',
start: 0,
rows: 1500,
city: 'Houston'
},
headers: {Accept: 'application/json'}
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}
price_range, miles_range, msrp_range, dom_range, dom_180_range, dom_active_range, dos_active_range, highway_mpg_range, city_mpg_rangeExample:
Here we're filtering a large dealership group carmax.com vehicles priced between $10,000 and $20,000 with mileage under 50,000 miles and active days on market less than 30 days:
import axios from 'axios';
const options = {
method: 'GET',
url: 'https://api.marketcheck.com/v2/dealerships/inventory',
params: {
api_key: 'YOUR_API_KEY',
source: 'carmax.com',
price_range: '10000-20000',
miles_range: '0-50000',
dos_active_range: '0-30',
rows: 2
},
headers: {Accept: 'application/json'}
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}
owned=true to retrieve only unique, physically present inventory.The Dealership Inventory Syndication API is optimized for syndication workflows but has specific performance characteristics:
stats, facets, or complex filteringBest Practices:
owned=true to reduce dataset size when appropriate