openapi: 3.0.3 info: title: CarGurus Developer APIs Car Selector API description: 'Documented HTTP APIs published by CarGurus under the /Cars/api/ path. Four surfaces are described here: the open (no-auth) Car Selector API for building new/used listing search widgets, and three partner/dealer-gated APIs - Instant Market Value (IMV), Dealer Reviews, and Dealer Stats. The gated APIs authenticate with an appId and authToken issued by CarGurus and are passed as query parameters alongside a JSON body. Endpoint paths, methods, and the Car Selector, IMV, and Dealer Reviews schemas are taken directly from CarGurus developer documentation; the Dealer Stats response is modeled from CarGurus documentation and published examples (endpointsModeled). CarGurus does not publish a public inventory-listings pull API - dealer inventory is ingested via inventory feeds (feed providers / IMT) - and leads are delivered to dealer CRMs rather than exposed here.' version: '1.0' contact: name: CarGurus Developers url: https://www.cargurus.com/Cars/developers/ servers: - url: https://www.cargurus.com/Cars/api/1.0 description: CarGurus API v1.0 (Car Selector, IMV, Dealer Reviews) - url: https://www.cargurus.com/Cars/api/2.0 description: CarGurus API v2.0 (Dealer Stats) tags: - name: Car Selector description: Open API for building new/used listing search widgets. paths: /carselector/listMakes.action: get: tags: - Car Selector summary: List makes description: List the vehicle makes available for a NEW or USED search, in alphabetical order, along with the available search distances. No authentication required. operationId: listMakes parameters: - name: searchType in: query required: true description: Type of search - NEW or USED. schema: type: string enum: - NEW - USED responses: '200': description: Makes and distances. content: application/json: schema: $ref: '#/components/schemas/ListMakesResponse' /carselector/listModels.action: get: tags: - Car Selector summary: List models description: List the models for a given make, in alphabetical order. operationId: listModels parameters: - name: searchType in: query required: true schema: type: string enum: - NEW - USED - name: makeId in: query required: true description: Make id as returned by listMakes. schema: type: string responses: '200': description: Models for the make. content: application/json: schema: $ref: '#/components/schemas/ListModelsResponse' /carselector/listingSearch.action: get: tags: - Car Selector summary: Listing search redirect description: Construct the URL a user is redirected to when they submit the search form. Returns a CarGurus listing search results page. operationId: listingSearch parameters: - name: searchType in: query required: true schema: type: string enum: - NEW - USED - name: entityId in: query required: true description: Make or Model entity id selected by the user. schema: type: string - name: postalCode in: query required: true schema: type: string - name: distance in: query required: true schema: type: integer - name: affiliatePartner in: query required: false description: Optional affiliate partner identifier. schema: type: string responses: '200': description: CarGurus listing search results page. components: schemas: ListModelsResponse: type: object properties: success: type: boolean errors: type: array items: type: string searchType: type: string makeId: type: string models: type: array items: $ref: '#/components/schemas/Entity' ListMakesResponse: type: object properties: success: type: boolean errors: type: array items: type: string searchType: type: string makes: type: array items: $ref: '#/components/schemas/Entity' distances: type: array items: $ref: '#/components/schemas/Distance' Entity: type: object properties: id: type: string name: type: string isPopular: type: boolean Distance: type: object properties: value: type: integer display: type: string isDefault: type: boolean