# Airline Safety Report — Recalls & Maintenance Risk (`ryanclinton/airline-safety-report`) Actor

Generate a comprehensive airline and aviation safety intelligence report by querying 8 data sources in parallel.

- **URL**: https://apify.com/ryanclinton/airline-safety-report.md
- **Developed by:** [ryan clinton](https://apify.com/ryanclinton) (community)
- **Categories:** AI, Developer tools
- **Stats:** 2 total users, 1 monthly users, 0.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

$500.00 / 1,000 analysis runs

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Airline Safety Report

Generate a comprehensive airline and aviation safety intelligence report by querying 8 data sources in parallel. The actor runs four scoring models -- airline safety defects, route weather risk, sanctions exposure, and maintenance compliance -- to produce a composite risk score with actionable recommendations for airlines, aircraft types, or specific routes.

### Features

- Analyzes safety recalls and critical defects using NHTSA-pattern data, flagging fire, engine, structural fatigue, and other safety-critical concerns
- Detects Federal Register airworthiness directives (ADs) including emergency ADs and mandatory inspections
- Evaluates route weather risk from NOAA alerts (thunderstorms, turbulence, wind shear, icing) and FEMA disaster declarations
- Screens airlines against OFAC and OpenSanctions for sanctions exposure, including corporate registrations in high-risk jurisdictions
- Scores maintenance compliance burden based on AD volume, emergency directives, and safety service bulletins
- Produces a composite score with verdicts from LOW_RISK to CRITICAL

### Use Cases

- **Aviation safety analysts**: Evaluate the safety profile of specific aircraft types or airlines by aggregating recall data, airworthiness directives, and weather risk
- **Airline operations teams**: Assess route-specific weather and disaster risk before scheduling flights through affected regions
- **Insurance underwriters**: Screen airlines for sanctions exposure and maintenance compliance gaps before writing aviation liability policies
- **Aircraft lessors**: Evaluate the safety and compliance track record of a lessee airline before placing an aircraft
- **Regulatory researchers**: Monitor the volume and severity of airworthiness directives and emergency actions for specific manufacturers or operators

### How to Use

1. Click **Try for free** on this page
2. Enter your query -- an airline name, aircraft type, or route (e.g., "Boeing 737 MAX", "United Airlines", "JFK to LAX")
3. Optionally specify a specific airline name or route for more targeted analysis
4. Click **Start** and wait for the run to finish
5. Download results from the **Dataset** tab in JSON, CSV, or Excel

### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| query | string | Yes | Airline name, aircraft type, or route to analyze (e.g., "Boeing 737 MAX", "United Airlines", "JFK to LAX") |
| airline | string | No | Specific airline name for targeted sanctions and corporate screening (e.g., "Delta Air Lines") |
| route | string | No | Route or region for weather and disaster analysis (e.g., "Miami to New York") |

### Output Example

```json
{
  "entity": "Boeing 737 MAX",
  "compositeScore": 48,
  "verdict": "ELEVATED",
  "airlineSafety": {
    "score": 55,
    "safetyRecalls": 8,
    "criticalDefects": 4,
    "regulatoryActions": 5,
    "riskLevel": "WATCH",
    "signals": [
      "4 critical safety defects — fire/structural/engine concerns",
      "8 safety recalls — elevated maintenance burden",
      "5 regulatory airworthiness actions"
    ]
  },
  "routeWeather": {
    "score": 20,
    "severeAlerts": 2,
    "disasterCount": 0,
    "flightImpact": 4,
    "riskLevel": "VFR"
  },
  "sanctionsExposure": {
    "score": 0,
    "ofacHits": 0,
    "opensanHits": 0,
    "corporateFlags": 0,
    "riskLevel": "CLEAR"
  },
  "maintenanceCompliance": {
    "score": 62,
    "adCount": 6,
    "safetyBulletins": 5,
    "complianceLevel": "NON_COMPLIANT",
    "signals": [
      "2 emergency ADs — immediate maintenance action required",
      "3 mandatory/repetitive inspections — high maintenance burden"
    ]
  },
  "allSignals": ["4 critical safety defects — fire/structural/engine concerns"],
  "recommendations": [
    "Multiple critical defects — enhanced inspection program recommended",
    "Critical maintenance compliance gaps — immediate AD compliance audit"
  ],
  "query": "Boeing 737 MAX",
  "generatedAt": "2026-03-13T14:30:00.000Z"
}
````

### Scoring Model

The composite score is a weighted average of four risk dimensions:

**Airline Safety** (30% weight) -- Analyzes safety recalls for critical defects involving fire, fuel, engine, structural fatigue, hydraulics, landing gear, and other safety-critical components (up to 35 points). Detects regulatory airworthiness actions and emergency ADs from the Federal Register (up to 30 points). Incorporates Data.gov incident datasets (up to 20 points) and pattern severity when critical defects correlate with emergency ADs (up to 15 points). Risk levels: EXCELLENT, GOOD, WATCH, CONCERN, CRITICAL.

**Route Weather** (20% weight) -- Scores NOAA aviation weather threats including thunderstorms, turbulence, wind shear, icing, volcanic ash, and more (up to 40 points). Evaluates FEMA disaster impacts on airport infrastructure (up to 30 points) and estimates flight delay/cancellation probability (up to 30 points). Risk levels: CLEAR, VFR, MARGINAL, IFR, GROUNDED.

**Sanctions Exposure** (20% weight) -- Screens against OFAC SDN lists (up to 40 points), OpenSanctions multi-list databases (up to 30 points), and corporate registrations in high-risk jurisdictions including Iran, North Korea, Syria, Cuba, Russia, and others (up to 30 points). Risk levels: CLEAR, LOW, MEDIUM, HIGH, BLOCKED.

**Maintenance Compliance** (30% weight) -- Measures airworthiness directive compliance burden from emergency ADs and mandatory inspections (up to 40 points), safety service bulletins requiring corrective action (up to 30 points), maintenance-related Data.gov datasets (up to 15 points), and compliance gap patterns (up to 15 points). Compliance levels: EXEMPLARY, COMPLIANT, GAPS\_FOUND, NON\_COMPLIANT, CRITICAL.

Composite scores of 80+ receive a CRITICAL verdict. Scores 60-79 are HIGH\_RISK. Scores 40-59 are ELEVATED. Scores 20-39 are ACCEPTABLE. Below 20 is LOW\_RISK.

### How Much Does It Cost?

Each run costs approximately $0.10 in platform credits. On the Apify Free plan, you can run roughly 50 reports per month. The actor calls 8 sub-actors in parallel, so runs typically complete in under 60 seconds.

### Programmatic Access

#### Python

```python
from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("ryanclinton/airline-safety-report").call(run_input={
    "query": "Boeing 737 MAX",
    "airline": "United Airlines",
    "route": "Chicago to Denver"
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)
```

#### JavaScript

```javascript
import { ApifyClient } from "apify-client";
const client = new ApifyClient({ token: "YOUR_API_TOKEN" });
const run = await client.actor("ryanclinton/airline-safety-report").call({
    query: "Boeing 737 MAX",
    airline: "United Airlines",
    route: "Chicago to Denver"
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

### FAQ

**What are airworthiness directives (ADs)?**
ADs are legally enforceable regulations issued by the FAA when an unsafe condition is found in an aircraft, engine, or propeller. Emergency ADs require immediate action. This actor detects and counts ADs from the Federal Register for the queried aircraft or airline.

**Can I analyze a specific flight route?**
Yes. Enter a route like "Miami to New York" in the route field to get weather and disaster risk along that corridor. The actor will query NOAA and FEMA for alerts affecting the route region.

**Does this replace an aviation safety audit?**
No. This actor aggregates publicly available data to provide a rapid risk screening. It is designed to supplement -- not replace -- professional safety audits, IOSA inspections, or regulatory oversight.

**How current is the weather data?**
Weather alerts are fetched in real time from NOAA at the time of each run. FEMA disaster declarations include historical data to assess regional disaster exposure patterns.

### Integrations

Use this actor with:

- [Zapier](https://apify.com/integrations/zapier) for automated workflows
- [Make](https://apify.com/integrations/make) for complex automations
- [Google Sheets](https://apify.com/integrations/google-sheets) for spreadsheet export
- The [Apify API](https://docs.apify.com/api/v2) for programmatic access

# Actor input Schema

## `query` (type: `string`):

Airline name or route to analyze (e.g. 'Boeing 737 MAX', 'United Airlines', 'JFK to LAX')

## `airline` (type: `string`):

Optional specific airline name for targeted screening (e.g. 'Delta Air Lines')

## `route` (type: `string`):

Optional route or region for weather/disaster analysis (e.g. 'Miami to New York')

## Actor input object example

```json
{
  "query": "Boeing 737 MAX"
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# 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 = {
    "query": "Boeing 737 MAX"
};

// Run the Actor and wait for it to finish
const run = await client.actor("ryanclinton/airline-safety-report").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 = { "query": "Boeing 737 MAX" }

# Run the Actor and wait for it to finish
run = client.actor("ryanclinton/airline-safety-report").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "query": "Boeing 737 MAX"
}' |
apify call ryanclinton/airline-safety-report --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=ryanclinton/airline-safety-report",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Airline Safety Report — Recalls & Maintenance Risk",
        "description": "Generate a comprehensive airline and aviation safety intelligence report by querying 8 data sources in parallel.",
        "version": "1.0",
        "x-build-id": "aMHuLAbO74wYnMha6"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/ryanclinton~airline-safety-report/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-ryanclinton-airline-safety-report",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/ryanclinton~airline-safety-report/runs": {
            "post": {
                "operationId": "runs-sync-ryanclinton-airline-safety-report",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/ryanclinton~airline-safety-report/run-sync": {
            "post": {
                "operationId": "run-sync-ryanclinton-airline-safety-report",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "query"
                ],
                "properties": {
                    "query": {
                        "title": "Query",
                        "type": "string",
                        "description": "Airline name or route to analyze (e.g. 'Boeing 737 MAX', 'United Airlines', 'JFK to LAX')"
                    },
                    "airline": {
                        "title": "Airline",
                        "type": "string",
                        "description": "Optional specific airline name for targeted screening (e.g. 'Delta Air Lines')"
                    },
                    "route": {
                        "title": "Route",
                        "type": "string",
                        "description": "Optional route or region for weather/disaster analysis (e.g. 'Miami to New York')"
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
