# CarGurus API

> CarGurus returns car listings, prices, and market trends as a workflow and API.

CarGurus searches new and used car listings near a US ZIP code using a make and model, with optional year, price, mileage, and distance filters. Get market value returns used-price averages, typical price ranges, and 12-month price history for a specified year, make, and model.

- Page: https://fous.com/workflows/cargurus
- Handle: `@cargurus`
- Category: [Commerce](https://fous.com/workflows/category/commerce)
- Source website: https://cargurus.com
- Last verified: Sep 29, 2026
- Fous is not affiliated with CarGurus.

## Methods

### Get market value

Operation `get_market_value`, version 1. 1 credit per call.

Get the average used price, CarGurus price range and 12-month price history for a model year. Covers all trims; mileage- and ZIP-adjusted estimates and reliable listing counts are not shown on these pages.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `car` | string | yes | `"2022 Toyota Camry"` | Year, make and model, for example 2020 Honda Civic. |

**Input schema**

```json
{
  "type": "object",
  "required": [
    "car"
  ],
  "properties": {
    "car": {
      "type": "string",
      "description": "Year, make and model, for example 2020 Honda Civic.",
      "examples": [
        "2022 Toyota Camry",
        "2020 Honda Civic"
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "car": "2022 Toyota Camry"
    },
    {
      "car": "2020 Honda Civic"
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `car_name` | string | `"2022 Toyota Camry"` | Year, make and model. |
| `currency` | string | `"USD"` | Price currency (USD). |
| `page_link` | string | `"https://www.cargurus.com/research/price-trends/Toyota-Camry-d292"` | CarGurus price trends page link. |
| `number_of_listings` | integer or null |  | CarGurus listing count for the year and model; null when not published. |
| `monthly_average_prices` | array |  |  |
| `monthly_average_prices[].month` | string | `"2025-10"` | Month in YYYY-MM. |
| `monthly_average_prices[].price_usd` | number | `23643.53` | Average of sampled price points in the month, in USD. |
| `average_market_price_usd` | number | `23267` | Current average used asking price in USD. |
| `price_change_12_months_usd` | number or null | `-491.81` | Estimated USD change implied by the CarGurus year-over-year percentage; null if unavailable. |
| `typical_price_range_low_usd` | number or null | `22982` | Lower listed price range on the CarGurus year overview, in USD; null if not shown. |
| `typical_price_range_high_usd` | number or null | `23596` | Upper listed price range on the CarGurus year overview, in USD; null if not shown. |
| `price_change_12_months_percent` | number or null | `-2.07` | CarGurus year-over-year average price percentage. |

**Example input**

```json
{
  "car": "2022 Toyota Camry"
}
```

**Example output**

```json
{
  "car_name": "2022 Toyota Camry",
  "currency": "USD",
  "page_link": "https://www.cargurus.com/research/price-trends/Toyota-Camry-d292",
  "number_of_listings": null,
  "monthly_average_prices": [
    {
      "month": "2025-10",
      "price_usd": 23643.53
    },
    {
      "month": "2025-11",
      "price_usd": 23340.55
    },
    {
      "month": "2025-12",
      "price_usd": 22834.24
    }
  ],
  "average_market_price_usd": 23267,
  "price_change_12_months_usd": -491.81,
  "typical_price_range_low_usd": 22982,
  "typical_price_range_high_usd": 23596,
  "price_change_12_months_percent": -2.07
}
```

### Search cars

Operation `search_cars`, version 1. 1 credit per call.

Search new and used cars for sale near a US ZIP code, with prices, dealer details and CarGurus deal ratings. Results show used cars first, then new cars, each in CarGurus order. Deal ratings and market comparisons may be unavailable for new cars. Market difference is positive below market and negative above market.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `car` | string | yes | `"Toyota RAV4"` | Make and model to search, for example Toyota RAV4. |
| `max_year` | integer | no | `2024` | Latest model year, for example 2024. |
| `min_year` | integer | no | `2021` | Earliest model year, for example 2021. |
| `zip_code` | string | yes | `"02108"` | Five-digit US ZIP code, for example 02108. |
| `max_price` | number | no | `30000` | Highest listing price in US dollars, for example 30000. |
| `max_mileage` | integer | no | `60000` | Maximum vehicle mileage in miles, for example 60000. |
| `max_results` | integer | no | `8` | Maximum number of listings to return, for example 25. |
| `radius_miles` | integer | no | `20` | Maximum distance from the ZIP code in miles, for example 50. |

**Input schema**

```json
{
  "type": "object",
  "required": [
    "car",
    "zip_code"
  ],
  "properties": {
    "car": {
      "type": "string",
      "description": "Make and model to search, for example Toyota RAV4.",
      "examples": [
        "Toyota RAV4",
        "Honda Civic"
      ]
    },
    "max_year": {
      "type": "integer",
      "minimum": 1900,
      "description": "Latest model year, for example 2024.",
      "examples": [
        2024,
        1990
      ]
    },
    "min_year": {
      "type": "integer",
      "minimum": 1900,
      "description": "Earliest model year, for example 2021.",
      "examples": [
        2021,
        1990
      ]
    },
    "zip_code": {
      "type": "string",
      "pattern": "^[0-9]{5}$",
      "description": "Five-digit US ZIP code, for example 02108.",
      "examples": [
        "02108",
        "10001"
      ]
    },
    "max_price": {
      "type": "number",
      "minimum": 0,
      "description": "Highest listing price in US dollars, for example 30000.",
      "examples": [
        30000
      ]
    },
    "max_mileage": {
      "type": "integer",
      "minimum": 0,
      "description": "Maximum vehicle mileage in miles, for example 60000.",
      "examples": [
        60000
      ]
    },
    "max_results": {
      "type": "integer",
      "default": 25,
      "maximum": 100,
      "minimum": 1,
      "description": "Maximum number of listings to return, for example 25.",
      "x-fous-developer": true,
      "examples": [
        8,
        6
      ]
    },
    "radius_miles": {
      "type": "integer",
      "default": 50,
      "minimum": 1,
      "description": "Maximum distance from the ZIP code in miles, for example 50.",
      "examples": [
        20
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "car": "Toyota RAV4",
      "zip_code": "02108"
    },
    {
      "car": "Honda Civic",
      "max_year": 2024,
      "min_year": 2021,
      "zip_code": "10001",
      "max_price": 30000,
      "max_mileage": 60000,
      "max_results": 8,
      "radius_miles": 20
    },
    {
      "car": "Toyota RAV4",
      "max_year": 1990,
      "min_year": 1990,
      "zip_code": "02108",
      "max_results": 6
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `listings` | array |  | New and used CarGurus car listings, used first and new second. |
| `listings[].vin` | string or null |  | Vehicle identification number. |
| `listings[].make` | string or null |  | Vehicle make. |
| `listings[].trim` | string or null |  | Vehicle trim. |
| `listings[].year` | integer or null |  | Model year. |
| `listings[].model` | string or null |  | Vehicle model. |
| `listings[].condition` | string or null |  | New or Used. |
| `listings[].price_usd` | number or null |  | Advertised listing price in US dollars. |
| `listings[].photo_link` | string or null |  | Link to a vehicle photo. |
| `listings[].deal_rating` | string or null |  | CarGurus deal rating, when available. |
| `listings[].dealer_name` | string or null |  | Name of the seller. |
| `listings[].listing_link` | string or null |  | Link to the CarGurus listing. |
| `listings[].mileage_miles` | number or null |  | Odometer mileage in miles. |
| `listings[].days_on_market` | integer or null |  | Days the listing has been on the market. |
| `listings[].distance_miles` | number or null |  | Dealer distance from ZIP code in miles. |
| `listings[].amount_below_or_above_market_usd` | number or null |  | US dollars below market if positive or above market if negative. |

**Example input**

```json
{
  "car": "Toyota RAV4",
  "max_year": 1990,
  "min_year": 1990,
  "zip_code": "02108",
  "max_results": 6
}
```

**Example output**

```json
{
  "listings": []
}
```

## Quick start

Call the API with a Fous API key (`FOUS_API_KEY`). To create one, turn on Developer mode in Fous Studio, then open Keys & connections → API keys (https://app.fous.com/keys).

```bash
# First set your key: export FOUS_API_KEY='YOUR_FOUS_API_KEY'
: "${FOUS_API_KEY:?Set FOUS_API_KEY before running this example}"

curl 'https://api.fous.com/v1/query' \
  --fail-with-body --silent --show-error --max-time 120 \
  -H "Authorization: Bearer $FOUS_API_KEY" \
  -H 'Content-Type: application/json' \
  --data-raw '{
  "api": "@cargurus",
  "visibility": "public",
  "operation": "get_market_value",
  "version": 1,
  "input": {
    "car": "2022 Toyota Camry"
  },
  "response": {
    "format": "json"
  }
}'
```

```python
# Save as fous.py and run with python3 fous.py. No packages needed.
# First set your key: export FOUS_API_KEY='YOUR_FOUS_API_KEY'
import json
import os
import urllib.error
import urllib.request

api_key = os.environ.get("FOUS_API_KEY")
if not api_key:
    raise RuntimeError("Set FOUS_API_KEY before running this example")

body = json.loads("{\n  \"api\": \"@cargurus\",\n  \"visibility\": \"public\",\n  \"operation\": \"get_market_value\",\n  \"version\": 1,\n  \"input\": {\n    \"car\": \"2022 Toyota Camry\"\n  },\n  \"response\": {\n    \"format\": \"json\"\n  }\n}")
request = urllib.request.Request(
    "https://api.fous.com/v1/query",
    data=json.dumps(body).encode("utf-8"),
    headers={
        "Authorization": f"Bearer {api_key}",
        "Content-Type": "application/json",
    },
    method="POST",
)
try:
    with urllib.request.urlopen(request, timeout=120) as response:
        result = json.load(response)
except urllib.error.HTTPError as error:
    raise RuntimeError(f"HTTP {error.code}: {error.read().decode('utf-8', errors='replace')}") from error
if result.get("success") is False:
    raise RuntimeError(result.get("error", {}).get("message", "Request failed"))
print(json.dumps(result["data"]["output"], indent=2))
```

```typescript
// Save as fous.mts and run with npx tsx fous.mts.
// First set your key: export FOUS_API_KEY='YOUR_FOUS_API_KEY'
const apiKey = process.env.FOUS_API_KEY;
if (!apiKey) throw new Error("Set FOUS_API_KEY before running this example");

const response = await fetch("https://api.fous.com/v1/query", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${apiKey}`,
    "Content-Type": "application/json",
  },
  signal: AbortSignal.timeout(120_000),
  body: JSON.stringify({
  "api": "@cargurus",
  "visibility": "public",
  "operation": "get_market_value",
  "version": 1,
  "input": {
    "car": "2022 Toyota Camry"
  },
  "response": {
    "format": "json"
  }
}),
});
type ApiResult = { success: boolean; data?: { output: unknown }; error?: { message: string } };
const result: ApiResult = await response.json();
if (!response.ok || result.success === false) {
  throw new Error(result.error?.message ?? `HTTP ${response.status}`);
}
if (!result.data) throw new Error("Missing API response data");
console.log(result.data.output);
```

Or describe the data in plain language: send `{"api":"@cargurus","prompt":"Describe the data you need, with every detail"}` to the same URL. Fous fills in the input, runs the method that fits and returns only the fields you asked for; `data.route.calls[].request` is the exact call it made. Routing is free; the run costs the same.

## Use cases

- Compare local car listings by price, mileage, and distance.
- Find used cars matching a make, model, and budget.
- Review recent price trends for a vehicle model.
- Track how a model’s average used price changes over 12 months.

## FAQ

### Is Fous affiliated with CarGurus?

No. Fous is not affiliated with CarGurus. This workflow reads the public cargurus.com website and returns its data.

### How much does it cost?

Each run costs 1 credit. With pay-as-you-go, a credit costs 1¢; monthly plans cost less per credit.

### Do I need a CarGurus account?

No. You only need a Fous account.

### How current is the data?

Fous gets the data from cargurus.com when you run it; repeating the same request within a day may return the saved result. Fous checks this workflow automatically; it last passed a check on Sep 29, 2026.

### What cars are for sale near a ZIP code?

Search cars returns new and used listings near a required US ZIP code for a specified make and model.

### What is the average used price for a model?

Get market value returns the current average used asking price for a specified year, make, and model.

### How has a model’s price changed over 12 months?

Get market value returns monthly average prices and the 12-month price change when available.

## Related

- [Cars.com API](https://fous.com/workflows/cars-com.md): Cars.com finds car listings by make, model, and U.S. ZIP code, and provides dealerships’ latest customer reviews when available.
- [Autotrader API](https://fous.com/workflows/autotrader.md): Search new, used and certified cars for sale across the United States.
- [Carfax API](https://fous.com/workflows/carfax.md): Carfax provides used-car listings near a US ZIP code with free history highlights, plus open safety recalls reported by CARFAX for a VIN or US plate.
- [CarMax API](https://fous.com/workflows/carmax.md): Search public CarMax used-car listings.
- [Carvana API](https://fous.com/workflows/carvana.md): Search used vehicles for sale on Carvana.
- [mobile.de API](https://fous.com/workflows/mobile-de.md): Search cars for sale on mobile.de.
- [Kelley Blue Book API](https://fous.com/workflows/kelley-blue-book.md): Kelley Blue Book provides valuations and automotive research, including used-car value estimates and ranges, plus model reviews with ratings, pricing, fuel economy, pros and cons.
- [OfferUp API](https://fous.com/workflows/offerup.md): Local marketplace for buying and selling items.
- [All Commerce workflows](https://fous.com/workflows/category/commerce)
