# Private Party Search

> Search nationwide private party car listings with comprehensive filtering, sorting, analytics, and geographic targeting capabilities.

The Private Party Search API provides access to private party (For Sale By Owner) automotive listings across the United States and Canadian markets. MarketCheck aggregates current FSBO inventory data from numerous marketplace platforms, delivering access to over 80,000 active listings nationwide.



## Overview

This endpoint shares the same interface and functionality as the [Inventory Search API](/docs/api/cars/inventory/inventory-search), allowing you to search, filter, and analyze private party vehicle listings with extensive capabilities.

- Data updates are published daily, at the same time as the Inventory Search API, by 11:00 AM UTC
- Follows same interface conventions, so units and conventions are also consistent with the Inventory Search API

**Key Differences from Inventory Search API:**

- **Private Party Listings Only**: This API exclusively returns listings from private sellers, not dealers. So `seller_type` is always `fsbo`
- **No Seller Information**: Private party listings do not include seller details like name, phone, or email, only the source marketplace and listing URL
- **Higher Pricing Tier**: This endpoint is billed at a premium due to unique sourcing and processing overhead



## Base Path

```http
GET https://api.marketcheck.com/v2/search/car/fsbo/active
```

The following example demonstrates a basic search request with common parameters:

```bash
curl --request GET \
  --url https://api.marketcheck.com/v2/search/car/fsbo/active
```

Explore the full range of parameters available for filtering, sorting, and configuring search results in the [Request](#request) section below.



## Request

The Private Party Search API provides extensive filtering and search capabilities for private party automotive listings. You can search by vehicle specifications, geographic location, pricing ranges, and numerous other criteria to find the exact FSBO vehicles you need.

All filtering, sorting, analytics, and pagination capabilities match those in the [Inventory Search API](/docs/api/cars/inventory/inventory-search#request), providing a consistent interface across both dealer and private party listings.



### Parameters

Available parameters for filtering, sorting, and configuring search results:

| Parameter   | Type        | Required    | Description |
|-------------|-------------|-------------|-------------|
| `alternate_vin` | string | No | Filters listings by their alternate VIN. Contains the VIN value shown on the listing page under the VIN field when it is not a valid 17-character VIN or does not pass VIN validation rules. This field is commonly used for classic and vintage vehicles that have non-standard VIN formats. Use together with `include_non_vin_listings=true`. |
| `api_key` | string | Yes | Your MarketCheck API authentication key. Required for every request, unless OAuth is used. |
| `append_api_key` | boolean | No | 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`. |
| `base_ext_color` | string | No | The base exterior color to filter results by (e.g. White, Black, Blue, Silver, Red). Accepts multiple colors as a comma-separated list. |
| `base_int_color` | string | No | The base interior color to filter results by (e.g. Black, Brown, Beige, Red). Accepts multiple colors as a comma-separated list. |
| `body_subtype` | string | No | Filters listings by body subtype (e.g., Crew, Extended, Regular, Extended Crew). Accepts multiple values separated by commas. |
| `body_type` | string | No | Filters listings by body type (e.g., SUV, Pickup, Sedan, Hatchback, Convertible). Accepts multiple values separated by commas. |
| `car_type` | string | No | Filters listings by inventory type. Allowed values - `new`, `used`, `certified`. |
| `carfax_1_owner` | boolean | No | If `true`, returns only vehicles with a single previous owner; if `false` or omitted, no ownership filter is applied. Default — false. |
| `carfax_clean_title` | boolean | No | If `true`, returns only vehicles with a clean title history; if `false` or omitted, no title filter is applied. Default — false. |
| `city` | string | No | Filters listings by city name (e.g. `Los Angeles`, `San Francisco`, `Houston`). |
| `city_mpg_range` | string | No | Filters listings by city fuel-economy mileage. Specify as `min-max` MPG (e.g., `20-35`). |
| `country` | string | No | Filters listings by country code. Allowed values - `us`, `ca`, `all`. Default — `us`. |
| `cylinders` | string | No | Filters listings by engine cylinder count (e.g., `4`, `6`, `8`). Accepts multiple values as a comma-separated list. |
| `dealer_id` | string | No | Filters listings by MarketCheck dealer ID. |
| `dedup` | boolean | No | If `true`, returns only `is_searchable` listings irrespective of `dealer_id`, `mc_website_id`, or `source`. Default — false. See `nodedup` for the opposite behavior. |
| `dom_180_range` | string | No | Filters listings by Days on Market observed over the last 180 days. Specify as `min-max` days (e.g., `10-50`). |
| `dom_active_range` | string | No | Filters listings by active Days on Market (DOM). Specify as `min-max` days. |
| `dom_range` | string | No | Filters listings by total Days on Market (DOM). Specify as `min-max` days. |
| `doors` | string | No | Filters listings by number of doors (e.g., `2`, `4`). Accepts multiple values as comma-separated list. |
| `dos_active_range` | string | No | Filters listings by active Days on Site (DOS). Specify as `min-max` days. |
| `drivetrain` | string | No | Filters listings by drivetrain (`FWD`, `RWD`, `4WD`). Accepts multiple values separated by commas. |
| `engine` | string | No | Filters listings by engine designation (e.g., `2.0L I4`, `3.5L V6`, `2.5L H4`). Accepts multiple values as comma-separated list. |
| `engine_aspiration` | string | No | Filters listings by engine aspiration (`Turbocharged`, `Naturally Aspirated`, etc.). Accepts multiple values separated by commas. |
| `engine_block` | string | No | Filters listings by engine block layout (`V`, `I`, `H`). Accepts multiple values separated by commas. |
| `engine_size` | string | No | Filters listings by engine displacement size (e.g., `2.0`, `2.5`, `3.5`). Accepts multiple values separated by commas. |
| `engine_size_range` | string | No | Filters listings by engine displacement size. Specify as `min-max` liters (e.g., `1.5-3.0`). |
| `exclude_certified` | boolean | No | If `true`, excludes certified-pre-owned vehicles from results. Default — false. See `car_type` parameter for filtering by inventory type for certified vehicles. |
| `exclude_dealer_ids` | string | No | Excludes results from the specified dealer IDs. Accepts multiple values as a comma-separated list. |
| `exclude_high_value_features` | string | No | Excludes listings that contain any of the specified High-Value Features (HVFs). Accepts comma-separated HVFs. |
| `exclude_make` | string | No | Excludes the specified makes. Accepts multiple values as a comma-separated list. |
| `exclude_mc_website_ids` | string | No | Excludes results from the specified MarketCheck website IDs. Accepts multiple values as comma-separated list. |
| `exclude_options_packages` | string | No | Excludes listings containing the specified Options Packages (OPs). Accepts multiple values as comma-separated list. |
| `exclude_sources` | string | No | Excludes listings from the specified sources (e.g., `autonation.com`, `carmax.com`). Accepts multiple values as comma-separated list. |
| `exterior_color` | string | No | Filters listings by exterior color (e.g. `White`, `Summit White`, `Gun Metallic`). Accepts multiple values as comma-separated list. |
| `facet_sort` | string | No | Sorts facet buckets. Allowed values — `count` (descending count, default) or `index` (alphabetical). |
| `facets` | string | No | Field name to return bucket facets for. Accepts multiple fields as a comma-separated list. |
| `fees_range` | string | No | Filters listings by the total fees identified on the listing page. Specify as `min-max` in USD (e.g., `0-1000`). |
| `finance_down_payment` | string | No | Filters listings by finance down-payment amount in USD. Specify a single value or a `min-max` range. |
| `finance_down_payment_per` | string | No | Filters listings by finance down-payment percentage. Specify a single value or `min-max`. |
| `finance_emp` | string | No | Filters listings by finance Estimated Monthly Payment (EMP) in USD. Specify a single value or `min-max`. |
| `finance_loan_apr` | string | No | Filters listings by finance loan APR. Specify a single value or `min-max`. |
| `finance_loan_term` | string | No | Filters listings by finance loan term in months. Specify a single value or `min-max` months. |
| `first_seen_at_mc_days` | string | No | 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`. |
| `first_seen_at_mc_range` | string | No | 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`. |
| `first_seen_at_source_days` | string | No | 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`. |
| `first_seen_at_source_range` | string | No | Filters listings by date first seen on the source site. Specify as `YYYYMMDD-YYYYMMDD`. Alternative of `first_seen_at_source_days`. |
| `first_seen_days` | string | No | 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`. |
| `first_seen_range` | string | No | Filters listings by the first seen date. Specify as `YYYYMMDD-YYYYMMDD` (e.g., `20220523-20220631`). Alternative of `first_seen_days`. |
| `fuel_type` | string | No | Filters listings by fuel type (e.g., `Unleaded`, `Diesel`, `Electric`, `Premium Unleaded`, `Electric / Unleaded`). Accepts multiple values separated by commas. |
| `high_value_features` | string | No | Filters listings that include all specified High-Value Features (HVFs). Provide HVFs as a comma-separated list. |
| `highway_mpg_range` | string | No | Filters listings by highway fuel-economy mileage. Specify as `min-max` MPG (e.g., `25-40`). |
| `in_transit` | boolean | No | If `true`, returns listings marked as in transit; if `false` or omitted, no in-transit filter is applied. |
| `include_finance` | boolean | No | If `true`, only listings with finance offers are returned. Default — false. |
| `include_lease` | boolean | No | If `true`, only listings with lease offers are returned. Default — false. |
| `include_non_vin_listings` | boolean | No | If `true`, includes listings without a VIN; if `false`, such listings are excluded. Default — false. |
| `include_relevant_links` | boolean | No | If `true`, includes relevant links to other MarketCheck API endpoints in the response. Default — false. |
| `interior_color` | string | No | Filters listings by interior color. Accepts multiple values as comma-separated list. |
| `inventory_count_range` | string | No | Filters dealers by total listing count. Specify as `min-max` listings (e.g., `10-100`). |
| `last_seen_days` | string | No | Filters listings by the number of days since last seen. Specify as `min-max` days. Alternative of `last_seen_at_range`. |
| `last_seen_range` | string | No | Filters listings by last seen date. Specify as `YYYYMMDD-YYYYMMDD` (e.g., `20220523-20220631`). Alternative of `last_seen_at_days`. |
| `latitude` | float | No | Latitude component of the search location (decimal degrees). Used for geospatial queries along with `longitude` and `radius` parameters. |
| `lease_down_payment` | string | No | Filters listings by lease down-payment amount in USD. Specify a single value or `min-max`. |
| `lease_emp` | string | No | Filters listings by lease Estimated Monthly Payment (EMP) in USD. Specify a single value or `min-max`. |
| `lease_term` | string | No | Filters listings by lease term length in months. Specify a single value or `min-max`. |
| `longitude` | float | No | Longitude component of the search location (decimal degrees). Used for geospatial queries along with `latitude` and `radius` parameters. |
| `made_in` | string | No | Filters listings by the vehicle's country of manufacture. Allowed values - `usa`, `ca`. |
| `make` | string | No | Filters listings by vehicle make (e.g., `Toyota`, `Ford`, `Mercedes-Benz`). Accepts multiple values as comma-separated list. |
| `match` | string | No | Comma-separated list of field names for exact matching in combination with `vins`. Allowed values — year, make, model, trim, version, build_code, options_packages. Example: `year,make,model` or `year,make,model,trim,version`. |
| `miles_range` | string | No | Filters listings by odometer reading. Specify as `min-max` miles (e.g., `1000-50000`). |
| `min_photo_links` | integer | No | Filters listings with at least the specified number of photo links (e.g. `3`, `8`). |
| `min_photo_links_cached` | integer | No | Filters listings with at least the specified number of cached photo links (e.g. `3`, `8`). |
| `mm` | string | No | Make-Model composite string from the auto-complete API. Pass the value exactly as returned (e.g., `toyota|camry`). |
| `model` | string | No | Filters listings by specific vehicle model (e.g., `Camry`). Accepts multiple values separated by commas. |
| `msa_code` | string | No | Filters listings by Metropolitan Statistical Area (MSA) code. |
| `msrp_range` | string | No | Filters listings by Manufacturer's Suggested Retail Price (MSRP). Specify as `min-max` USD (e.g., `20000-45000`). |
| `nodedup` | boolean | No | If `true`, returns all duplicate listings for a VIN; if `false` (default), duplicate listings are removed. This is the opposite of `dedup`. |
| `options_packages` | string | No | Filters listings by Options Packages (OPs). Provide a comma-separated list; results include listings containing all specified OPs. |
| `owned` | boolean | No | When used with `dealer_id`, `mc_website_id`, or `source`, `true` returns listings actually owned by that dealer. Default — false. |
| `photo_links` | boolean | No | If `true`, returns only listings that contain at least one photo link. Default — false. |
| `photo_links_cached` | boolean | No | If `true`, returns only listings that contain cached photo links. Default — false. |
| `plot` | boolean | No | If `true`, returns up to 1000 listings for plotting instead of full listing details. |
| `powertrain_type` | string | No | Filters listings by powertrain type (e.g., `Combustion`, `BEV`, `HEV`, `MHEV`, `PHEV`). Accepts multiple values separated by commas. |
| `price_change` | string | No | Filters listings by positive or negative price-change flag (e.g., `positive`, `negative`). Accepts multiple comma-separated values. |
| `price_change_range` | string | No | 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. |
| `price_includes_fees` | string | No | If `true`, returns listings where the advertised price includes the identified fees; if `false`, returns listings where the advertised price excludes the fees; if `na`, returns listings where fee inclusion could not be determined or no fee information is available on the page. |
| `price_range` | string | No | Filters listings by advertised price in USD. Specify as `min-max` (e.g., `1000-50000`). |
| `radius` | integer | No | Search radius around the specified location in miles. Used with `zip` or `latitude` and `longitude` for geospatial queries. |
| `range_facets` | string | No | Comma-separated list of numeric field names for which to return range facets in the response. |
| `rows` | integer | No | Number of results to return per request. Default — 10. Maximum — 50. |
| `seating_capacity` | string | No | Filters listings by seating capacity (e.g., `2`, `5`, `7`). Accepts multiple values separated by commas. |
| `sort_by` | string | No | Field to sort results by. If omitted, defaults to distance when a location filter is used. |
| `sort_order` | string | No | Specifies result sort order. Allowed values — `asc` or `desc`. Default — `asc`. |
| `source` | string | No | Filters listings by website domain (e.g., `autotrader.com`, `cars.com`). |
| `start` | integer | No | Pagination offset (0-based). Default — 0. Maximum page is limited to 10,000/`rows`. |
| `state` | string | No | Filters listings by US or Canadian state/province code (e.g., `CA`, `NY`, `ON`). Accepts multiple codes separated by commas. |
| `stats` | string | No | Comma-separated list of numeric fields for which to return aggregate statistics (mean, max, min, count). |
| `stock_no` | string | No | Filters listings by dealer stock number. |
| `taxonomy_vins` | string | No | Comma-separated list of 10-character “squish” VINs (first 8 + 10th & 11th chars). Filters listings by build. |
| `transmission` | string | No | Filters listings by transmission type (`Automatic`, `Manual`, etc.). Accepts multiple values separated by commas. |
| `trim` | string | No | Filters listings by vehicle trim (e.g., `EX`, `Limited`). Accepts multiple values separated by commas. |
| `vdp_url` | string | No | Filters listings by Vehicle Detail Page (VDP) URL match. |
| `vehicle_type` | string | No | Filters listings by vehicle type (`Truck`, `Car`). Accepts multiple values separated by commas. |
| `version` | string | No | Filters listings by vehicle version name. |
| `vin` | string | No | Filters listings by full 17-character Vehicle Identification Number (VIN). |
| `vins` | string | No | 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`. |
| `has_price` | boolean | No | Boolean param to filter listings that have a price (true) or no price (false). |
| `has_miles` | boolean | No | Boolean param to filter listings that have a miles (true) or no miles (false). |
| `year` | string | No | Filters listings by model year (e.g., `2020`). Accepts multiple years separated by commas. |
| `year_range` | string | No | Filters listings by model year range. Specify as `min-max` (e.g., `2015-2025`). |
| `ymm` | string | No | Year-Make-Model composite string from auto-completion (e.g., `2019|Toyota|Camry`). |
| `ymmt` | string | No | 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. |
| `zip` | string | No | Filters listings within the specified 5-digit ZIP code. |




### Defaults

- **country**: Defaults to `us` for United States market

  - When searching Canadian data, explicitly pass `country=ca` in each call
  - To search both US and Canadian data, use `country=all`
- **dedup**: Defaults to `true` - only unique listings per VIN are returned, removing duplicates from the dataset

  - Use `nodedup=true` to include all listings, even duplicates



### Pagination

Private Party 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](/docs/api/cars/inventory/inventory-search#pagination) for complete details and examples.



### Sorting

The Private Party 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 by
- `sort_order` - Sort direction (`asc` or `desc`)

Refer to the [Inventory Search API sorting documentation](/docs/api/cars/inventory/inventory-search#sorting) for complete field reference and examples.



## Core Features & Functionality

Private Party Search supports all major features from the Inventory Search API with identical functionality:

- [Facets](/docs/api/cars/inventory/inventory-search#field-facets) - Build dynamic filters and analyze market distribution
- [Range Facets](/docs/api/cars/inventory/inventory-search#range-facets) - Statistical distribution for numeric fields
- [Stats](/docs/api/cars/inventory/inventory-search#stats) - Comprehensive market analytics
- [Spatial Search](/docs/api/cars/inventory/inventory-search#spatial-search) - Location-based discovery



## Response Schema

The response schema for Private Party Search is identical to the Inventory Search API, providing a consistent structure for results. Refer to the [Inventory Search API response schema](/docs/api/cars/inventory/inventory-search#response-schema) for complete field definitions and examples.



## Use Cases & Examples



### Find Single-Owner Vehicles

To find single-owner vehicles, you can use the `carfax_1_owner` parameter set to `true`. This will filter results to only include cars that have had one previous owner according to Carfax data.

**Example:**

```bash
curl --request GET \
  --url https://api.marketcheck.com/v2/search/car/fsbo/active
```



### Quality Photos Only

- Use the `min_photo_links` parameter to ensure listings have a minimum number of photos.
- Or use `min_photo_links_cached` to filter for listings with cached photos.
- Set `min_photo_links` to `5` to filter for listings with at least 5 photos.

**Example:**

Here we're filtering for listings with at least 5 photos:

```bash
curl --request GET \
  --url https://api.marketcheck.com/v2/search/car/fsbo/active
```



### Similar Cars In Private Party Market

If you have a specific car with a VIN and want to find similar vehicles in the private party market, you can use the `vins` and `match` parameters.

The interface and implementation are identical to the Inventory Search API, refer to the [Inventory Search API examples](/docs/api/cars/inventory/inventory-search#similar-cars) for more details.

**Example:**

Here we're searching for similar cars to a specific VIN matching on year, make, model, and trim:

```bash
curl --request GET \
  --url https://api.marketcheck.com/v2/search/car/fsbo/active
```



### Compare Price Statistics with Dealer Inventory

To compare price statistics of private party listings with dealer inventory, you can use the `stats` parameter to retrieve aggregated data.

This allows you to analyze how private party prices stack up against similar dealer listings.

**Example:**

Here we're retrieving price statistics for private party listings similar to a specific VIN:

```bash
curl --request GET \
  --url https://api.marketcheck.com/v2/search/car/fsbo/active
```



### Filter Newer Entrants

To filter for newer listings that have been added to the marketplace recently, you can use the `dos_active_range` parameter. This allows you to specify a range of days since the listing was first seen.

**Example:**

Here we're filtering for listings that have been active in the last 10 days:

```bash
curl --request GET \
  --url https://api.marketcheck.com/v2/search/car/fsbo/active
```



## See Also

- [Inventory Search](/docs/api/cars/inventory/inventory-search)
- [Auction Search](/docs/api/cars/inventory/auction-search)
- [VIN History](/docs/api/cars/vehicle-history/history-by-vin)
- [VIN Decode](/docs/api/cars/vehicle-specs/neovin)
