# UK MOT Failure Stats by Make, Model & Year (DVSA) (`jyaussie/uk-mot-failure-stats`) Actor

UK MOT fail rates, most common failures and advisories by make, model and first-registration year from 34 million official DVSA MOT tests (2025). Car reliability statistics by model, compared with the average for same-age cars. Not an MOT history check for a single plate.

- **URL**: https://apify.com/jyaussie/uk-mot-failure-stats.md
- **Developed by:** [Car Helper Tools](https://apify.com/jyaussie) (community)
- **Categories:** Business, E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$10.00 / 1,000 model-year mot statistics

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## UK MOT Failure Stats: fail rates & most common MOT failures by make, model and year

**How often does this car fail its MOT, and what usually fails?** Enter a make, model and first-registration years. You get the **MOT fail rate**, how it compares with **the average for vehicles of the same age**, the **most common failure items and advisories**, failure categories, dangerous-defect rate and average mileage. Built from **34 million official DVSA MOT tests completed in Great Britain in 2025**.

Other MOT Actors look up the history of one number plate. This one answers the **model-level** question buyers, dealers and garages ask: *"Is a 2015 Ford Fiesta a good buy, and what should I check?"*

### What you get per make / model / first-use year

- `motTests`, `initialFailRatePct` (failed at first, including faults fixed within the hour), `passRatePct`, `fixedAtTestPct`
- `sameAgeAverageFailRatePct`, `failRateVsSameAgeAverage` and a `verdict` (much better / better / about average / worse / much worse than average)
- `topFailureItems`: e.g. "Coil spring: fractured or broken", with % of tests and dangerous %
- `topFailureCategories`: Lamps, Suspension, Tyres, Brakes...
- `topAdvisories`: what testers warn about before it becomes a failure
- `dangerousDefectRatePct`, `averageMileage`, `fuelMixPct`, `vehicleClass`

### Who it's for

Used-car buyers and dealers, UK car exporters and importers (e.g. UK cars going to Cyprus, Malta or Ireland), garages and MOT centres, fleet and leasing managers, insurers, and car-content sites ("most reliable small cars").

### Input

| Field | Example | Notes |
|---|---|---|
| `make` | `Vauxhall` | `VW`, `Mercedes` aliases work |
| `model` | `Corsa` | DVSA model name. If nothing is found, you get suggestions (free) |
| `years` | `2012-2018` or `2014,2016` | Year first registered. Empty = all years |
| `vehicles` | `[{"make":"Toyota","model":"Yaris","years":"2014-2016"}]` | Several vehicles in one run |
| `includeModelVariants` | `true` | `Transit` also counts `Transit Custom`, `Transit Connect`... |
| `minTests` | `50` | Years with fewer tests are skipped and not charged |
| `topN` | `10` | Items per list |

### Example output

Real data, 2025 MOT tests:

| Vehicle | First used | MOT tests | Fail rate | Same-age average | Verdict | Top failure |
|---|---|---|---|---|---|---|
| Ford Fiesta | 2015 | 120,571 | 35.3% | 28.2% | much worse than average | Stop lamp: not working (8.3%) |
| VW Golf | 2015 | 65,861 | 18.3% | 28.2% | much better than average | |
| Toyota Yaris | 2016 | 27,655 | 19.6% | 25.2% | much better than average | Side repeaters: not working |
| Vauxhall Corsa | 2014 | 70,556 | 42.8% | 31.5% | much worse than average | Coil spring: fractured or broken (7.6%) |

```json
{
  "make": "FORD", "model": "FIESTA", "firstUseYear": 2015, "motTests": 120571,
  "initialFailRatePct": 35.3, "sameAgeAverageFailRatePct": 28.2, "failRateVsSameAgeAverage": 1.25,
  "verdict": "much worse than average", "averageMileage": 67140,
  "topFailureItems": [{"defect": "Stop lamp: not working", "category": "Lamps, reflectors and electrical equipment", "pctOfTests": 8.3, "dangerousPctOfTests": 0.0}],
  "topAdvisories": [{"advisory": "Tread depth: worn close to legal limit/worn on edge", "category": "Tyres", "pctOfTests": 20.0}],
  "dataPeriod": "MOT tests (normal tests) completed in Great Britain in 2025"
}
```

### Use with AI agents (MCP)

Connect this Actor to Claude, ChatGPT, Cursor or any MCP client with Apify's hosted MCP server:

`https://mcp.apify.com/?tools=jyaussie/uk-mot-failure-stats`

Example prompts:

- "What is the MOT fail rate of a 2015 Ford Fiesta and its top failures?"
- "Which first-registration year of the VW Golf is most reliable at MOT?"
- "Compare MOT failure stats of Vauxhall Corsa 2012-2018."

### Pricing

Pay per event: **$0.01 per make/model/year returned**. A 7-year comparison costs $0.07. Not-found vehicles and years with too few tests are free. Runs take about a second because the statistics are pre-computed.

### Method, data source & licence

- Source: **DVSA anonymised MOT testing data** (tests completed in 2025), published at open.data.dvsa.gov.uk. *Contains public sector information licensed under the Open Government Licence v3.0.* This Actor is not affiliated with or endorsed by DVSA.
- Only normal first tests are counted (not retests). Fail rate includes "pass with rectification at station". "First-use year" is the year the vehicle was first registered, not necessarily its model year. Only groups with at least 20 tests are kept.
- Fail rates reflect how vehicles are used and maintained, not only how they are built: popular cheap cars often have higher mileage and lower maintenance budgets. The comparison is with vehicles in the same MOT class first used in the same year.
- **No personal data**: only aggregate counts. No registration numbers, vehicle IDs, postcodes or test-centre details are included.
- Great Britain only. Not advice about any specific vehicle. Check a specific car's own MOT history on GOV.UK and have it inspected.

# Actor input Schema

## `make` (type: `string`):

e.g. Ford, Volkswagen (VW works), Vauxhall, BMW

## `model` (type: `string`):

DVSA model name, e.g. Fiesta, Golf, Corsa, 3 Series. If nothing is found, the Actor suggests names.

## `years` (type: `string`):

Year the vehicle was first registered: a range or list, e.g. 2012-2018 or 2014,2016. Empty = all years. (Alias accepted: modelYears.)

## `vehicles` (type: `array`):

List of {make, model, years}. Overrides the fields above.

## `includeModelVariants` (type: `boolean`):

Also count models starting with the name, e.g. Transit also includes Transit Custom and Transit Connect.

## `minTests` (type: `integer`):

Years with fewer tests are skipped (not charged) to keep statistics reliable.

## `topN` (type: `integer`):

How many top failure items, categories and advisories to return per year.

## `maxVehicles` (type: `integer`):

Maximum vehicles per run (limits cost).

## Actor input object example

```json
{
  "make": "Ford",
  "model": "Fiesta",
  "years": "2012-2018",
  "includeModelVariants": false,
  "minTests": 50,
  "topN": 10,
  "maxVehicles": 20
}
```

# Actor output Schema

## `overview` (type: `string`):

Default dataset, overview view.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "make": "Ford",
    "model": "Fiesta",
    "years": "2012-2018"
};

// Run the Actor and wait for it to finish
const run = await client.actor("jyaussie/uk-mot-failure-stats").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "make": "Ford",
    "model": "Fiesta",
    "years": "2012-2018",
}

# Run the Actor and wait for it to finish
run = client.actor("jyaussie/uk-mot-failure-stats").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "make": "Ford",
  "model": "Fiesta",
  "years": "2012-2018"
}' |
apify call jyaussie/uk-mot-failure-stats --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,jyaussie/uk-mot-failure-stats"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/gfdSugGBhR1lwJdh9/builds/tQaWGReiYP8Fjao6k/openapi.json
