# Carfax API

> Carfax returns used-car listings, vehicle-history highlights, and open safety recalls as a workflow and API.

Carfax’s Search cars method returns used-car listings and vehicle-history highlights; enter a car make and model and a five-digit US ZIP code. Check recalls returns open safety recall details; enter a VIN or license plate, and include a US state for plate searches.

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

## Methods

### Check recalls

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

Check a VIN or US license plate for open safety recalls reported to CARFAX, including the vehicle and recall details. A state is required for plates; details missing from CARFAX are null. Service campaigns are not included.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `state` | string | no | `"California"` | US state name or two-letter code for license plate searches, for example California or CA. |
| `vehicle` | string | yes | `"1C4SJVGJ0PS570046"` | 17-character VIN or US license plate number, for example 1C4SJVGJ0PS570046 or 7ABC123. |

**Input schema**

```json
{
  "type": "object",
  "required": [
    "vehicle"
  ],
  "properties": {
    "state": {
      "type": "string",
      "default": "",
      "examples": [
        "California"
      ],
      "description": "US state name or two-letter code for license plate searches, for example California or CA."
    },
    "vehicle": {
      "type": "string",
      "examples": [
        "1C4SJVGJ0PS570046"
      ],
      "description": "17-character VIN or US license plate number, for example 1C4SJVGJ0PS570046 or 7ABC123."
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "vehicle": "1HGCM82633A004352"
    },
    {
      "vehicle": "1C4SJVGJ0PS570046"
    },
    {
      "state": "California",
      "vehicle": "7ABC123"
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `vin` | string | `"1HGCM82633A004352"` | Vehicle identification number. |
| `make` | string | `"HONDA"` | Vehicle make. |
| `year` | integer | `2003` | Model year. |
| `model` | string | `"ACCORD EX V-6"` | Vehicle model and trim as reported by CARFAX. |
| `recalls` | array |  | Open safety recalls (not service campaigns). |
| `recalls[].title` | string or null | `"2022-2026 MY Jeep Wagoneer and Grand Wagoneer (WS)"` | Recall title or affected component. |
| `recalls[].remedy` | string or null | `"FCA US will conduct a voluntary safety recall to repair the pivot joints on the roof crossbars."` | Repair or remedy information. |
| `recalls[].page_link` | string | `"https://www.carfax.com/recalls"` | CARFAX recall check page for this vehicle; enter the VIN to see current details. |
| `recalls[].description` | string or null | `"FCA US will conduct a voluntary safety recall to repair the pivot joints on the roof crossbars."` | What is being recalled. |
| `recalls[].safety_risk` | string or null | `"Crossbars which detach from a vehicle may create a road hazard to operators and occupants of other vehicles, and can ca` | Safety risk described for the recall. |
| `recalls[].date_announced` | string or null | `"2026-09-17"` | Date shown by CARFAX in YYYY-MM-DD format. |
| `recalls[].government_recall_number` | string or null | `"26V-584"` | NHTSA campaign number, when given. |
| `open_recall_count` | integer | `0` | Number of open safety recalls reported to CARFAX. |

**Example input**

```json
{
  "vehicle": "1HGCM82633A004352"
}
```

**Example output**

```json
{
  "vin": "1HGCM82633A004352",
  "make": "HONDA",
  "year": 2003,
  "model": "ACCORD EX V-6",
  "recalls": [],
  "open_recall_count": 0
}
```

### Search cars

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

Search used cars near a US ZIP code in CARFAX order, with listing details and free vehicle-history highlights. Paid full history reports are not included.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `car` | string | yes | `"Honda Accord"` | Car make and model, such as Honda Accord. |
| `zip_code` | string | yes | `"20001"` | Five-digit US ZIP code, such as 20001. |
| `max_price` | number | no | `20000` | Highest listing price in US dollars, such as 20000. Leave blank for any price. |
| `max_results` | integer | no | `25` | Maximum number of listings, such as 25. |
| `radius_miles` | integer | no | `50` | Search radius in miles, such as 50. |

**Input schema**

```json
{
  "type": "object",
  "required": [
    "car",
    "zip_code"
  ],
  "properties": {
    "car": {
      "type": "string",
      "examples": [
        "Honda Accord"
      ],
      "description": "Car make and model, such as Honda Accord."
    },
    "zip_code": {
      "type": "string",
      "pattern": "^[0-9]{5}$",
      "examples": [
        "20001"
      ],
      "description": "Five-digit US ZIP code, such as 20001."
    },
    "max_price": {
      "type": "number",
      "minimum": 0,
      "examples": [
        20000
      ],
      "description": "Highest listing price in US dollars, such as 20000. Leave blank for any price."
    },
    "max_results": {
      "type": "integer",
      "default": 25,
      "maximum": 100,
      "minimum": 1,
      "examples": [
        25
      ],
      "description": "Maximum number of listings, such as 25."
    },
    "radius_miles": {
      "type": "integer",
      "default": 50,
      "maximum": 500,
      "minimum": 1,
      "examples": [
        50
      ],
      "description": "Search radius in miles, such as 50."
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "car": "Toyota Camry",
      "zip_code": "90210",
      "max_price": 20000,
      "max_results": 27,
      "radius_miles": 25
    },
    {
      "car": "Honda Accord",
      "zip_code": "20001"
    },
    {
      "car": "Honda Accord",
      "zip_code": "20001",
      "max_price": 1,
      "max_results": 5
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `listings` | array |  | Used cars in CARFAX search order. |
| `listings[].vin` | string or null |  | Vehicle identification number. |
| `listings[].make` | string or null |  | Car make. |
| `listings[].trim` | string or null |  | Car trim. |
| `listings[].year` | integer or null |  | Model year. |
| `listings[].model` | string or null |  | Car model. |
| `listings[].price` | number or null |  | Listing price in US dollars. |
| `listings[].mileage` | integer or null |  | Odometer mileage in miles. |
| `listings[].currency` | string |  | Price currency code. |
| `listings[].photo_link` | string or null |  | First vehicle photo link. |
| `listings[].dealer_name` | string or null |  | Seller dealership. |
| `listings[].vehicle_use` | string or null |  | CARFAX use label such as Personal Use or Fleet. |
| `listings[].listing_link` | string |  | CARFAX listing page. |
| `listings[].distance_miles` | number or null |  | Distance to dealer in miles. |
| `listings[].dealer_location` | string or null |  | Dealer city and state. |
| `listings[].previous_owners` | integer or null |  | Number of previous owners shown by CARFAX. |
| `listings[].accidents_reported` | string or null |  | CARFAX accident or damage history highlight. |
| `listings[].service_records_count` | integer or null |  | Number of service records shown by CARFAX. |

**Example input**

```json
{
  "car": "Honda Accord",
  "zip_code": "20001",
  "max_price": 1,
  "max_results": 5
}
```

**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": "@carfax",
  "visibility": "public",
  "operation": "check_recalls",
  "version": 1,
  "input": {
    "vehicle": "1HGCM82633A004352"
  },
  "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\": \"@carfax\",\n  \"visibility\": \"public\",\n  \"operation\": \"check_recalls\",\n  \"version\": 1,\n  \"input\": {\n    \"vehicle\": \"1HGCM82633A004352\"\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": "@carfax",
  "visibility": "public",
  "operation": "check_recalls",
  "version": 1,
  "input": {
    "vehicle": "1HGCM82633A004352"
  },
  "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":"@carfax","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 used-car listings near a ZIP code
- Find listings within a price range and search radius
- Review reported owners, accidents, and service records
- Check a vehicle for open safety recalls
- Look up recalls using a license plate and state

## FAQ

### Is Fous affiliated with Carfax?

No. Fous is not affiliated with Carfax. This workflow reads the public carfax.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 Carfax account?

No. You only need a Fous account.

### How current is the data?

Fous gets the data from carfax.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 used cars are listed near a ZIP code?

Search cars returns used-car listings near a five-digit US ZIP code for the make and model you enter.

### What vehicle-history highlights are shown for a listing?

Search cars returns highlights including previous owners, reported accidents or damage, and service record counts.

### Does a vehicle have open safety recalls?

Check recalls looks up open safety recalls using a 17-character VIN or US license plate. A US state is required for plate searches.

## 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.
- [CarGurus API](https://fous.com/workflows/cargurus.md): CarGurus helps shoppers browse dealer-listed new and used cars with deal ratings, and view average used prices, price ranges and 12-month price history by model year.
- [Autotrader API](https://fous.com/workflows/autotrader.md): Search new, used and certified cars for sale across the United States.
- [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.
- [NHTSA API](https://fous.com/workflows/nhtsa.md): NHTSA provides vehicle details, model-level recalls, 5-Star Safety Ratings, owner complaints, and listed car, SUV, and truck models; data may be missing, and recalls do not confirm repairs.
- [Tesla API](https://fous.com/workflows/tesla.md): Tesla offers new and certified pre-owned vehicles across the United States and nearby open Supercharger sites, with delivery estimates and opening hours only when available.
- [OfferUp API](https://fous.com/workflows/offerup.md): Local marketplace for buying and selling items.
- [All Commerce workflows](https://fous.com/workflows/category/commerce)
