Oil & Miles API

Free, read-only car data from our pages: what a trouble code means, the coolant your owner's manual names, what a repair costs per car, and which warranty extensions cover your car.

Version v1Read-onlyNo key or sign-upLicense CC BY 4.0

API Static JSON files · free to reuse
Try it
GET /api/v1/codes/P0420.json
One OBD-II code: what it means, what it doesn't prove, and its page
8 JSON endpoints
6 MCP tools
CC BY 4.0 free to reuse

Endpoints

Method Path What it returns
GET /api/v1/codes.json Every trouble code we cover, with its page
GET /api/v1/codes/{CODE}.json One OBD-II code: what it means, what it doesn't prove, what gets checked. The code in capitals, for example P0420
GET /api/v1/coolant.json Every car with a coolant record
GET /api/v1/coolant/{make}/{model}/{year}.json The coolant the owner's manual names, with the manual. Leave out the year, or the model and year, for more cars
GET /api/v1/costs.json Repair jobs with cost ranges
GET /api/v1/costs/{job}.json One job: the page's headline range and each car's own shop and dealer range
GET /api/v1/coverage/{make}/{model}/{year}.json Warranty extensions and coverage programs for a car. Leave out the year, or the model and year, for more
GET /api/v1/openapi.json The OpenAPI 3.1 description

Make and model are lowercase, as in the answers: honda/crv, honda/cr-v for coverage.

Use it, credit it

Every answer carries the license, and every record its source and the url of the Oil & Miles page it comes from.

Show the line "Data: Oil & Miles, CC BY 4.0" with a link to that page wherever you use a record.

The figures are the ones on our pages, updated when the pages are. Each car carries its own range, and the headline is the page's own range across the cars it prices.

Examples

GET /api/v1/codes/P0420.json

curl "https://oilandmiles.com/api/v1/codes/P0420.json"
{
  "data": {
    "area": "Auxiliary emission controls",
    "code": "P0420",
    "family": "Catalyst",
    "meaning": "Bank 1 converter reads weak",
    "official_name": "Catalyst System Efficiency Below Threshold Bank 1",
    "related_codes": [
      "P0430"
    ],
    "source": "Code name from FCA bulletin 08-054-25.",
    "system": "Powertrain",
    "url": "https://oilandmiles.com/articles/p0420-code",
    "what_gets_checked": "Whether the oxygen sensor after the converter stays flat while the one before it swings",
    "what_it_does_not_prove": "It doesn't prove the converter is bad. An exhaust leak or the engine's software can set the code with nothing wrong inside it.",
    "what_the_computer_saw": "The engine computer swung the fuel mixture rich and lean, and the oxygen sensor after the bank 1 converter started to mirror the one before it."
  },
  "source": "Oil & Miles",
  "license": {
    "name": "CC BY 4.0",
    "url": "https://creativecommons.org/licenses/by/4.0/",
    "attribution": "Oil & Miles (https://oilandmiles.com)"
  },
  "docs": "https://oilandmiles.com/developers"
}

GET /api/v1/coolant/honda/crv/2017.json

curl "https://oilandmiles.com/api/v1/coolant/honda/crv/2017.json"
{
  "data": [
    {
      "coolant": "Honda Long Life Type 2, 50/50",
      "make": "honda",
      "model": "crv",
      "source": "Honda 2017 CR-V Owner's Manual",
      "url": "https://oilandmiles.com/cars/honda/2017-honda-crv",
      "year": 2017
    }
  ],
  "source": "Oil & Miles",
  "license": {
    "name": "CC BY 4.0",
    "url": "https://creativecommons.org/licenses/by/4.0/",
    "attribution": "Oil & Miles (https://oilandmiles.com)"
  },
  "docs": "https://oilandmiles.com/developers"
}

GET /api/v1/costs/timing-belt.json

curl "https://oilandmiles.com/api/v1/costs/timing-belt.json"
{
  "data": {
    "cars": [
      {
        "dealer": {
          "high": 740,
          "low": 590
        },
        "independent_shop": {
          "high": 570,
          "low": 390
        },
        "vehicle": "2019 Acura TLX 3.5 V6"
      },
      {
        "dealer": {
          "high": 680,
          "low": 550
        },
        "independent_shop": {
          "high": 520,
          "low": 360
        },
        "vehicle": "2019 Acura RLX 3.5 V6"
      }
    ],
    "currency": "USD",
    "headline": {
      "high": 770,
      "low": 360
    },
    "job": "timing-belt",
    "label": "Timing belt replacement",
    "note": "Parts and labor per car, as the page shows them. Each car has its own range, never one across cars.",
    "source": "Oil & Miles repair-cost page",
    "url": "https://oilandmiles.com/articles/timing-belt-replacement-cost"
  },
  "source": "Oil & Miles",
  "license": {
    "name": "CC BY 4.0",
    "url": "https://creativecommons.org/licenses/by/4.0/",
    "attribution": "Oil & Miles (https://oilandmiles.com)"
  },
  "docs": "https://oilandmiles.com/developers"
}

GET /api/v1/coverage/honda/cr-v/2017.json

curl "https://oilandmiles.com/api/v1/coverage/honda/cr-v/2017.json"
{
  "data": [
    {
      "cars": [
        {
          "engine": {
            "displacement": 1.5,
            "turbo": true
          },
          "model": "cr-v",
          "years": {
            "from": 2017,
            "to": 2018
          }
        },
        {
          "engine": {
            "displacement": 1.5,
            "turbo": true
          },
          "model": "civic",
          "years": {
            "from": 2016,
            "to": 2018
          }
        }
      ],
      "id": "honda-powertrain-2019",
      "make": "honda",
      "name": "Powertrain warranty extension",
      "problem": "Oil dilution",
      "start": "April 5, 2019",
      "term": {
        "miles": null,
        "years": 6
      },
      "url": "https://oilandmiles.com/articles/honda-crv-2017-2022-oil-dilution"
    }
  ],
  "source": "Oil & Miles",
  "license": {
    "name": "CC BY 4.0",
    "url": "https://creativecommons.org/licenses/by/4.0/",
    "attribution": "Oil & Miles (https://oilandmiles.com)"
  },
  "docs": "https://oilandmiles.com/developers"
}

MCP server

AI assistants and agents can use the same data as tools, through the Model Context Protocol. Add this address as a remote MCP server:

https://oilandmiles.com/api/mcp
Tool What it returns
get_trouble_code One OBD-II code, the same answer as /api/v1/codes/{CODE}.json
list_trouble_codes Every trouble code we cover, with its page
get_coolant_spec The coolant the owner's manual names, by make, model and year
list_repair_cost_jobs Repair jobs with cost ranges
get_repair_cost One job: each car's own shop and dealer range
find_warranty_coverage Warranty extensions and coverage programs for a car

Streamable HTTP, protocol 2026-07-28, and the 2025 versions for older clients. Read-only, no key, no session. Each POST carries one JSON-RPC request.

Every tool gives the same answer as the API files, with the same license. The limit is 60 requests a minute.

{
  "mcpServers": {
    "oilandmiles": { "type": "http", "url": "https://oilandmiles.com/api/mcp" }
  }
}

Errors and limits

A path with no file answers 404: we have no page on it yet. The files may be cached for an hour.

The MCP server answers 405 to anything but POST, and 429 above 60 requests a minute: wait 60 seconds.

Contact

Questions or a dataset you would like to see: contact@oilandmiles.com.