The Past Inventory Search API provides access to expired and inferred sold dealer listings from the past 90 days across UK markets. This powerful historical dataset has recent inventory data from thousands of dealerships, delivering access to extensive expired records for advanced market analysis.
With sophisticated filtering, sorting, and analytics capabilities identical to the Inventory Search API, this tool enables dealers, analysts, and automotive professionals to understand market trends, analyze pricing history, track inventory turnover, and gain insights into sales patterns and dealer performance.
Key Differences from Active Inventory:
Attribution & Sold Listings:
source
or dealer_id
like parameters). Refer to Understanding Attribution for more detailsnodedup=true
parameter, which will return all listings for a VRM across all sources, including duplicates from the same sourcePerformance Restrictions:
Given the large volume of data, the endpoint has some performance restrictions:
facets
, stats
, or range_facets
parameters can be used per requestDefault behavior, currency and units, request/response structure, and filtering parameters match those in the Inventory Search API overview.
GET https://api.marketcheck.com/v2/search/car/uk/recents
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/uk/recents',
params: {
api_key: 'YOUR_API_KEY',
county: 'Leicestershire',
sold: 'true',
year: '2023',
make: 'toyota',
rows: '2'
},
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 Request section below.
The Past Inventory Search API provides extensive filtering and search capabilities for historical automotive inventory listings. You can search by vehicle specifications, geographic location, pricing ranges, dealer types, date ranges, and numerous other criteria to analyze expired and sold vehicles.
All filtering, sorting, analytics, and pagination capabilities match those in the Inventory Search API, with additional parameters specific to historical data analysis.
Filters listings active at least once within the specified date range. Specify as YYYYMMDD-YYYYMMDD
(e.g., 20190523-20190623
).
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 combined fuel-economy mileage. Specify as min-max
MPG (e.g., 40-65
).
Filters listings by UK country code. Allowed values - uk
, england
, scotland
, wales
, northern_ireland
.
Filters listings by county name (e.g. Greater London
, Lancashire
). Use instead of state
. Accepts multiple counties as comma-separated values.
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.
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 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 from the specified sources (e.g., autonation.com
, carmax.com
). Accepts multiple values as comma-separated list.
Excludes listings with specified write-off categories (e.g., Category A
, Category B
, Category S
, Category N
). Accepts multiple values as comma-separated list.
If true
, returns listings of expired VRMs (i.e., VRMs that are no longer active in the market for sale); if false
, returns expired listings of VRMs that are still active.
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.
FCA authorization status for dealers. (e.g., Authorised
, Appointed Representative
, Registered
). Accepts multiple values 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
, 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 UK insurance group rating (e.g., E
, 15E
, etc). Accepts multiple values as comma-separated list.
Filters listings by interior color. Accepts multiple values as comma-separated list.
If true
, returns listings where VAT is included in the price; if false
, returns listings where VAT is excluded. Default — no filter applied.
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.
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 vrm
. Allowed values — year,make,model
or year,make,model,variant,body_type
.
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 by specific vehicle model (e.g., Camry
). Accepts multiple values separated by commas.
Filters listings by specific vehicle model variant (e.g., 320d M Sport
, C220d AMG Line
). Accepts multiple values as comma-separated list.
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 number of previous owners.
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 within the specified postal code (e.g., M5H 2N2
).
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.
If true
, returns listings that are inferred to be sold by MarketCheck.
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.
If true
, returns listings that are ULEZ (Ultra Low Emission Zone) compliant. Default — false.
Alias of trim
. Filters listings by vehicle variant identifier. Accepts multiple values as comma-separated list.
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 Registration Mark (VRM/number plate). Use instead of vehicle_registration_mark
. Accepts multiple values as comma-separated list.
Filters listings by wheelbase category (e.g., SWB
, LWB
). Accepts multiple values as comma-separated list.
Filters listings by write-off category classification (e.g., Category A
, Category B
, Category S
, Category N
). Accepts multiple values as comma-separated list.
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-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.
true
- only unique listings per VRM are returned, removing duplicates from the dataset
nodedup=true
to include all listings, even duplicatessold=true
to filter results to only include vehicles that have been marked as soldexpired=true
to filter for expired VRMs (VRMs that have no active listings)YYYYMMDD-YYYYMMDD
(either end can be omitted using *
)first_seen_at_source
and last_seen_at_source
timestampsactive_inventory_date_range=20250501-20250531
Past Inventory Search API supports the same pagination capabilities as the Inventory Search API. API response includes num_found
property indicating the total number of listings matching the search criteria.
Parameters:
start
- Offset from which listings are returned (starts at 0)rows
- Number of listings per page (maximum 50, default 10)Refer to the Inventory Search API pagination documentation for complete details and examples.
The Past Inventory Search API supports sorting results by a single numeric or date field at a time, with the same functionality as the Inventory Search API.
Sort Parameters:
sort_by
- Field name to sort bysort_order
- Sort direction (asc
or desc
)Refer to the Inventory Search API sorting documentation for complete field reference and examples.
Past Inventory Search supports all major features from the Inventory Search API with identical functionality:
To find recently sold vehicles, you can use the sold=true
parameter. This will filter results to only include vehicles that have been marked as sold in the past 90 days.
Example:
Here we search for sold vehicles in Leicestershire county with specific criteria, including price range of £1,000 to £30,000 and sorting by the most recent sale date.
import axios from 'axios';
const options = {
method: 'GET',
url: 'https://api.marketcheck.com/v2/search/car/uk/recents',
params: {
api_key: 'YOUR_API_KEY',
county: 'Leicestershire',
sold: 'true',
price_range: '10000-30000',
sort_by: 'last_seen',
sort_order: 'desc',
rows: '2'
},
headers: {Accept: 'application/json'}
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}
expired=true
parameter.Example:
Here we search for expired VRMs in the London city.
import axios from 'axios';
const options = {
method: 'GET',
url: 'https://api.marketcheck.com/v2/search/car/uk/recents',
params: {
api_key: 'YOUR_API_KEY',
city: 'London',
county: 'Greater London',
expired: 'true',
rows: '2'
},
headers: {Accept: 'application/json'}
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}
stats
parameter with either dom_active
or dos_active
fields.dom_active
gives you the days on market for the VRM across all sources. So you can use this to get the average days on market for a VRM across all sources.dos_active
gives you the days on site for the VRM on a specific source. So you can use this to get the average days it took for a dealer to sell this vehicle on a specific source.Example:
Here we search for the average days to sell a vehicle in specific UK counties, across all sources using the dom_active
field.
import axios from 'axios';
const options = {
method: 'GET',
url: 'https://api.marketcheck.com/v2/search/car/uk/recents',
params: {
api_key: 'YOUR_API_KEY',
state: 'Leicestershire',
sold: 'true',
stats: 'dom_active',
rows: '0'
},
headers: {Accept: 'application/json'}
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}
Example:
Here we search for the average days to sell a vehicle for a specific dealer, using the dos_active
field.
import axios from 'axios';
const options = {
method: 'GET',
url: 'https://api.marketcheck.com/v2/search/car/uk/recents',
params: {
api_key: 'YOUR_API_KEY',
source: 'sytner.co.uk',
county: 'Leicestershire',
sold: 'true',
stats: 'dos_active',
rows: '0'
},
headers: {Accept: 'application/json'}
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}
stats
parameter, you can retrieve average sale prices for vehicles in the past N days.Example:
Here we search for the average sale prices of vehicles similar to a specific VRM in the past 30 days, around a specific location.
import axios from 'axios';
const options = {
method: 'GET',
url: 'https://api.marketcheck.com/v2/search/car/uk/recents',
params: {
api_key: 'YOUR_API_KEY',
postal_code: 'ST5 9HX',
radius: '50',
vrm: 'NA22URU',
match: 'year,make,model,variant',
sold: 'true',
last_seen_days: '30-*',
stats: 'price',
rows: '0'
},
headers: {Accept: 'application/json'}
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}
last_seen_range
and first_seen_range
parameters.last_seen
timestamp must be greater than or equal to the lower bound of the date rangefirst_seen
timestamp must be less than or equal to the upper bound of the date rangelast_seen_range
and first_seen_range
parameters accept a date range in the format YYYYMMDD-YYYYMMDD
, where the first date is the lower bound and the second date is the upper bound.*
) to indicate no limit on that side of the range.nodedup=true
parameter can be used to return all listings for a VRM across all sources, including duplicates from the same source that were active during the specified date range.Example:
Here we search for listings that were active between 1st May 2025 and 31st May 2025 including all listings across all sources for each VRM, around a specific location.
import axios from 'axios';
const options = {
method: 'GET',
url: 'https://api.marketcheck.com/v2/search/car/uk/recents',
params: {
api_key: 'YOUR_API_KEY',
postal_code: 'ST5 9HX',
radius: '50',
last_seen_range: '20250501-*',
first_seen_range: '*-20250531',
nodedup: 'true',
rows: '2'
},
headers: {Accept: 'application/json'}
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}
first_seen
and last_seen
timestamps may not fall within the specified range, but they must have been seen in the market within the specified date range.So first_seen
to last_seen
window will overlap with the specified date range, but not necessarily fall within it.active_inventory_date_range
parameter.YYYYMMDD-YYYYMMDD
, where the first date is the lower bound and the second date is the upper bound.*
) to indicate no limit on that side of the range.active_inventory_date_range
parameter filters the results to only include VRMs that had at least one listing active during the specified date range.nodedup=true
parameter to return all listings for a VRM across all sources, including duplicates from the same source.first_seen_at_source
and last_seen_at_source
timestamps, which are the timestamps when the listing was first and last seen on the source website respectively.Example:
Here we search for VRMs that were active between 1st May 2025 and 31st May 2025.
import axios from 'axios';
const options = {
method: 'GET',
url: 'https://api.marketcheck.com/v2/search/car/uk/recents',
params: {
api_key: 'YOUR_API_KEY',
postal_code: 'PA1 2BH',
radius: '50',
active_inventory_date_range: '20250501-20250531',
nodedup: 'true',
rows: '2'
},
headers: {Accept: 'application/json'}
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}
dealer_id
or source
parameters to filter results by a specific dealer or source website along with stats
parameter to retrieve aggregated datadealer_id
or source
parameters, the results will include only listings from that specific dealer or source website. Attribution is disabled, so all listings from that dealer or source will be returned, including duplicates for the same VRMowned=true
parameter, which will return only those listings that were attributed to that dealer or sourceExample:
Here we search for a specific dealer's performance in UK counties, including average sale price.
import axios from 'axios';
const options = {
method: 'GET',
url: 'https://api.marketcheck.com/v2/search/car/uk/recents',
params: {
api_key: 'YOUR_API_KEY',
rows: '0',
dealer_id: '10037694',
sold: 'true',
stats: 'price'
},
headers: {Accept: 'application/json'}
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}
Example:
Here we search for a specific source's performance, including average sale prices but only for cars that were attributed to that source.
import axios from 'axios';
const options = {
method: 'GET',
url: 'https://api.marketcheck.com/v2/search/car/uk/recents',
params: {
api_key: 'YOUR_API_KEY',
rows: '0',
source: 'sytner.co.uk',
sold: 'true',
stats: 'price'
},
headers: {Accept: 'application/json'}
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}
facets
parameter to retrieve aggregated data along with sold=true
to include only sold vehiclesExample:
Here we search for the most popular makes and models in specific county, including only sold vehicles.
import axios from 'axios';
const options = {
method: 'GET',
url: 'https://api.marketcheck.com/v2/search/car/uk/recents',
params: {
api_key: 'YOUR_API_KEY',
county: 'Leicestershire',
sold: 'true',
facets: 'make|0|100,model|0|100',
rows: '0'
},
headers: {Accept: 'application/json'}
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}
facets
parameter to retrieve aggregated data along with sold=true
to include only sold vehiclesExample:
Here we get aggregated data for the top dealers by sales volume in specific county, including only sold vehicles.
import axios from 'axios';
const options = {
method: 'GET',
url: 'https://api.marketcheck.com/v2/search/car/uk/recents',
params: {
api_key: 'YOUR_API_KEY',
county: 'Leicestershire',
sold: 'true',
facets: 'source|0|1000',
rows: '0'
},
headers: {Accept: 'application/json'}
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}
Analyze how quickly different vehicle segments move through the market by comparing days on market across various categories.
Example:
Here we're analyzing inventory turnover rates for different body types to understand which vehicle categories sell fastest.
First we'll get valid body types using the facets
parameter, then we'll use the stats
parameter to get the average days on market for each body type.
import axios from 'axios';
const options = {
method: 'GET',
url: 'https://api.marketcheck.com/v2/search/car/uk/recents',
params: {
api_key: 'YOUR_API_KEY',
county: 'Leicestershire',
sold: 'true',
facets: 'body_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'll use the stats
parameter to get the average days on market for each body type. One example is shown below, where we analyze the average days on market for SUVs in UK counties.
import axios from 'axios';
const options = {
method: 'GET',
url: 'https://api.marketcheck.com/v2/search/car/uk/recents',
params: {
api_key: 'YOUR_API_KEY',
county: 'Leicestershire',
sold: 'true',
body_type: 'SUV',
stats: 'dos_active',
rows: '0'
},
headers: {Accept: 'application/json'}
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}
Track seasonal patterns in vehicle sales by analyzing sold vehicles within specific time periods and comparing across different months or seasons.
Example:
Here we're analyzing seasonal trends by looking at sold vehicles during a specific month to understand market patterns.
import axios from 'axios';
const options = {
method: 'GET',
url: 'https://api.marketcheck.com/v2/search/car/uk/recents',
params: {
api_key: 'YOUR_API_KEY',
county: 'Greater London',
sold: 'true',
last_seen_range: '20250501-20250531',
stats: 'price',
rows: '0'
},
headers: {Accept: 'application/json'}
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}
Analyze pricing and market distribution across different insurance group categories.
Example:
Here we analyze average sale prices across different insurance groups to understand pricing patterns.
import axios from 'axios';
const options = {
method: 'GET',
url: 'https://api.marketcheck.com/v2/search/car/uk/recents',
params: {
api_key: 'YOUR_API_KEY',
sold: 'true',
insurance_group: '15E',
stats: 'price',
rows: '0'
},
headers: {Accept: 'application/json'}
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}
Analyze brand and dealer market share within specific UK regions using sold vehicle data.
Example:
Here we analyze market share by examining the distribution of sold vehicles by make within city of London.
import axios from 'axios';
const options = {
method: 'GET',
url: 'https://api.marketcheck.com/v2/search/car/uk/recents',
params: {
api_key: 'YOUR_API_KEY',
city: 'London',
sold: 'true',
facets: 'make',
rows: '0'
},
headers: {Accept: 'application/json'}
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}
The Inventory Search API returns JSON data with comprehensive vehicle listing information, including inventory details, dealer information, vehicle specifications, and optional facets and statistics.
interface PastSearchResponse {
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
vehicle_registration_mark?: string; // Vehicle Registration Mark (UK)
uvc_id?: string; // Unique Vehicle Code identifier
heading?: string; // Formatted listing title
price?: number; // Current listing price in GBP
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
is_certified?: number; // Certification status
vdp_url?: string; // Vehicle detail page URL
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)
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
ulez_compliant?: boolean; // ULEZ compliance status
fca_status?: string; // FCA authorization status
write_off_category?: string; // Write-off category classification
num_owners?: number; // Number of previous owners
vehicle_registration_date?: string; // Vehicle registration date
insurance_group?: number; // UK insurance group rating
is_vat_included?: boolean; // VAT inclusion status
co2_emissions?: number; // CO2 emissions rating
performance_co2?: number; // CO2 performance rating
ev_battery_capacity?: number; // Electric vehicle battery capacity
ev_battery_type?: string; // Electric vehicle battery type
ev_vehicle_range?: number; // Electric vehicle range
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 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
county?: string; // County name (UK)
country?: string; // Country code
latitude?: string; // Geographic latitude
longitude?: string; // Geographic longitude
postal_code?: string; // UK postal code
phone?: string; // Contact phone number
seller_email?: string; // Contact email address
fca_status?: string; // FCA authorization status
preferred_dealer?: boolean; // Flag indicating if this is a preferred dealer
}
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
county?: string; // County name (UK)
country?: string; // Country code
latitude?: string; // Geographic latitude
longitude?: string; // Geographic longitude
postal_code?: string; // UK postal code
phone?: string; // Contact phone number
fca_status?: string; // FCA authorization status
}
interface Build {
year: number; // Model year
make: string; // Vehicle manufacturer
model?: string; // Vehicle model
model_variant?: string; // Vehicle model variant
trim?: string; // Trim level
variant?: string; // Specific variant identifier
body_type?: string; // Body style (saloon, hatchback, estate, etc.)
vehicle_type?: string; // Vehicle category
transmission?: string; // Transmission type
drivetrain?: string; // Drivetrain configuration
fuel_type?: string; // Fuel type (petrol, diesel, electric, hybrid, etc.)
engine?: string; // Engine description
engine_size?: number; // Engine displacement
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
wheelbase_category?: string; // Wheelbase classification
std_seating?: string; // Standard seating capacity
highway_mpg?: number; // Highway fuel economy
city_mpg?: number; // City fuel economy
combined_mpg?: number; // Combined fuel economy
seating_capacity?: number; // Passenger seating capacity
performance_torque_ftlb?: number; // Torque in foot-pounds
performance_maxspeed_mph?: number; // Maximum speed in miles per hour
performance_torque_rpm?: number; // Torque at RPM
performance_power_bhp?: number; // Power in brake horsepower
performance_power_rpm?: number; // Power at RPM
performance_torque_nm?: number; // Torque in Newton-meters
performance_power_kw?: number; // Power in kilowatts
performance_co2?: number; // CO2 emissions rating
euro_status?: number; // Euro emissions standard status
}
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
Optimal Request Patterns
radius
values for spatial searches to improve performance. If too large area is desired then consider using county
or city
parameters instead of radius
, as they are more efficient.Inventory Search
Search active dealer listings currently for sale in UK market with comprehensive filtering, sorting, analytics, and geographic targeting capabilities.
Auto-Complete
Implement real-time auto-completion for search inputs using facet capabilities with suggestions and counts across UK automotive inventory data.