Looking for the overview — what this API returns, what it costs, and a call you can run without a key? See the CarGurus API page →
Classifieds & Second-hand

CarGurus API & Scraper

The CarGurus API turns cargurus.com, cargurus.ca and cargurus.co.uk into JSON in four actions.

4 actionsLive JSON1,000 free credits$0.67–$1.50 / 1,000 creditsMCP-ready
Get a free keyOpen in playground

🤖 Using an AI assistant? Copy this link into ChatGPT / Claude / Cursor — it reads every endpoint and parameter instantly and tells you if this API fits your use case.

search reads used-car listings around a ZIP code, Canadian postal code or UK postcode (on 2026-10-14: about 81,000 cars within 50 miles of New York 10001, about 1.47 million nationwide) with the filters CarGurus applies itself: make and model, year, price, mileage, days on market, body style, fuel, transmission, drivetrain, colour, CarGurus deal rating, seller type, certified pre-owned, recent price drops, single owner, no accidents reported, photos only and one dealer's stock, in eleven sort orders. Every row carries the asking price, the price with the dealer's fees, CarGurus's instant market value (IMV) and its deal rating (great, good, fair, high, overpriced, no analysis, uncertain), how far the price sits below or above the IMV, days on market, the last price drop, VIN, mileage, specs, features and the dealer with phone and location. listing returns one car in full: the full price history, each dealer fee, the accident and owner counts from the vehicle-history report, options, fuel economy, the dealer's description, every photo and the dealer's address, rating, review count and opening hours. makes and models return the ids the make and model filters take. One ReefAPI key, the standard { ok, data, meta, error } envelope, no CarGurus account.

Reference

Three prices on one car — what a CarGurus listing actually says

Some dealers advertise a base price, others an all-in price with their fees, and CarGurus's own 'below market' figure follows whichever the page shows. One listing read on 2026-10-14; the right-hand column is what the API returns.

figureon the search resultson the listing pageAPI field
Asking price$17,830$20,000 (with fees)price = 17830 on both actions
Price with dealer fees$20,000$20,000price_plus_fees = 20000
CarGurus market value (IMV)$20,030$20,030imv_price = 20030
Below market$2,200$30below_imv_by = 2200 · below_imv_by_with_fees = 30

price means the same thing in search and listing, so a car can be joined across the two. The figure the listing page headlines is returned as headline_price with headline_price_includes_fees, and CarGurus's own gap is kept as imv_differential. Measured on a page of 22 listings: 4 headlined the price with fees.

Live example

Real request and response JSON

Captured from the indexed primary action, search, on .

Captured request
{
  "method": "POST",
  "url": "https://api.reefapi.com/cargurus/v1/search",
  "headers": {
    "x-api-key": "$REEF_KEY",
    "content-type": "application/json"
  },
  "body": {
    "zip": "10001",
    "distance": 50,
    "make": "m2",
    "model_id": "d334",
    "deal_rating": "great,good",
    "sort": "best_deal"
  }
}
Captured response
{
  "ok": true,
  "meta": {
    "api": "cargurus",
    "endpoint": "search",
    "mode": "live",
    "latency_ms": 2161.1,
    "record_count": 22,
    "bytes": 155629,
    "cache_hit": false,
    "filters_applied": {
      "site": "us",
      "zip": "10001",
      "distance": 50,
      "model_id": "d334",
      "make_id": "m2",
      "deal_rating": [
        "great",
        "good"
      ],
      "sort": "best_deal"
    },
    "page": 1,
    "upstream_requests": 3,
    "total": 432,
    "total_includes_shipped": true,
    "has_more": true,
    "beyond_last_page": false,
    "sponsored_rows": 4,
    "promo_tiles_dropped": 2,
    "location": {
      "zip": "10001",
      "latitude": 40.7508,
      "longitude": -73.9961,
      "name": "New York, NY"
    },
    "charged_credits": 2,
    "version": "1.0.0",
    "request_id": "70194cb8fe3c467f",
    "queue_ms": 1.7,
    "fetched_at": "2026-10-14T18:57:19.676Z"
  },
  "data": {
    "listings": [
      {
        "listing_id": 452545758,
        "site": "us",
        "url": "https://www.cargurus.com/details/452545758",
        "title": "2023 Ford Explorer",
        "year": 2023,
        "make": "Ford",
        "make_id": "m2",
        "model": "Explorer",
        "model_id": "d334",
        "trim": "XLT AWD",
        "entity_id": "t104057",
        "body_type": "SUV / Crossover",
        "is_new": false,
        "is_certified": false,
        "currency": "USD",
        "price": 26995,
        "price_display": "$26,995",
        "price_plus_fees": 27994,
        "fees_included_in_price_plus_fees": true,
        "fee_disclosure": "BASE_PRICE_DISCLOSED",
        "imv_price": 29529,
        "imv_differential": 2534,
        "below_imv_by": 2534,
        "below_imv_by_with_fees": 1535,
        "previous_price": 27895,
        "original_price": 29995,
        "last_price_drop_amount": 900,
        "last_price_drop_at": "2026-10-08T00:54:55Z",
        "deal_rating": "great",
        "deal_rating_code": "GREAT_PRICE",
        "deal_score": 0.85,
        "days_on_market": 103,
        "mileage": 32092,
        "mileage_unit": "miles",
        "mileage_display": "32,092",
        "vin": "1FMSK8DH8PGA91131",
        "stock_number": "N34993",
        "exterior_color": "Silver",
        "exterior_color_group": "silver",
        "interior_color": "Black",
        "fuel_type": "Gasoline",
        "fuel_economy_city": 20,
        "fuel_economy_highway": 27,
        "fuel_economy_combined": 23.15,
        "fuel_economy_unit": "MPG",
        "transmission": "Automatic",
        "drivetrain": "All-Wheel Drive",
        "engine": "2.3L I4",
        "doors": "4 doors",
        "features": [
          "Alloy Wheels",
          "Third Row Seating",
          "Bluetooth"
        ],
        "image": "https://static.cargurus.com/images/forsale/2026/08/07/12/59/2023_ford_explorer-pic-4684102918890510151-1024x768.jpeg",
        "picture_count": 25,
        "distance": 15.9,
        "distance_unit": "mi",
        "how_to_shop": "PICK_UP_ONLY",
        "financing_eligible": false,
        "placement": "priority",
        "is_sponsored": true,
        "seller": {
          "dealer_id": "50867",
          "seller_id": 2309800,
          "name": "Route 46 Nissan",
          "city": "Totowa",
          "region": "NJ",
          "postal_code": "07512",
          "location": "Totowa, NJ",
          "phone": "[redacted-phone]",
          "phone_display": "[redacted-phone]",
          "is_franchise_dealer": true,
          "franchise_make": "Nissan",
          "is_cargurus_partner": true,
          "logo": "https://static.cargurus.com/images/site/2018/01/03/17/35/route_46_nissan-pic-9214951733433491343-200x200.jpeg"
        }
      },
      {
        "listing_id": 456374392,
        "site": "us",
        "url": "https://www.cargurus.com/details/456374392",
        "title": "2021 Ford Explorer",
        "year": 2021,
        "make": "Ford",
        "make_id": "m2",
        "model": "Explorer",
        "model_id": "d334",
        "trim": "Police Interceptor Utility AWD",
        "entity_id": "t93621",
        "body_type": "SUV / Crossover",
        "is_new": false,
        "is_certified": false,
        "currency": "USD",
        "price": 20250,
        "price_display": "$20,250",
        "price_plus_fees": 20849,
        "fees_included_in_price_plus_fees": true,
        "fee_disclosure": "BASE_PRICE_DISCLOSED",
        "imv_price": 25346,
        "imv_differential": 5096,
        "below_imv_by": 5096,
        "below_imv_by_with_fees": 4497,
        "previous_price": null,
        "original_price": null,
        "last_price_drop_amount": null,
        "last_price_drop_at": null,
        "deal_rating": "great",
        "deal_rating_code": "GREAT_PRICE",
        "deal_score": 0.12,
        "days_on_market": 57,
        "mileage": 10607,
        "mileage_unit": "miles",
        "mileage_display": "10,607",
        "vin": "1FM5K8AB9MGC33933",
        "stock_number": "C33933",
        "exterior_color": "Black",
        "exterior_color_group": "black",
        "interior_color": "Black",
        "fuel_type": "Flex Fuel Vehicle",
        "fuel_economy_city": null,
        "fuel_economy_highway": null,
        "fuel_economy_combined": null,
        "fuel_economy_unit": null,
        "transmission": null,
        "drivetrain": "All-Wheel Drive",
        "engine": "3.3L V6 Flex Fuel Vehicle",
        "doors": "4 doors",
        "features": [
          "Steel Wheels",
          "Bluetooth",
          "Backup Camera"
        ],
        "image": "https://static.cargurus.com/images/forsale/2026/08/18/23/48/2021_ford_explorer-pic-1713284535406834743-1024x768.jpeg",
        "picture_count": 38,
        "distance": 7.8,
        "distance_unit": "mi",
        "how_to_shop": "PICK_UP_ONLY",
        "financing_eligible": false,
        "placement": "featured",
        "is_sponsored": true,
        "seller": {
          "dealer_id": "351457",
          "seller_id": 2195216,
          "name": "Magic Auto Sales",
          "city": "Little Ferry",
          "region": "NJ",
          "postal_code": "07643",
          "location": "Little Ferry, NJ",
          "phone": "[redacted-phone]",
          "phone_display": "[redacted-phone]",
          "is_franchise_dealer": null,
          "franchise_make": null,
          "is_cargurus_partner": true,
          "logo": "https://static.cargurus.com/images/site/2025/11/20/11/51/magic_auto_sales-pic-18413596039042716044-200x200.jpeg"
        }
      },
      {
        "listing_id": 453054447,
        "site": "us",
        "url": "https://www.cargurus.com/details/453054447",
        "title": "2024 Ford Explorer",
        "year": 2024,
        "make": "Ford",
        "make_id": "m2",
        "model": "Explorer",
        "model_id": "d334",
        "trim": "ST AWD",
        "entity_id": "t109632",
        "body_type": "SUV / Crossover",
        "is_new": false,
        "is_certified": false,
        "currency": "USD",
        "price": 41099,
        "price_display": "$41,099",
        "price_plus_fees": 41998,
        "fees_included_in_price_plus_fees": true,
        "fee_disclosure": "ALL_IN_DISCLOSED",
        "imv_price": 45172,
        "imv_differential": 4073,
        "below_imv_by": 4073,
        "below_imv_by_with_fees": 3174,
        "previous_price": 43998,
        "original_price": 46998,
        "last_price_drop_amount": 2899,
        "last_price_drop_at": "2026-10-11T00:23:18Z",
        "deal_rating": "great",
        "deal_rating_code": "GREAT_PRICE",
        "deal_score": 0.8,
        "days_on_market": 96,
        "mileage": 11776,
        "mileage_unit": "miles",
        "mileage_display": "11,776",
        "vin": "1FM5K8GC1RGA17663",
        "stock_number": "RGA17663U",
        "exterior_color": "Black",
        "exterior_color_group": "black",
        "interior_color": "Black",
        "fuel_type": "Gasoline",
        "fuel_economy_city": 18,
        "fuel_economy_highway": 24,
        "fuel_economy_combined": 20.7,
        "fuel_economy_unit": "MPG",
        "transmission": "Automatic",
        "drivetrain": "All-Wheel Drive",
        "engine": "3L V6",
        "doors": "4 doors",
        "features": [
          "Leather Seats",
          "Alloy Wheels",
          "Third Row Seating"
        ],
        "image": "https://static.cargurus.com/images/forsale/2026/07/11/21/53/2024_ford_explorer-pic-5387083455676024195-1024x768.jpeg",
        "picture_count": 31,
        "distance": 25.8,
        "distance_unit": "mi",
        "how_to_shop": "PICK_UP_ONLY",
        "financing_eligible": false,
        "placement": "featured",
        "is_sponsored": true,
        "seller": {
          "dealer_id": "288605",
          "seller_id": 2293681,
          "name": "Global Auto Mall",
          "city": "North Plainfield",
          "region": "NJ",
          "postal_code": "07060",
          "location": "North Plainfield, NJ",
          "phone": "[redacted-phone]",
          "phone_display": "[redacted-phone]",
          "is_franchise_dealer": true,
          "franchise_make": "Chevrolet",
          "is_cargurus_partner": true,
          "logo": "https://static.cargurus.com/images/site/2016/06/14/10/04/global_auto_mall-pic-2286165556975473628-1600x1200.png"
        }
      }
    ]
  }
}
Actions

What the CarGurus API does

ActionDescriptionConcrete use caseKey params
searchSearch CarGurus used-car listings around a ZIP / postcode. Every row carries the asking price, CarGurus's deal rating and instant market value (IMV), the gap between them, days on market, the last price drop, VIN, specs, features and the dealer. Filters are applied by the source; every enum is a closed list per site — an unknown value is rejected instead of silently returning everything.Price-intelligence teams call search to search CarGurus used-car listings around a ZIP / postcode.zip, site, distance, nationwide, make, ...
listingOne CarGurus listing in full by its id: asking price, price with dealer fees and each fee, IMV and deal rating, the full price history, days on market and at the dealer, VIN, mileage, specs, options, fuel economy, vehicle-history counts (accidents, owners), the seller's description, every photo and the dealer with address, coordinates, phone, website, rating, review count and opening hours. A removed listing returns NOT_FOUND.Classifieds aggregators call listing to get one CarGurus listing in full by its id.listing_id, site, zip
makesEvery make the chosen CarGurus site lists, with the site's make id that `search` and `models` take.Resale and arbitrage tools call makes to get every make the chosen CarGurus site lists, with the site's make id that `search` and `models`….site
modelsThe models of one make with the source's live listing counts — the model_id `search` takes.Lead-generation teams call models to get the models of one make with the source's live listing counts.make, site, zip, distance
Code samples

Call search from your stack

curl -X POST https://api.reefapi.com/cargurus/v1/search \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"zip":"10001","distance":50,"make":"m2","model_id":"d334","deal_rating":"great,good","sort":"best_deal"}'
MCP one-liner
Ask your MCP-connected assistant: call reefapi.cargurus.search with {"zip":"10001","distance":50,"make":"m2","model_id":"d334","deal_rating":"great,good","sort":"best_deal"}.
Use cases

Who uses this API and why

  • Find underpriced used cars: filter by deal_rating=great and sort by best_deal, then compare price with imv_price and below_imv_by.
  • Track a dealer's inventory and pricing: pass dealer_id to search and watch price drops, days on market and new arrivals.
  • Value a trade-in or a fleet: one make and model, a year window and a mileage band around a ZIP gives asking prices next to CarGurus's market value.
  • Monitor price cuts in a market: price_drops_only=true with a make, model and radius, and listing for the full price history.
  • Compare markets across the US, Canada and the UK with the same fields and the same deal rating on each site.
FAQ

Questions developers ask before integrating

What is the deal rating and the IMV?

They are CarGurus's own analysis of each car. imv_price is CarGurus's instant market value, the price it estimates for that car; deal_rating says how the asking price compares: great, good, fair, high, overpriced, or no_analysis and uncertain when CarGurus does not rate the car. deal_rating_code keeps CarGurus's own code and deal_score its score. Both are on every search row and in listing. All 179 rows of an eight-search sample across the three sites carried an IMV and a deal rating.

Why is the ZIP code required?

CarGurus places every search around a location, and its distances and result counts depend on it: 10001 gives about 81,000 cars within 50 miles, 90210 about 64,000. Without a location the site would choose one for you, so the API asks for zip (a US ZIP, a Canadian postal code such as M5V 3L9, or a UK postcode such as SW1A 1AA). A code CarGurus cannot place is refused instead of returning a search around somewhere else. Use nationwide=true to search the whole country.

Do I get the price history?

Yes. listing returns price_history, every price change with its date, plus days_on_market and days_at_dealer. Every search row also carries the previous price, the original price, the amount and date of the last price drop. 28 of 179 rows in a mixed sample had a recent drop; price_drops_only=true returns only those (about 10,400 of 81,000 around New York).

Which countries and currencies?

site=us reads cargurus.com in US dollars and miles, site=ca reads cargurus.ca in Canadian dollars and kilometres, site=uk reads cargurus.co.uk in pounds and miles. Listing ids and make ids belong to one site, so pass the same site to listing that the search row came from (every row carries it). UK rows also carry ulez_compliant.

How many results can I page through?

About 20 to 23 cars a page. total is CarGurus's own count, but CarGurus stops serving pages before that count runs out: around New York it served 417 pages of an 81,000-car search, and 50 pages of a 1,177-car Ford Explorer search. A page past the end returns no rows with beyond_last_page: true, so a loop can stop there. Narrow the search with filters to reach every car.

Are sponsored listings mixed in?

Yes, CarGurus places priority and featured listings on every page. They are kept, because they are real cars for sale, and marked with placement and is_sponsored; meta.sponsored_rows counts them. They are placed by CarGurus and do not follow the chosen sort order. Promotional tiles without a car are removed and counted in meta.promo_tiles_dropped.

Which fields can be empty?

In a sample of 179 rows from eight searches (SUVs, pickups, electric cars, sedans, cheap cars, convertibles, Canada, UK): price, price with fees, IMV, deal rating, VIN, mileage and dealer name were on every row, days on market on 177, the dealer's phone on 176, features on 176, colour on 175, engine on 169, drivetrain on 168 and combined fuel economy on 147. Distance on a listing is returned only when you pass zip.

Is a filter value ever ignored?

No. CarGurus itself quietly ignores filter values it does not know and returns the whole market, so every value is checked first and an unknown one is refused with the list of valid ones. Each filter was checked against an unfiltered search in the same run (around New York: electric 1,626, manual 1,387, great deals 8,545, single owner 47,547). The deal-rating filter uses CarGurus's index, and 2 of about 350 filtered rows carried the neighbouring rating at the moment of reading; the row shows CarGurus's current rating.

What is the CarGurus API?

CarGurus API is a ReefAPI endpoint group for cargurus used-car listings from the us, canada and the uk as json: the asking price, cargurus's own deal rating and instant market value, days on market, price drops, vin and the dealer behind every car. It returns live JSON through POST requests under /cargurus/v1.

Is the CarGurus API free to try?

Yes. ReefAPI starts with 1,000 free credits, no card required. CarGurus calls use the same shared credit balance as every other ReefAPI engine.

Do I need a CarGurus login or account?

No login to CarGurus is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.

How fresh is the CarGurus data?

The page example is captured from a live search call, and production requests fetch live data through ReefAPI rather than a static sample.

How many credits does the CarGurus API use?

CarGurus actions currently cost 2 credits per successful call. Failed or blocked calls are free. All APIs draw from one credit pool.

Can I call CarGurus from an AI assistant or MCP client?

Yes. Connect ReefAPI once through MCP and your assistant can call cargurus actions with the same key, credit pool and JSON envelope used by normal REST requests.

docs / cargurus

CarGurus

CarGurus used-car listings from the US, Canada and the UK as JSON: the asking price, CarGurus's own deal rating and instant market value, days on market, price drops, VIN and the dealer behind every car.

base /cargurus/v14 endpoints
post/cargurus/v1/listing2 credits

One CarGurus listing in full by its id: asking price, price with dealer fees and each fee, IMV and deal rating, the full price history, days on market and at the dealer, VIN, mileage, specs, options, fuel economy, vehicle-history counts (accidents, owners), the seller's description, every photo and the dealer with address, coordinates, phone, website, rating, review count and opening hours. A removed listing returns NOT_FOUND.

ParameterAllowed / rangeDescription
listing_idrequired—`listing_id` of a search row, as is (or the number in a cargurus …/details/<id> URL). Use the same `site` the row came from.
site = usoptionalus · ca · ukWhich CarGurus site. Listing ids and make ids belong to one site.
zipoptional—Optional: the zip/postcode to measure the car's distance from. Without it no distance is returned.
Try in playground →
post/cargurus/v1/makes2 credits

Every make the chosen CarGurus site lists, with the site's make id that `search` and `models` take.

ParameterAllowed / rangeDescription
site = usoptionalus · ca · ukWhich CarGurus site. Listing ids and make ids belong to one site.
Try in playground →
post/cargurus/v1/models2 credits

The models of one make with the source's live listing counts — the model_id `search` takes.

ParameterAllowed / rangeDescription
makerequired—The site's make id (m2) or the make's name (Ford).
site = usoptionalus · ca · ukWhich CarGurus site. Listing ids and make ids belong to one site.
zipoptional—Optional: count models around this zip/postcode (with `distance`). Without it the counts are nationwide.
distance = 50optional1–50000Search radius around `zip`, in the site's unit (miles on us/uk, km on ca). The site's own steps are 10/25/50/75/100/150/200/500; any whole number is accepted.
Try in playground →
Built for volume
5M+ requests a day

Measured at 60 requests a second across the fleet, with no central bottleneck. Volume pricing is on request, and per-key limits are raised for high-volume accounts.

Missing a source?
We build it

Tell us a site we do not cover yet and it becomes an engine. A customer asked for bestprice.gr on a Sunday and it was in the catalog the next day.

Support
2 minute median reply

Median time from a question in the live chat to the first answer, measured across every answered conversation. Setup help included, no support tier to buy.

One key, one balance
Every API included

No per-site plans and no separate subscriptions. One key and one credit pool across the whole catalog, so adding a source costs nothing up front.

Planning something large? Tell us the volume and the sources and we will come back with what it costs and what we would have to build.