The Inventory Search API provides near-real-time access to one of the largest active dealer inventories in the U.S. and Canada, refreshed daily. Its rich filtering, sorting, and analytics capabilities let dealers, lenders, and analysts search current stock and derive market insights quickly.
seller_type
set to dealer
, ensuring completeness and reliability for dealer-focused searches.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/search/car/active
The following example demonstrates a basic search request with common parameters:
import axios from 'axios';
const options = {
method: 'GET',
url: 'https://api.marketcheck.com/v2/search/car/active',
params: {
api_key: 'YOUR_API_KEY',
year: '2024',
make: 'ford',
model: 'f-150',
start: '0',
rows: '5',
facets: 'trim',
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 Inventory Search API provides extensive filtering and search capabilities for automotive inventory listings. You can search by vehicle specifications, geographic location, pricing ranges, dealer types, and numerous other criteria to find the exact vehicles you need.
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.
The base interior color to filter results by (e.g. Black, Brown, Beige, Red). Accepts multiple colors as a 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
.
If true
, returns only vehicles with a single previous owner; if false
or omitted, no ownership filter is applied. Default — false.
If true
, returns only vehicles with a clean title history; if false
or omitted, no title filter is applied. Default — false.
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 dealers by type. Allowed values — franchise
, independent
.
If true
, returns only is_searchable
listings irrespective of dealer_id
, mc_website_id
, or source
. Default — false. See nodedup
for the opposite behavior.
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
).
If true
, excludes certified-pre-owned vehicles from results. Default — false. See car_type
parameter for filtering by inventory type for certified vehicles.
Excludes results from the specified dealer IDs. Accepts multiple values as a comma-separated list.
Excludes listings that contain any of the specified High-Value Features (HVFs). Accepts comma-separated HVFs.
Excludes the specified makes. Accepts multiple values as a comma-separated list.
Excludes results from the specified MarketCheck website IDs. Accepts multiple values as comma-separated list.
Excludes listings containing the specified Options Packages (OPs). Accepts multiple values as comma-separated list.
Excludes listings from the specified sources (e.g., autonation.com
, carmax.com
). Accepts multiple values as comma-separated list.
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 finance down-payment amount in USD. Specify a single value or a min-max
range.
Filters listings by finance down-payment percentage. Specify a single value or min-max
.
Filters listings by finance Estimated Monthly Payment (EMP) in USD. Specify a single value or min-max
.
Filters listings by finance loan APR. Specify a single value or min-max
.
Filters listings by finance loan term in months. Specify a single value or min-max
months.
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 that include all specified High-Value Features (HVFs). Provide HVFs as a comma-separated list.
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
, only listings with finance offers are returned. Default — false.
If true
, only listings with lease offers are returned. Default — false.
If true
, includes listings without a VIN; if false
, such listings are excluded. Default — false.
If true
, adds a preferred_dealer
flag to listings when they match client-specific filters. 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 dealers by total listing count. Specify as min-max
listings (e.g., 10-100
).
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
.
Latitude component of the search location (decimal degrees). Used for geospatial queries along with longitude
and radius
parameters.
Filters listings by lease down-payment amount in USD. Specify a single value or min-max
.
Filters listings by lease Estimated Monthly Payment (EMP) in USD. Specify a single value or min-max
.
Filters listings by lease term length in months. Specify a single value or min-max
.
Longitude component of the search location (decimal degrees). Used for geospatial queries along with latitude
and radius
parameters.
Filters listings by vehicle make (e.g., Toyota
, Ford
, Mercedes-Benz
). Accepts multiple values as comma-separated list.
Comma-separated list of field names for exact matching in combination with vins
. Allowed values — year,make,model
or year,make,model,trim
.
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
).
Make-Model composite string from the auto-complete API. Pass the value exactly as returned (e.g., toyota|camry
).
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
).
If true
, returns all duplicate listings for a VIN; if false
(default), duplicate listings are removed. This is the opposite of dedup
.
Filters listings by Options Packages (OPs). Provide a comma-separated list; results include listings containing all specified OPs.
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.
If true
, returns up to 1000 listings for plotting instead of full listing details.
Filters listings by powertrain type (e.g., Combustion
, BEV
, HEV
, MHEV
, PHEV
). Accepts multiple values separated by commas.
If true
, flags listings in response from preferred dealers based on client scoring. Default — false.
If true
, returns listings only from preferred dealers. Default — false.
Filters listings by positive or negative price-change flag (e.g., positive
, negative
). Accepts multiple comma-separated values.
Filters listings by the price change in USD. Since price changes can be positive or negative, specify as min|max
(e.g., -5000|1000
). This is a range filter.
Filters listings by advertised price in USD. Specify as min-max
(e.g., 1000-50000
).
Search radius around the specified location in miles. Used with zip
or latitude
and longitude
for geospatial queries.
Comma-separated list of numeric field names for which to return range facets in the response.
Number of results to return per request. Default — 10. Maximum — 50.
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
.
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.
Comma-separated list of 10-character “squish” VINs (first 8 + 10th & 11th chars). Filters listings by build.
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 Detail Page (VDP) URL match.
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).
The VINs to find similar cars around. Accepts a comma-separated list of VINs. Used in conjunction with the match
parameter always. Similar parameters are ymmt
and taxonomy_vins
.
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
).
Year-Make-Model composite string from auto-completion (e.g., 2019|Toyota|Camry
).
Year-Make-Model-Trim composite string(s). Each combo uses pipe separators and combinations can be comma-separated. For example, 2019|Toyota|Camry|LE,2020|Honda|Civic|EX
. Useful for finding multiple groups of similar cars. Alternatively, you can use vins
or taxonomy_vins
for VIN-based queries.
Filters listings within the specified 5-digit ZIP code.
us
for United States market
country=ca
in each callcountry=all
true
- only Attributed (Searchable) listings appear in responses
nodedup=true
to include all listings, even duplicatesAPI response includes num_found
property indicating the total number of listings matching the search criteria. By default, the API returns the first page of results with 10 listings per page.
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 50, default 10)Increment start
proportionally to rows
value for consistent pagination:
start=0&rows=50
- fetches listings 1-50start=50&rows=50
- fetches listings 51-100start=100&rows=50
- fetches listings 101-150Limits:
rows
parameter accepts a maximum value of 50 (default is 10)
rows
greater than 50, the API will automatically use the default value of 10rows
start
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 Search 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 |
---|---|---|---|---|
Distance | dist | Numeric | asc | Applied by default for geo spatial requests |
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 |
Lease Term | lease_term | Numeric | asc | Sort listings by lease term |
Lease EMP | lease_emp | Numeric | asc | Sort listings by lease EMP |
Lease Down Payment | lease_down_payment | Numeric | asc | Sort listings by lease down payment |
Finance Loan Term | finance_loan_term | Numeric | asc | Sort listings by finance loan term |
Finance Loan APR | finance_loan_apr | Numeric | asc | Sort listings by Finance Loan APR |
Finance EMP | finance_emp | Numeric | asc | Sort listings by Finance EMP |
Finance Down Payment | finance_down_payment | Numeric | asc | Sort listings by Finance Down Payment |
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 Search API supports facets for building UI filters and analyzing inventory distribution. 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 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_count
offset
(default: 0): Start position for termslimit
(default: 20, max: 1000): Number of terms to returnmin_count
(optional): Minimum count for a term to be includedfacets=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/search/car/active',
params: {
api_key: 'YOUR_API_KEY',
year: '2024',
make: 'ford',
model: 'f-150',
rows: '0',
facets: 'trim|0|100|0,city|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": 12345 },
{ "item": "Honda", "count": 6789 },
...
],
"city": [
{ "item": "Los Angeles", "count": 1000 },
{ "item": "New York", "count": 800 },
...
]
}
}
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 |
carfax_1_owner | Single owner status |
carfax_clean_title | Clean title status |
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 |
high_value_features | Premium feature list |
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 |
options_packages | Available option packages |
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|interval
start
(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/search/car/active',
params: {
api_key: 'YOUR_API_KEY',
year: '2020',
make: 'ford',
model: 'f-150',
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 |
finance_down_payment | Finance down payment amount | 0-3000 |
finance_emp | Finance estimated monthly payment | 0-1000 |
finance_loan_apr | Finance annual percentage rate | 0-20 |
finance_loan_term | Finance loan duration | 0-100 |
highway_mpg | Highway fuel efficiency | 0-100 |
lease_down_payment | Lease down payment amount | 0-3000 |
lease_emp | Lease estimated monthly payment | 0-500 |
lease_term | Lease duration (months) | 0-80 |
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,msrp
stats
can be combined with other parameters like facets
, sort_by
, and rows
for detailed analysisExample
import axios from 'axios';
const options = {
method: 'GET',
url: 'https://api.marketcheck.com/v2/search/car/active',
params: {
api_key: 'YOUR_API_KEY',
year: '2024',
make: 'ford',
model: 'f-150',
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 |
Finance and Lease Terms
Field | Description |
---|---|
lease_term | Lease duration statistics |
lease_emp | Lease monthly payment statistics |
lease_down_payment | Lease down payment statistics |
finance_loan_term | Finance loan duration statistics |
finance_loan_apr | Finance APR statistics |
finance_emp | Finance monthly payment statistics |
finance_down_payment | Finance down payment statistics |
Search for cars available near specific locations using geographic coordinates, zip codes, or radius parameters for location-based inventory discovery.
Parameters
latitude
and longitude
- Exact coordinateszip
- ZIP code reference pointradius
- Search radius in milesYou can combine location parameters with any other search filters for precise geographic targeting.
Example
import axios from 'axios';
const options = {
method: 'GET',
url: 'https://api.marketcheck.com/v2/search/car/active',
params: {
api_key: 'YOUR_API_KEY',
year: '2024',
make: 'ford',
model: 'f-150',
rows: '2',
zip: '90007',
radius: '50'
},
headers: {Accept: 'application/json'}
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}
Response
dist
field with distance from the specified coordinates or ZIP codeThe Inventory Search API returns JSON data with comprehensive vehicle listing information, including inventory details, dealer information, vehicle specifications, and optional facets and statistics.
interface InventorySearchResponse {
num_found: number; // Total number of listings matching search criteria
listings: Listing[]; // Array of vehicle listings
facets?: Facets; // Field 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
vin: string; // Vehicle Identification Number
heading?: string; // Formatted listing title
price?: number; // Current listing price
miles?: number; // Vehicle mileage
msrp?: number; // Manufacturer's Suggested Retail Price (as per dealer website)
data_source: string; // Original data source identifier. Mostly `mc` for MarketCheck
vdp_url?: string; // Vehicle detail page URL
carfax_1_owner?: boolean; // Single owner history flag (If mentioned on dealer website)
carfax_clean_title?: boolean; // Clean title status (If mentioned on dealer website)
exterior_color?: string; // Exterior color description
interior_color?: string; // Interior color description
base_int_color?: string; // Standardized interior color
base_ext_color?: string; // Standardized exterior color
dom: number; // Days on market (lifetime)
dom_180: number; // Days on market in last 180 days
dom_active: number; // Days on market while active
dos_active: number; // Days on site while active
seller_type: string; // Type of seller (dealer, fsbo, auction)
inventory_type: string; // Inventory classification (new, used)
is_certified?: number; // Certified pre-owned flag (1 if certified, only appears when car is certified)
stock_no?: string; // Dealer stock number
last_seen_at: number; // Last seen timestamp (Unix Seconds), when the listing was last updated
last_seen_at_date: string; // Last seen date (ISO format)
scraped_at: number; // First seen timestamp (Unix Seconds), when the listing was first scraped
scraped_at_date: string; // First seen date (ISO format)
first_seen_at: number; // First seen timestamp (Unix Seconds), when the listing was first seen. Copy of `scraped_at` field
first_seen_at_date: string; // First seen date (ISO format)
first_seen_at_source: number; // First seen at source website timestamp (Unix Seconds)
first_seen_at_source_date: string; // First seen at source website date (ISO format)
first_seen_at_mc: number; // First seen at MarketCheck timestamp (Unix Seconds)
first_seen_at_mc_date: string; // First seen at MarketCheck date (ISO format)
ref_price?: number; // Previously listed price at same source for reference
price_change_percent?: number; // Price change percentage from reference price
ref_price_dt?: number; // Reference price date timestamp (Unix Seconds)
ref_miles?: number; // Previously listed mileage at same source for reference
ref_miles_dt?: number; // Reference mileage date timestamp (Unix Seconds)
source: string; // Data source website domain
model_code?: string; // Manufacturer model code
in_transit?: boolean; // Vehicle in transit status
availability_status?: string; // Current availability status
financing_options?: ListingFinance; // Finance information (when available)
leasing_options?: ListingLease; // Lease information (when available)
media?: Media; // Photos and media content links
dealer?: Dealer; // Dealer information
mc_dealership?: McDealership; // Enhanced dealer information from MarketCheck's new dealership system
build?: Build; // Vehicle specifications
}
interface ListingFinance {
loan_term?: number; // Loan term in months
loan_apr?: number; // Annual percentage rate
down_payment?: number; // Required down payment amount
down_payment_percentage?: number; // Down payment as percentage
estimated_monthly_payment?: number; // Monthly payment estimate
}
interface ListingLease {
lease_term?: number; // Lease term in months
down_payment?: number; // Required down payment amount
estimated_monthly_payment?: number; // Monthly lease payment estimate
}
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
website: string; // Dealer website URL
name: string; // Dealer business name
dealer_type?: string; // Dealer classification (franchise, independent)
street?: string; // Street address
city?: string; // City name
state?: string; // State or province
country?: string; // Country code
latitude?: string; // Geographic latitude
longitude?: string; // Geographic longitude
zip?: string; // Postal/ZIP code
phone?: string; // Contact phone number
seller_email?: string; // Contact email address
dealership_group_name?: string; // Parent dealership group
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; // MarketCheck dealership group name
mc_sub_dealership_group_id?: number; // MarketCheck sub-dealership group identifier
mc_sub_dealership_group_name?: string; // MarketCheck sub-dealership group name
mc_category?: string; // MarketCheck seller category (Dealer, FSBO, Auction, etc.)
website?: string; // Dealer website URL
name?: string; // Dealer business name
dealer_type?: string; // Dealer classification (franchise, independent)
street?: string; // Street address
city?: string; // City name
state?: string; // State or province
country?: string; // Country code
latitude?: string; // Geographic latitude
longitude?: string; // Geographic longitude
zip?: string; // Postal/ZIP code
msa_code?: string; // Metropolitan Statistical Area code
phone?: string; // Contact phone number
}
interface Build {
year: number; // Model year
make: string; // Vehicle manufacturer
model?: string; // Vehicle model
trim?: string; // Trim level
version?: string; // Specific version/variant
body_type?: string; // Body style (sedan, SUV, truck, etc.)
vehicle_type?: string; // Vehicle category
transmission?: string; // Transmission type
drivetrain?: string; // Drivetrain configuration
fuel_type?: string; // Fuel type (gasoline, electric, hybrid, etc.)
engine?: string; // Engine description
engine_size?: number; // Engine displacement
engine_block?: string; // Engine block configuration
doors?: number; // Number of doors
cylinders?: number; // Number of cylinders
made_in?: string; // Manufacturing country
overall_height?: string; // Vehicle height
overall_length?: string; // Vehicle length
overall_width?: string; // Vehicle width
std_seating?: string; // Standard seating capacity
highway_mpg?: number; // Highway fuel economy
city_mpg?: number; // City fuel economy
powertrain_type?: string; // Powertrain classification
}
interface Facets {
[key: string]: {
item: string; // Facet term/value
count: number; // Number of listings for this term
}[];
}
interface Stats {
[key: string]: {
min: number; // Minimum value
max: number; // Maximum value
count: number; // Number of values
missing: number; // Count of missing values
sum: number; // Sum of all values
mean: number; // Arithmetic mean
stddev: number; // Standard deviation
sum_of_squares: number; // Sum of squared values
median: number; // Median value
percentiles: {
[key: string]: number; // Percentile values
};
};
}
interface RangeFacets {
[key: string]: {
counts: {
lower_bound: number; // Range lower bound
upper_bound: number; // Range upper bound
count: number; // Number of listings in range
}[];
interval: number; // Interval size
start: number; // Starting value
end: number; // Ending value
before?: number; // Count below start
between: number; // Count within range
after?: number; // Count above end
};
}
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 parametersStatus 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
make=Toyota,Honda,Ford
.Example:
Here we're filtering for electric, 4 wheel drive SUVs from 2023 to 2025 from Ford, Audi, Hyundai, Chevrolet, and Toyota.
import axios from 'axios';
const options = {
method: 'GET',
url: 'https://api.marketcheck.com/v2/search/car/active',
params: {
api_key: 'YOUR_API_KEY',
rows: '2',
fuel_type: 'Electric',
drivetrain: '4WD',
body_type: 'SUV',
year: '2023,2024,2025',
make: 'Ford,Audi,Hyundai,Chevrolet,Toyota'
},
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:
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.Example:
Here we're filtering for used vehicles.
import axios from 'axios';
const options = {
method: 'GET',
url: 'https://api.marketcheck.com/v2/search/car/active',
params: {api_key: 'YOUR_API_KEY', car_type: 'used', rows: 2},
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.exclude_certified=true
parameter.Example:
Here we're filtering for certified pre-owned vehicles.
import axios from 'axios';
const options = {
method: 'GET',
url: 'https://api.marketcheck.com/v2/search/car/active',
params: {api_key: 'YOUR_API_KEY', car_type: 'certified', rows: 2},
headers: {Accept: 'application/json'}
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}
Here we're filtering for used vehicles, excluding certified pre-owned vehicles.
import axios from 'axios';
const options = {
method: 'GET',
url: 'https://api.marketcheck.com/v2/search/car/active',
params: {api_key: 'YOUR_API_KEY', car_type: 'used', exclude_certified: 'true', rows: 2},
headers: {Accept: 'application/json'}
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}
country
parameter to specify the market:
country=us
for US listings (default)country=ca
for Canadian listingscountry=all
for both US and Canadian listingsus
if not specified. This is most common gotcha when using the API for Canadian data, as you need to explicitly pass country=ca
in each request.state
and city
parameters to filter by specific regions within the US or Canada.msa_code
to filter by Metropolitan Statistical Area (MSA) codes for more precise regional targeting (US only).Example:
Here we're filtering for vehicles in Michigan, USA.
import axios from 'axios';
const options = {
method: 'GET',
url: 'https://api.marketcheck.com/v2/search/car/active',
params: {api_key: 'YOUR_API_KEY', country: 'us', state: 'MI', rows: 2},
headers: {Accept: 'application/json'}
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}
Here we're filtering for vehicles in Ontario, Canada.
import axios from 'axios';
const options = {
method: 'GET',
url: 'https://api.marketcheck.com/v2/search/car/active',
params: {api_key: 'YOUR_API_KEY', country: 'ca', state: 'ON', rows: 2},
headers: {Accept: 'application/json'}
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}
vin
parameter to search for a specific vehicle by its VIN (Vehicle Identification Number).nodedup=true
parameter to your request. This will return all listings of that VIN, including those that are not attributed (i.e. not searchable).Example:
Here we're searching for a vehicle by its VIN.
import axios from 'axios';
const options = {
method: 'GET',
url: 'https://api.marketcheck.com/v2/search/car/active',
params: {api_key: 'YOUR_API_KEY', vin: '1FTFW1E81PKE39204'},
headers: {Accept: 'application/json'}
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}
Here we're searching for all listings of that VIN, including duplicates.
import axios from 'axios';
const options = {
method: 'GET',
url: 'https://api.marketcheck.com/v2/search/car/active',
params: {api_key: 'YOUR_API_KEY', vin: '1FTFW1E81PKE39204', nodedup: 'true'},
headers: {Accept: 'application/json'}
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}
This is the most common use case for the Search API, allowing you to find similar vehicles based on various attributes.
vins
and match
parameters:
vins
- Comma-separated list of VINs to find similar vehicles formatch
- Comma-separated list of attributes to match on (allowed values: year
, make
, model
, trim
, version
, build_code
, options_packages
)match
parameter is optional, and if not specified, the API will match similar cars based on squish vin of the provided VINs.
?
, to remove plant code information, which is not relevant for matching similar cars.1FTEW1EG9HKC35917
is 1FTEW1EGHK
. From this squish VIN, the 10th character is replaced with ?
, resulting in 1FTEW1EGH?
. This is the squish VIN that is used for matching similar cars.match
parameter to specify the attributes you want to match on.version
, build_code
, or options_packages
:
version
: A field derived from the Neovin decode. It represents a unique combination of the vehicle's year, make, model, trim, transmission, drivetrain, wheelbase, and body type.build_code
: A field derived from the Neovin decode that combines the vehicle's body style with its specific set of installed options packages.options_packages
: A list of the options packages installed on the vehicle. When used for matching, the API returns vehicles that have at least all the packages present in the input VIN. The returned vehicles may also contain additional options.vins
, notvin
. This is a common gotcha when using the API, as it is easy to miss the plural form.Example:
Here we're finding similar cars to a specific VIN, matching on year, make, model, and trim.
import axios from 'axios';
const options = {
method: 'GET',
url: 'https://api.marketcheck.com/v2/search/car/active',
params: {
api_key: 'YOUR_API_KEY',
vins: '1FTFW1E81PKE39204',
match: 'year,make,model,trim',
rows: 2
},
headers: {Accept: 'application/json'}
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}
stats
parameter to calculate statistics for specific fields, such as price, miles, and days on market to analyze market trends and vehicle competitiveness.Example:
Here we're finding average price and mileage for similar cars to a specific VIN, matching on year, make, model, and trim.
import axios from 'axios';
const options = {
method: 'GET',
url: 'https://api.marketcheck.com/v2/search/car/active',
params: {
api_key: 'YOUR_API_KEY',
vins: '1FTFW1E81PKE39204',
match: 'year,make,model,trim',
stats: 'price,miles',
rows: 0
},
headers: {Accept: 'application/json'}
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}
dom
- Days on market, throughout the entire lifetime of the cardom_180
- Days on market in the last 180 daysdom_active
- Active days on market across all sourcesdos_active
- Days on source activestats
parameter to calculate statistics for these fields, such as average days on market, minimum and maximum days on market, and percentiles.first_seen_range
and last_seen_range
parameters to filter listings based on when they were first and last seen, respectively.Example:
Here we're finding average days on market for similar cars to a specific VIN, matching on year, make, model, and trim, and filtering by first seen date in the last 30 days.
import axios from 'axios';
const options = {
method: 'GET',
url: 'https://api.marketcheck.com/v2/search/car/active',
params: {
api_key: 'YOUR_API_KEY',
vins: '1FTFW1E81PKE39204',
match: 'year,make,model,trim',
stats: 'dom,dom_active,dos_active',
first_seen_days: '30-0',
rows: 0
},
headers: {Accept: 'application/json'}
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}
The Search API provides specialized functionality for dealer-level analysis, allowing you to gain comprehensive insights into specific dealer inventories, performance metrics, and market positioning. This is designed for competitive analysis, dealer performance monitoring, market research, and business intelligence applications.
Key Characteristics:
Behavioral Changes with Dealer Parameters:
When any dealer-related parameter is used (dealer_id
, source
, mc_website_id
, etc.), the API automatically:
rows=0
and start=0
(no individual listings returned) to focus computational resources on analyticsnodedup=true
behavior) to show complete dealer inventory including all non-attributed (non-searchable) listingsNeed Individual Listings? If you require access to individual dealer listings with enhanced pagination limits, use the Dealership Syndication API which provides specialized endpoints for retrieving complete dealer inventories with higher pagination thresholds and detailed listing data.
Available Dealer Parameters:
dealer_id
source
dealership_group_name
mc_website_id
mc_dealer_id
mc_location_id
mc_rooftop_id
mc_dealership_group_id
mc_dealership_group_name
mc_sub_dealership_group_id
mc_sub_dealership_group_name
Examples:
Dealer Inventory Statistics
Here we're analyzing price and mileage statistics for a specific dealer's inventory:
import axios from 'axios';
const options = {
method: 'GET',
url: 'https://api.marketcheck.com/v2/search/car/active',
params: {api_key: 'YOUR_API_KEY', source: 'stgautogroup.com', stats: 'price,miles'},
headers: {Accept: 'application/json'}
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}
Dealer Make and Model Distribution
Here we're analyzing the make and model distribution for a specific dealer to understand their inventory composition:
import axios from 'axios';
const options = {
method: 'GET',
url: 'https://api.marketcheck.com/v2/search/car/active',
params: {api_key: 'YOUR_API_KEY', source: 'autonationusa.com', facets: 'make,model'},
headers: {Accept: 'application/json'}
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}
Dealer Price Range Analysis
Here we're analyzing price distribution for a specific dealer using range facets:
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',
range_facets: 'price|10000|100000'
},
headers: {Accept: 'application/json'}
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}
Dealer Performance Metrics
Here we're analyzing market timing metrics for a specific dealer:
import axios from 'axios';
const options = {
method: 'GET',
url: 'https://api.marketcheck.com/v2/search/car/active',
params: {api_key: 'YOUR_API_KEY', mc_website_id: '1035095', stats: 'dom_active'},
headers: {Accept: 'application/json'}
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}
high_value_features
and options_packages
parameters to filter listings based on specific features and options.high_value_features
allows you to filter by premium features like navigation, sun/moonroof, leather seats, etc.options_packages
allows you to filter by specific option packages that are available for the vehicle. These are codes that are sourced from NeoVINexclude_high_value_features
and exclude_options_packages
to exclude listings with specific features or option packages.Example:
Here we're filtering for vehicles with navigation and sun/moonroof, and excluding those with leather seats.
import axios from 'axios';
const options = {
method: 'GET',
url: 'https://api.marketcheck.com/v2/search/car/active',
params: {
api_key: 'YOUR_API_KEY',
high_value_features: 'Navigation,connected camera,Sun/moonroof',
rows: 2
},
headers: {Accept: 'application/json'}
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}
plot
is a special parameter that allows you to pull more number of listings but with limited fields, for the purpose of plotting data on a map or chartplot
is set to true
, the API returns upto 1000 listings with limited fields in one goExample:
Here we're pulling a plot of vehicles in California, USA, with limited fields.
import axios from 'axios';
const options = {
method: 'GET',
url: 'https://api.marketcheck.com/v2/search/car/active',
params: {api_key: 'YOUR_API_KEY', state: 'CA', plot: 'true', rows: 1000},
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_range
and moreExample:
Here we're filtering for vehicles with price between $10,000 and $20,000, mileage between 0 and 50,000 miles, and days on market between 0 and 30 days.
import axios from 'axios';
const options = {
method: 'GET',
url: 'https://api.marketcheck.com/v2/search/car/active',
params: {
api_key: 'YOUR_API_KEY',
price_range: '10000-20000',
miles_range: '0-50000',
dom_active: '0-30',
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 trim and fuel types for 2023 Ford F-150 vehicles, with a minimum count of 10 listings for each trim and fuel type.
import axios from 'axios';
const options = {
method: 'GET',
url: 'https://api.marketcheck.com/v2/search/car/active',
params: {
api_key: 'YOUR_API_KEY',
rows: 0,
year: '2023',
make: 'Ford',
model: 'F-150',
facets: 'trim|0|1000|10,fuel_type|0|1000|10'
},
headers: {Accept: 'application/json'}
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}
photo_links
or photo_links_cached
parameters to get only the listings that have valid photo links or cached photo links.photo_links
returns the original photo links, while photo_links_cached
returns the cached photo links that are stored in the MarketCheck database.Example:
Here we're filtering for vehicles with valid photo links, and returning only the listings that have photos.
import axios from 'axios';
const options = {
method: 'GET',
url: 'https://api.marketcheck.com/v2/search/car/active',
params: {api_key: 'YOUR_API_KEY', min_photo_links: '5', photo_links: 'true', rows: 2},
headers: {Accept: 'application/json'}
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}
include_non_vin_listings=true
parameter in your requestExample:
Here we're including non-VIN listings in our search results, which will return listings that do not have a VIN.
import axios from 'axios';
const options = {
method: 'GET',
url: 'https://api.marketcheck.com/v2/search/car/active',
params: {api_key: 'YOUR_API_KEY', rows: 2, 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) parametersExample:
import axios from 'axios';
const options = {
method: 'GET',
url: 'https://api.marketcheck.com/v2/search/car/active',
params: {api_key: 'YOUR_API_KEY', 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);
}
first_seen_at_range
or first_seen_days
parameter will not work for this use case, as they facilitate filtering based on when the listing (not the vehicle) was first seen in the MarketCheck database at that source, which may not be the same as when it was first seen on the source website.price_change
parameter or price_change_range
parameter, used in conjunction with first_seen_at_range
or first_seen_days
parametersref_price
is substantially older due to the listing being stale, or past historic listing of the same vehicle that has been re-listed at a later dateExample:
Here we're finding vehicles that have had their prices increased in last 24 hours, sorted by price change percentage in descending order.
import axios from 'axios';
const options = {
method: 'GET',
url: 'https://api.marketcheck.com/v2/search/car/active',
params: {
api_key: 'YOUR_API_KEY',
rows: '2',
first_seen_days: '1-*',
price_change: 'positive',
sort_by: 'price_change_percent',
sort_order: 'desc'
},
headers: {Accept: 'application/json'}
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}
As is evident from the example above, it can return listings that have had their prices corrected due to crawling errors. That is the reason why we recommend using price_change_range
parameter to filter out listings that have had their prices changed within a specific range, such as 50% or lower, to avoid such listings.
import axios from 'axios';
const options = {
method: 'GET',
url: 'https://api.marketcheck.com/v2/search/car/active',
params: {
api_key: 'YOUR_API_KEY',
rows: '2',
first_seen_days: '1-*',
price_change: 'positive',
price_change_range: '0-50',
sort_by: 'price_change_percent',
sort_order: 'desc'
},
headers: {Accept: 'application/json'}
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}
in_transit
parameternew
inventory typeExample:
import axios from 'axios';
const options = {
method: 'GET',
url: 'https://api.marketcheck.com/v2/search/car/active',
params: {api_key: 'YOUR_API_KEY', in_transit: 'true', car_type: 'new', rows: '2'},
headers: {Accept: 'application/json'}
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}
fuel_type
parameterfuel_type
parameter, we recommend using facets to get the exact values for filteringExample:
Here we're first gathering the unique fuel types using facets
import axios from 'axios';
const options = {
method: 'GET',
url: 'https://api.marketcheck.com/v2/search/car/active',
params: {api_key: 'YOUR_API_KEY', facets: 'fuel_type|0|100', rows: '0'},
headers: {Accept: 'application/json'}
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}
Next, we can filter for electric vehicles using the fuel_type
parameter with many values, including electric
, Electric / Unleaded
, Electric / Premium Unleaded
, Electric / E85
and Electric / Hydrogen
, which are the values that are returned in the facets response.
import axios from 'axios';
const options = {
method: 'GET',
url: 'https://api.marketcheck.com/v2/search/car/active',
params: {
api_key: 'YOUR_API_KEY',
fuel_type: 'electric,Electric / Unleaded,Electric / Premium Unleaded,Electric / E85,Electric / Hydrogen',
rows: '2'
},
headers: {Accept: 'application/json'}
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}
powertrain_type
parameterExample:
Here we're first gathering the unique powertrain types using facets
import axios from 'axios';
const options = {
method: 'GET',
url: 'https://api.marketcheck.com/v2/search/car/active',
params: {api_key: 'YOUR_API_KEY', facets: 'powertrain_type', rows: '0'},
headers: {Accept: 'application/json'}
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}
Next, we can filter for plug-in hybrid vehicles using the powertrain_type
parameter with value PHEV
(Plug-In Hybrid Electric Vehicle), which is the value that is returned in the facets response.
import axios from 'axios';
const options = {
method: 'GET',
url: 'https://api.marketcheck.com/v2/search/car/active',
params: {api_key: 'YOUR_API_KEY', powertrain_type: 'PHEV', rows: '2'},
headers: {Accept: 'application/json'}
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}
stats
parameterExample:
Here we're finding the average discount on MSRP for new vehicles from Ford
import axios from 'axios';
const options = {
method: 'GET',
url: 'https://api.marketcheck.com/v2/search/car/active',
params: {
api_key: 'YOUR_API_KEY',
rows: '0',
make: 'Ford',
car_type: 'new',
stats: 'msrp,price'
},
headers: {Accept: 'application/json'}
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}
Here we're finding the average discount on MSRP for new vehicles from Toyota
import axios from 'axios';
const options = {
method: 'GET',
url: 'https://api.marketcheck.com/v2/search/car/active',
params: {
api_key: 'YOUR_API_KEY',
rows: '0',
make: 'Toyota',
car_type: 'new',
stats: 'msrp,price'
},
headers: {Accept: 'application/json'}
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}
stats
parameterExample:
Here we're finding the typical mileage for 2020 Ford F-150 models.
import axios from 'axios';
const options = {
method: 'GET',
url: 'https://api.marketcheck.com/v2/search/car/active',
params: {
api_key: 'YOUR_API_KEY',
year: '2020',
make: 'Ford',
model: 'F-150',
car_type: 'used',
stats: 'miles',
rows: '0'
},
headers: {Accept: 'application/json'}
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}
stats
parametercar_type=certified
, and then calculate the average price for certified vehicles
inventory_type=used
and is_certified=1
in the responsecar_type=used&exclude_certified=true
, and then calculate the average price for non-certified vehiclesExample:
Here first we're finding the average price for certified vehicles with age less than 5 years
import axios from 'axios';
const options = {
method: 'GET',
url: 'https://api.marketcheck.com/v2/search/car/active',
params: {
api_key: 'YOUR_API_KEY',
car_type: 'certified',
year_range: '2020-2025',
stats: 'price',
rows: '0'
},
headers: {Accept: 'application/json'}
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}
Next, we're finding the average price for non-certified vehicles with age less than 5 years
import axios from 'axios';
const options = {
method: 'GET',
url: 'https://api.marketcheck.com/v2/search/car/active',
params: {
api_key: 'YOUR_API_KEY',
car_type: 'used',
exclude_certified: 'true',
year_range: '2020-2025',
stats: 'price',
rows: '0'
},
headers: {Accept: 'application/json'}
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}
Finally, we can compare the average prices to understand the price difference between certified and non-certified vehicles
vins
and match
parametersstats
parameter to calculate statistics for the comparable vehicles, such as average price, mileage, and days on marketExample:
Here we're finding comparable vehicles to a specific VIN, matching on year, make, model, and trim, and calculating average price and mileage for the comparable vehicles.
import axios from 'axios';
const options = {
method: 'GET',
url: 'https://api.marketcheck.com/v2/search/car/active',
params: {
api_key: 'YOUR_API_KEY',
vins: '1HGBH41JXMN109186',
match: 'year,make,model,trim',
stats: 'price,miles',
rows: '2'
},
headers: {Accept: 'application/json'}
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}
powertrain_type
parameterstats
parameter to calculate statistics for both types of vehicles, such as average price, mileage, and days on market etcExample:
Here we're comparing ICE vehicles with Electric Vehicles, calculating average price and mileage for both types of vehicles.
import axios from 'axios';
const options = {
method: 'GET',
url: 'https://api.marketcheck.com/v2/search/car/active',
params: {
api_key: 'YOUR_API_KEY',
powertrain_type: 'Combustion',
stats: 'price,miles',
rows: '0'
},
headers: {Accept: 'application/json'}
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}
Here we're getting statistics for Electric Vehicles, including average price, mileage.
import axios from 'axios';
const options = {
method: 'GET',
url: 'https://api.marketcheck.com/v2/search/car/active',
params: {
api_key: 'YOUR_API_KEY',
powertrain_type: 'BEV',
stats: 'price,miles',
rows: '0'
},
headers: {Accept: 'application/json'}
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}
Optimal Request Patterns
radius
values for spatial searches to improve performance. If too large area is desired then consider using city
or state
parameters instead of radius
, as they are more efficient.Response Time Expectations
Search Type | Expected Response Time |
---|---|
Basic search (city, make) | < 200ms |
Complex filters (5+ params) | < 500ms |
Spatial search (< 100mi radius) | < 300ms |
Stats calculations | < 800ms |
Large facet requests | < 1s |