Edmunds API alternative: specs, cars for sale, dealers and incentives in one API
What developers searching for an Edmunds API usually need (specs from a VIN, cars for sale, dealers and manufacturer offers), the MarketCheck endpoints that return it, and documented requests and responses.
MarketCheck5 min read
For developers building car research, shopping and dealer websites
Developers who search for an Edmunds API usually want the parts of a car research site: the specs and options of a vehicle, the cars for sale nearby, the dealers that sell them and the manufacturer offers that apply.
About Edmunds: as of Oct 2026, the FAQ on Edmunds' developer portal says Edmunds retired its open API program and disabled keys outside its partner program from Feb 15, 2018. It limits access to select strategic partners, service providers, dealers and automotive advertisers, and it is not accepting new applicants. The API overview that is still online lists the datasets the program covered: vehicle specs, pricing, service, editorial content, photos and dealer information.
In short. NeoVIN returns a car's specs, installed options, colors and MSRP from its VIN, and the taxonomy endpoints list makes, models and trims. Inventory Search returns cars for sale near a ZIP with prices and photo links, and Dealerships Search the dealers around a point. OEM Incentive by Make and ZIP returns the manufacturer cash, finance and lease offers for the ZIP's metro area. MarketCheck has no editorial reviews, consumer review scores, maintenance schedules or cost-of-ownership estimates.
What developers looking for an Edmunds API usually need
| Need | MarketCheck endpoint | Documented sample answer |
|---|---|---|
| Specs, options and colors for a car | NeoVIN, GET /v2/decode/car/neovin/{vin}/specs |
2023 Audi Q5 Premium Plus, combined MSRP 51,190 |
| Make, model and trim lists | Taxonomy Facets, GET /v2/specs/car/terms, and Taxonomy Auto-Complete |
Every make and fuel type in one call |
| Cars for sale near a ZIP, with photos | Inventory Search, GET /v2/search/car/active |
23,090 listings of 2024 F-150s, five to a page |
| Dealers near a place | Dealerships Search, GET /v2/dealerships/car |
2,766 within 50 miles of a point in Los Angeles |
| Manufacturer offers for a ZIP | OEM Incentive by Make and ZIP, GET /v2/search/car/incentive/{make}/{zip} |
180 Ford offers for ZIP 90210 |
| A market price for a used car | MarketCheck Price | See the KBB API alternative guide |
| Recalls by VIN | AutoRecalls, GET /v2/car/autorecalls/{vin} |
A partner API: paid plan and agreement |
| Reviews, review scores, maintenance, cost to own | No MarketCheck endpoint |
Specs, options and colors from a VIN
- Shopper opens a car
- NeoVIN decode
- Specs tab, colors and badges
- Your research or detail page
NeoVIN turns a 17-character VIN into the car's trim and version, powertrain, fuel economy, colors, installed options with their prices, and an MSRP breakdown. Here is the documented sample for a 2023 Audi Q5, trimmed:
curl "https://api.marketcheck.com/v2/decode/car/neovin/WA1BBAFY7P2183119/specs?api_key=YOUR_API_KEY"{
"vin": "WA1BBAFY7P2183119",
"year": 2023,
"make": "Audi",
"model": "Q5",
"trim": "Premium Plus",
"version": "40 Premium Plus",
"transmission_description": "Dual Clutch Sequential Trans (DCT)",
"drivetrain": "4WD",
"powertrain_type": "MHEV",
"engine": "2.0L I4",
"body_type": "SUV",
"city_mpg": 23,
"highway_mpg": 30,
"msrp": 49400,
"delivery_charges": 1195,
"installed_options_msrp": 595,
"combined_msrp": 51190,
"exterior_color": { "code": "H1H1", "name": "Manhattan Gray Metallic", "msrp": "595", "base": "Gray" },
"interior_color": { "code": "BG", "name": "Okapi Brown Leather", "base": "Brown" },
"rating": { "safety": { "front": 5, "side": 5, "overall": 5 }, "rollover": 4 },
"warranty": { "total": { "duration": 48, "distance": 50000 } }
}The prices reconcile: 49,400 base plus 1,195 delivery plus 595 for the one installed option, the paint, is 51,190. The full response also carries features, high_value_features and installed_equipment, each keyed by the option code that brought it, with base equipment under STANDARD, which is what a specs tab and its filters need. The NeoVIN guide covers window-sticker style pricing on the same fields.
Make, model and trim lists
Taxonomy Facets returns every value of one or more fields from MarketCheck's specs database, so the lists include models with no cars in stock today:
curl "https://api.marketcheck.com/v2/specs/car/terms?api_key=YOUR_API_KEY&field=make,fuel_type"{
"make": ["Acura", "Alfa Romeo", "Am General", "Aston Martin", "Audi", "BMW"],
"fuel_type": ["Biodiesel", "Compressed Natural Gas", "Diesel", "E85", "Electric"]
}Taxonomy Auto-Complete, GET /v2/specs/car/auto-complete, suggests values as the user types (field=make&input=toy returns ["Toyota"]). Cache both and normalize case before display; the autocomplete guide has the details.
Cars for sale and the dealers that sell them
Inventory Search is the endpoint behind a "for sale near you" module. The documented sample (year=2024&make=ford&model=f-150&rows=5&facets=trim&stats=price) finds 23,090 listings and returns five, each with its price, mileage, a build block, a dealer block and media.photo_links, the dealer's own photo URLs. Add zip and radius for a local page, and facets=trim gives a trim picker with live counts. The inventory search guide covers filters, sorting and paging.
Dealerships Search lists the stores around a point: the documented sample finds 2,766 within 50 miles of central Los Angeles. Store mc_dealer_id and mc_location_id, and see the dealer directory guide for which ID to keep.
Manufacturer offers for a ZIP
OEM Incentive by Make and ZIP returns the cash, finance and lease offers a manufacturer publishes for the metro area (MSA) that contains the ZIP. The docs name 30 manufacturers, all with US offers, and the dataset is updated daily. The documented sample asks for Ford in ZIP 90210:
curl "https://api.marketcheck.com/v2/search/car/incentive/ford/90210?api_key=YOUR_API_KEY&rows=2"Trimmed to one offer, with the disclaimer shortened:
{
"num_found": 180,
"listings": [
{
"base_sha": "094588e4a95ee3675ced71242ac6216e8f5ca8d3852952e1c07e46e39a5e0b15",
"offer": {
"vehicles": [{ "make": "Ford", "year": 2025, "model": "Ranger", "trim": "XLT" }],
"offer_type": "lease",
"amounts": [{ "monthly": 369, "term": 36, "term_unit": "months" }],
"due_at_signing": 4509,
"valid_from": "07/14/2025",
"valid_through": "09/02/2025",
"titles": ["2025 Ford Ranger XLT"],
"disclaimers": ["With Equipment Group 301A. Not all buyers will qualify for Ford Credit Red Carpet Lease. ..."]
},
"msa_code": "4480",
"zip": "90210",
"source": "ford.com"
}
]
}Show the manufacturer's own title, offer text and disclaimers as they come, with valid_through so the shopper sees when an offer ends. One offer found in many metro areas shares its base_sha, which makes it the right key for de-duplication. The incentives guide covers change alerts and payment quotes.
A model page in two calls
- Shopper picks year, make, model and ZIP
- Inventory Search and OEM offers
- Model page with trims, prices and offers
A research page for one model needs the cars for sale with their prices and trims, plus the current offers. Two calls, run in parallel, cover both:
const BASE = 'https://api.marketcheck.com/v2'
async function get(path: string, params: Record<string, string | number> = {}) {
const url = new URL(BASE + path)
url.searchParams.set('api_key', process.env.MARKETCHECK_API_KEY ?? '')
for (const [key, value] of Object.entries(params)) url.searchParams.set(key, String(value))
const res = await fetch(url)
if (!res.ok) throw new Error(`${path} returned ${res.status}`)
return res.json()
}
export async function modelPage(year: number, make: string, model: string, zip: string) {
const [forSale, offers] = await Promise.all([
get('/search/car/active', { year, make, model, zip, radius: 50, rows: 12, facets: 'trim', stats: 'price' }),
// Offer model names follow the manufacturer's site (one sample lists a "Bronco 4-Door"),
// so map your model names once with facets=model before filtering on model
get(`/search/car/incentive/${encodeURIComponent(make.toLowerCase())}/${zip}`, { model, rows: 10 })
])
return {
count: forSale.num_found,
medianAskingPrice: forSale.stats?.price?.median ?? null,
trims: forSale.facets?.trim ?? [], // [{ item, count }] for a trim picker with live counts
listings: forSale.listings, // each with price, miles, build, dealer and media.photo_links
offers: offers.listings.map((o: any) => ({
title: o.offer.titles?.[0],
terms: o.offer.offers?.[0],
fineprint: o.offer.disclaimers?.[0],
validThrough: o.offer.valid_through
}))
}
}Each listing links to its own detail page, where a NeoVIN decode of its VIN fills the specs tab.
What MarketCheck does not cover
- No editorial content. There are no editorial or consumer reviews, review scores or articles.
- No ownership costs or maintenance schedules. The closest fields are the warranty terms in a NeoVIN decode.
- Specs answer for a VIN. A model known only by name gets its lists from the taxonomy endpoints and its specs from the
buildblocks of matching listings. - Recalls are a partner API. AutoRecalls answers by VIN and needs a paid plan and its agreement, accepted on the 3rd-party API agreements page.
Limits to design around
- Rows. Inventory Search and the incentives endpoint return at most 50 rows a page; use
startto page. - Location. A location search sorts by distance unless you pass
sort_by, and the Free plan capsradiusat 100 miles. - Offers are per metro area. An offer valid in one ZIP of an MSA typically applies across it, so cache by make and MSA rather than by ZIP.
- Photo links. Cached image URLs in responses carry your API key unless you pass
append_api_key=false; serve media through your own server.
Who this is for
Developers building car research and shopping sites or dealer websites who need specs, inventory, dealers and offers from one API.
Start here
- Create a free account and copy your API key. Start on the Free tier for development; plans are on the pricing page.
- Decode a VIN from your own inventory with NeoVIN and compare it with the window sticker.
- Run
modelPagefor one model in your market and check the offers against the manufacturer's site. - Keep the NeoVIN Decoder, Inventory Search and OEM Incentive by Make and ZIP pages open while you build.