# FAA Aircraft Registry & Pilot Certification Lookup (`punkrecordsdata/faa-aircraft-airmen-registry`) Actor

Look up FAA aircraft registration by N-Number, pilot certification by name, and linked NTSB accident/incident records. Export to CSV, Excel, JSON.

- **URL**: https://apify.com/punkrecordsdata/faa-aircraft-airmen-registry.md
- **Developed by:** [PunkRecordsData](https://apify.com/punkrecordsdata) (community)
- **Categories:** Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $10.20 / 1,000 aircraft records

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

<p align="center">
  <img src="https://api.apify.com/v2/key-value-stores/AAm3a1h3Z9nYfrvh9/records/banner" alt="PunkRecordsData" width="100%" />
</p>

## ✈️ FAA Aircraft Registry & Pilot Certification Lookup, PunkRecordsData

> 🚀 **Look up any US aircraft by N-Number, any FAA-certificated pilot by name, and linked NTSB accident history, in one run.** A single N-Number returns owner, manufacturer and model plus every NTSB accident on record for that same registration, straight from the FAA and NTSB's own systems.

Scrape US aviation data straight from the FAA's own aircraft and airmen registries plus the NTSB's accident database: aircraft registration (owner name and address, manufacturer, model, engine, status, dates), pilot certification (certificate type, ratings, limits), and NTSB accident/incident records linked to a specific aircraft registration. No login, no API key, no HTML scraping of a rendered page, just each agency's own public records returned as clean rows.

Built for the [Apify platform](https://apify.com): screen an aircraft before purchase, verify a pilot's certification, or check an aircraft's accident history in one run instead of three separate government lookups.

### 📋 What the FAA Aircraft Registry & Pilot Certification Lookup does

Give it an N-Number (like "N12345") and it returns the FAA registration record: registered owner name and address, manufacturer, model, serial number, engine, certificate status and dates. It also automatically checks the NTSB's accident database for any incident linked to that same registration number, so you see the aircraft's real accident history, not just its paperwork. Give it a pilot's Last Name (and First Name to narrow common surnames) and it returns their FAA certificate: certificate type, ratings, issue date and limits.

> 💡 **Why it matters:** most FAA registry scrapers on the market return aircraft ownership only, and stop there. This one also cross-references NTSB accident history for the same registration and adds pilot certification lookup, so you're not running three separate tools to build one aviation safety profile.

### 📊 Output

Real sample fields from a verified run, one of 3 record types identified by `recordType`.

**`aircraft-record`** (primary, one row per N-Number):

| Field | Type | Example |
|---|---|---|
| ✈️ `nNumber` | string | `N12345` |
| 🏭 `manufacturerName` / `model` | string | `DJI` / `MAVIC PRO` |
| 🔧 `typeAircraft` / `typeEngine` | string | `Rotorcraft` / `Electric` |
| 📅 `certificateIssueDate` / `expirationDate` | string | `08/22/2017` / `08/31/2027` |
| 👤 `registeredOwnerName` | string | real registrant name, e.g. `GUTTERMAN ADAM D` |
| 📍 `registeredOwnerCity` / `registeredOwnerState` | string | `HILTON` / `NEW YORK` |

**`airmen-record`** (one row per pilot certificate found):

| Field | Type | Example |
|---|---|---|
| 🧑‍✈️ `fullName` | string | `NEIL CURTIS ARMSTRONG` |
| 🎓 `certificateType` | string | `COMMERCIAL PILOT` |
| 📅 `issueDate` | string | `2/21/2010` |
| 📜 `ratings` | string | `COMMERCIAL PILOT AIRPLANE SINGLE ENGINE LAND AIRPLANE SINGLE ENGINE SEA INSTRUMENT AIRPLANE` |
| ℹ️ `limits` | string | `ENGLISH PROFICIENT.` |

**`incident-record`** (one row per NTSB accident linked to the N-Number):

| Field | Type | Example |
|---|---|---|
| 🆔 `ntsbNumber` | string | `OAK69A0051` |
| 📍 `city` / `state` | string | `LAKEPORT` / `California` |
| 🛩️ `vehicleMake` / `vehicleModel` | string | `Bellanca` / `14-19` |
| 🚦 `completionStatus` | string | `Completed` |

### ✨ Why choose this Actor

- **3 real government data sources in one dataset**, not just aircraft ownership: FAA aircraft registry, FAA airmen certification, and NTSB accident history.
- **Accident history cross-referenced automatically.** Every aircraft lookup also checks NTSB's database for that exact registration, no separate search needed.
- **Pilot certification included**, a data source most aircraft-registry-only competitors don't touch at all.
- **Government data, directly sourced.** Every field comes straight from `registry.faa.gov`, `amsrvs.registry.faa.gov`, and `data.ntsb.gov`, no login or API key required anywhere.

### 📈 How it compares to alternatives

Measured against the closest published FAA aircraft registry actors on the Apify Store:

| Actor | Primary price | Billable events |
|---|---|---|
| Other FAA aircraft registry scrapers (5+ actors) | $5.00-10.00/1k | 1 each, aircraft ownership only |
| **This Actor** | See Store pricing | **3** (aircraft, airmen, NTSB incident), all raw government source data |

### 🚀 How to use

1. Create a free [Apify account](https://console.apify.com). New accounts get $5 in free credit.
2. Open the FAA Aircraft Registry & Pilot Certification Lookup and enter an N-Number (e.g. "N12345"), a pilot Last Name, or both.
3. Click **Start** and wait for the run to finish.
4. Download your data as CSV, Excel, JSON or XML, or pull it via the API.

### 💼 Business use cases

**Aircraft sales & pre-purchase screening**
Check an aircraft's registration status, ownership and NTSB accident history before making an offer.

**Insurance & risk underwriting**
Screen an aircraft's accident history and a pilot's certification level before writing a policy.

**Aviation lead generation**
Build owner-contact lists for maintenance, upgrade or insurance outreach from real registration data.

**Journalism & aviation safety research**
Cross-reference aircraft ownership with NTSB accident records for accountability reporting.

### 🔌 Automating FAA Aircraft Registry & Pilot Certification Lookup

Connect this Actor to **Make**, **Zapier**, **Slack** or **Airbyte** to push new registration or accident data into a spreadsheet, database or channel automatically. Schedule a run per N-Number to catch a registration or ownership change.

### 🌟 Beyond business use cases

**Research:** aviation safety and transportation research using real FAA and NTSB data.
**Personal projects:** check an aircraft's history before a purchase, or verify your instructor's certification.
**Non-profit:** aviation safety advocacy and accountability projects.
**Experimentation:** train aviation-risk or ownership-pattern models against real registration data.

### 🤖 Ask an AI assistant about this scraper

Paste this Actor's Store page into ChatGPT, Claude or Perplexity and ask: "Does this FAA scraper include pilot certification and NTSB accident history, or just aircraft ownership?" The README and input schema are structured so AI assistants can answer accurately from the page alone.

### ❓ Frequently Asked Questions

**Does this only return aircraft ownership, or also pilots and accidents?**
All 3: aircraft registration, pilot certification, and NTSB accident/incident records linked to the aircraft's N-Number.

**Do I need both an N-Number and a pilot name?**
No, either works alone. An N-Number returns the aircraft record plus any NTSB history; a Last Name (with First Name to narrow it) returns pilot certification.

**Why did my last-name-only pilot search return nothing?**
The FAA's own airmen registry caps a search at 50 matches and asks for more criteria on a common surname (like "Smith") rather than returning a partial list. Add a First Name to narrow it.

**Do I need an API key for the FAA or NTSB?**
No. Every field comes from each agency's own public systems; no login, session or API key required anywhere.

**What happens if an N-Number was deregistered or never had an accident?**
The Actor reports exactly what each source has: a deregistered N-Number returns an honest "not found" for the aircraft record while still checking NTSB (a registration can outlive the aircraft in accident history), and an aircraft with no NTSB history simply returns zero incident rows, not an error.

**Is the registered owner's name and address really public?**
Yes. The FAA aircraft registry is a public government record; that's exactly the data this Actor surfaces, the same as looking it up by hand on `registry.faa.gov`.

**How fresh is the data?**
As fresh as each agency's own system. FAA registrations update as filings are processed; NTSB accident records appear once the agency completes and publishes them.

**Can I look up multiple N-Numbers or pilots in one run?**
This version looks up one N-Number and one pilot per run. Run it once per lookup for a batch, or reach out for a custom bulk version.

### 🔌 Integrate with any app

Every run's output is available as CSV, Excel, JSON or XML, or through Apify's API and client libraries for Python and JavaScript.

### 🔗 Recommended Actors

Browse the rest of the [PunkRecordsData](https://apify.com/punkrecordsdata) catalog for more scrapers covering government data, sports data, and social media intelligence.

> 💡 **Pro Tip:** browse the complete [PunkRecordsData collection](https://apify.com/punkrecordsdata).

**🆘 Need Help?** contact.punkrecordsdata@gmail.com

> **⚠️ Disclaimer:** This is an independent tool, not affiliated with, endorsed by, or sponsored by the Federal Aviation Administration or the National Transportation Safety Board. It collects only publicly available data.

# Actor input Schema

## `nNumber` (type: `string`):

US aircraft registration number (tail number), e.g. "N12345". Looks up the aircraft record and any linked NTSB accident/incident records for that same registration.

## `maxItems` (type: `integer`):

Free users: limited to 10 items (preview). Paid users: optional, max 1,000,000. Shared across all record types.

## `lastName` (type: `string`):

Pilot's last name, e.g. "Armstrong". Combine with First Name to narrow a common surname (a last-name-only search that matches over 50 pilots returns no rows and asks for more criteria).

## `firstName` (type: `string`):

Pilot's first name, e.g. "Neil".

## Actor input object example

```json
{
  "nNumber": "N12345",
  "maxItems": 10
}
```

# Actor output Schema

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

Key fields: record type, N-Number, name, location

## `fullData` (type: `string`):

Complete dataset with every field for all 3 record types

# 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 = {
    "nNumber": "N12345",
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("punkrecordsdata/faa-aircraft-airmen-registry").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 = {
    "nNumber": "N12345",
    "maxItems": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("punkrecordsdata/faa-aircraft-airmen-registry").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 '{
  "nNumber": "N12345",
  "maxItems": 10
}' |
apify call punkrecordsdata/faa-aircraft-airmen-registry --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,punkrecordsdata/faa-aircraft-airmen-registry"
        }
    }
}
```

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/4XdjzDp0Q0XsrcbA6/builds/48MuDn4C9y1qpAxRg/openapi.json
