The Inventory Search API enables searching and filtering recreational vehicle listings from UK dealers and marketplaces. This endpoint provides comprehensive search capabilities across motorhomes, caravans, campervans, and travel trailers with detailed filtering options for type, price, location, and vehicle specifications.
Units & Conventions:
Field / Pattern | Unit | Notes |
---|---|---|
price, msrp | GBP (UK) | 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 |
length, width, height | Feet and inches (e.g., "37'8"") | RV dimension specifications |
GET https://api.marketcheck.com/v2/search/rv/uk/active
The following example demonstrates a basic search for recreational vehicles:
import axios from 'axios';
const options = {
method: 'GET',
url: 'https://api.marketcheck.com/v2/search/rv/uk/active',
params: {
api_key: 'YOUR_API_KEY',
rows: 2,
make: 'Bailey',
year: 2023,
start: 0,
facets: 'category',
stats: 'price'
},
headers: {Accept: 'application/json'}
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}
Explore the complete parameter options and response structure in the Request section below.
The RV Inventory Search API provides flexible search and filtering capabilities for recreational vehicle listings. Search results include listing IDs that can be used with the Vehicle Listing API to retrieve detailed information.
Available parameters for RV inventory search:
Your MarketCheck API authentication key. Required for every request, unless OAuth is used.
Filters listings by their availability status (e.g., Due in
, sold
, pending
). Accepts multiple statuses as a comma-separated list.
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 the number of berths in the RV (e.g., 2
, 4
, 6
). Accepts multiple values as a comma-separated list.
Filters listings by chassis type (e.g. Ford
, Chevrolet
, Mercedes-Benz
). Accepts multiple values as a comma-separated list.
Filters listings by city name (e.g. Los Angeles
, San Francisco
, Houston
).
Filters listings by engine cylinder count (e.g., 4
, 6
, 8
). Accepts multiple values as a comma-separated list.
Filters listings by dealer name (case-insensitive complete match, substring not supported).
Filters listings by number of doors (e.g., 2
, 4
). Accepts multiple values as comma-separated list.
Filters listings by drive type (e.g., AWD
, FWD
, RWD
, 4WD
). Accepts multiple values as a comma-separated list.
Filters listings by engine displacement size (e.g., 2.0
, 2.5
, 3.5
). Accepts multiple values separated by commas.
Filters listings by exterior color (e.g. White
, Summit White
, Gun Metallic
). Accepts multiple values as comma-separated list.
Filters listings by exterior length in inches. Specify as min-max
inches (e.g., 150-250
).
Sorts facet buckets. Allowed values — count
(descending count, default) or index
(alphabetical).
Field name to return bucket facets for. Accepts multiple fields as a comma-separated list.
Filters listings by the number of days since they were first seen 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 interior color. Accepts multiple values as comma-separated list.
Filters listings by interior length in inches. Specify as min-max
inches (e.g., 100-200
).
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.
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 Manufacturer's Suggested Retail Price (MSRP). Specify as min-max
USD (e.g., 20000-45000
).
Filters listings by Maximum Technically Permissible Laden Mass (MTPLM) in pounds.
Filters listings within the specified postal code (e.g., M5H 2N2
).
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.
Text substring search within listing titles, descriptions, and other fields. Use tokenized_search_text
instead for tokenized search.
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 steering type (e.g., power steering
). Accepts multiple values separated by commas.
Filters RV listings by their sub-category (e.g., Travel Trailer
, Fifth Wheel
). Accepts multiple values as a comma-separated list.
Filters listings by transmission type (Automatic
, Manual
, etc.). Accepts multiple values separated by commas.
Filters listings by vehicle width in inches. Specify as min-max
inches (e.g., 60-80
).
Filters listings by model year (e.g., 2020
). Accepts multiple years separated by commas.
Filters listings by model year range. Specify as min-max
(e.g., 2015-2025
).
Filters listings within the specified 5-digit ZIP code.
API response includes num_found
property indicating the total number of RV 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
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)
Common Sort Fields
Below are the most commonly used sort fields for RV searches:
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 |
Year | year | Numeric | asc | Sort listings by model year |
Last Seen | last_seen | Date | asc | Sort listings by last seen date |
First Seen | first_seen | Date | asc | Sort listings by first seen date |
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 RV 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 RV 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
facets=make|0|60|2
returns top 60 makes with at least 2 listings eachfacet_sort
— Controls sort order of facet terms:count
(default): Sort by frequency (highest first)index
: Sort alphabetically|
) character, which is used to separate positional parameters. For example, use %7C
for |
in URLs.Example
import axios from 'axios';
const options = {
method: 'GET',
url: 'https://api.marketcheck.com/v2/search/rv/uk/active',
params: {
api_key: 'YOUR_API_KEY',
rows: 0,
make: 'Bailey',
year: 2024,
facets: 'model|0|100,city|0|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": "Bailey", "count": 984 },
{ "item": "Swift", "count": 870 },
...
],
"city": [
{ "item": "Somerset", "count": 1147 },
{ "item": "Doncaster", "count": 364 },
...
]
}
}
Available Field Facets
Field | Description |
---|---|
year | RV model year |
make | RV manufacturer |
model | RV model name |
category | RV category classification |
sub_category | RV sub-category classification |
inventory_type | New or used designation |
fuel_type | Fuel system type |
berths | Number of berths/sleeping capacity |
exterior_color | Exterior color designation |
interior_color | Interior color designation |
city | Listing city location |
state | Listing state/county location |
county | Listing county location |
zip | Listing zip code |
postal_code | Listing postal code |
source | Website domains where listed |
seller_name | Dealer name |
dealer_id | MarketCheck dealer ID |
availability_status | RV availability status |
base_exterior_color | Base exterior color |
base_interior_color | Base interior color |
base_ext_color | Base exterior color (short form) |
base_int_color | Base interior color (short form) |
drivetrain | Drivetrain configuration |
steering | Steering configuration |
chassis | Chassis type |
drive_type | Drive type configuration |
transmission | Transmission type |
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/rv/uk/active',
params: {
api_key: 'YOUR_API_KEY',
rows: 0,
make: 'Bailey',
year: 2024,
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 |
---|---|---|
price | RV listing price range | 500-10500 |
miles | RV mileage range | 0-10000 |
exterior_length | RV exterior length range | 0-10000 |
interior_length | RV interior length range | 0-10000 |
width | RV width range | 0-10000 |
The Search API calculates comprehensive statistics for numeric fields, providing market analysis and competitive intelligence insights for RV inventory.
Parameters
stats
— Comma-separated list of fields to calculate statistics on
stats=price,miles
Example
import axios from 'axios';
const options = {
method: 'GET',
url: 'https://api.marketcheck.com/v2/search/rv/uk/active',
params: {
api_key: 'YOUR_API_KEY',
rows: 0,
year: '2024',
make: 'Bailey',
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:
Field | Description |
---|---|
price | RV listing price statistics |
miles | RV mileage statistics |
Search for RVs available near specific locations using geographic coordinates, postal codes, or radius parameters for location-based inventory discovery.
Parameters
latitude
and longitude
- Exact coordinatespostal_code
- Postal 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/rv/uk/active',
params: {
api_key: 'YOUR_API_KEY',
rows: 2,
make: 'Bailey',
year: 2023,
start: 0,
postal_code: 'DN10 6DG',
radius: 100
},
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 codeFind motorhomes available from dealers in specific regions, useful for customers looking for RVs within reasonable travel distance.
Example:
Here we're searching for motorhomes in the London area:
import axios from 'axios';
const options = {
method: 'GET',
url: 'https://api.marketcheck.com/v2/search/rv/uk/active',
params: {
api_key: 'YOUR_API_KEY',
rows: 2,
make: 'Bailey',
year: 2023,
start: 0,
facets: 'category',
stats: 'price'
},
headers: {Accept: 'application/json'}
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}
The API returns search results with basic RV information and listing details. Each result includes a unique listing ID that can be used with the Vehicle Listing API for detailed information.
Successful responses return a JSON object containing:
interface RVSearchResponse {
num_found: number; // Total number of listings matching search criteria
listings: RVListing[]; // 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 RVListing {
id: string; // Unique listing identifier
heading: string; // Formatted listing title
price: number; // Current listing price
miles: number; // Vehicle mileage
vdp_url: string; // Vehicle detail page URL
seller_type: string; // Type of seller (dealer, fsbo, auction)
inventory_type: string; // Inventory classification (new, used)
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)
source: string; // Data source website domain
miles_indicator: string; // Mileage unit indicator
currency_indicator: string; // Currency unit indicator
motorhome_build: string; // Motorhome build specifications
origin: string; // Vehicle origin information
media: RVMedia; // Photos and media content links
dealer: RVDealer; // Dealer information
build: RVBuild; // Vehicle specifications
dist?: number; // Distance from search coordinates (if location-based search)
}
interface RVMedia {
photo_links: string[]; // Array of photo URLs from dealer website
floorplan_image_link?: string; // Floorplan image URL
}
interface RVDealer {
id: number; // Unique dealer identifier
website: string; // Dealer website URL
name: string; // Dealer business name
street: string; // Street address
city: string; // City name
county: string; // County name
country: string; // Country code
latitude: string; // Geographic latitude
longitude: string; // Geographic longitude
zip: string; // Postal/ZIP code
phone: string; // Contact phone number
}
interface RVBuild {
year: number; // Model year
make: string; // Vehicle manufacturer
model: string; // Vehicle model
transmission: string; // Transmission type
fuel_type: string; // Fuel type (gasoline, electric, hybrid, etc.)
engine: string; // Engine description
drive_type: string; // Drive type configuration
chassis: string; // Chassis specifications
berths: string; // Sleeping capacity
exterior_length?: string; // Vehicle length
mtplm?: string; // Maximum Technically Permissible Laden Mass
steering: string; // Steering configuration
category: string; // Vehicle category
}
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>"
}
Introduction
Comprehensive search APIs for filtering UK recreational vehicle inventory with minimal latency across multiple data sources.
RV Listing Details
Retrieve detailed information about specific UK dealer RV listings with complete vehicle specifications, media content, dealer information, and marketplace data.