# FAA Airmen Certification Database Scraper (`compute-edge/faa-airmen-certification-scraper`) Actor

Extract FAA Releasable Airmen Certification data — certified pilots, mechanics, dispatchers. Filter by state and certificate type. Includes name, city, state, certificate type, medical class.

- **URL**: https://apify.com/compute-edge/faa-airmen-certification-scraper.md
- **Developed by:** [Compute Edge](https://apify.com/compute-edge) (community)
- **Categories:** Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 results

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

## FAA Airmen Certification Database Scraper

Extract certified pilot, mechanic, dispatcher, and other aviation professional records from the **FAA Releasable Airmen Certification database** — a publicly released federal dataset maintained by the Federal Aviation Administration.

This Actor downloads the official monthly ZIP file directly from `registry.faa.gov`, streams and parses the fixed-width MASTER.txt and certificate files in-memory, and outputs clean, structured JSON — no browser, no authentication, no API key required.

### Features

- **Official federal source** — data comes from the FAA's own releasable database, updated monthly
- **Filter by US state** — narrow results to any two-letter state code (e.g., `CA`, `TX`, `FL`)
- **Filter by certificate type** — search for ATP (Airline Transport Pilot), Commercial, Private, Mechanic, Dispatcher, and more
- **Privacy-respecting** — street addresses are intentionally excluded; only city, state, country, and region are extracted
- **Handles 600k+ records** — streaming architecture keeps memory under 512 MB even for nationwide pulls
- **No proxy required** — the FAA database is a direct public download
- **Always fresh** — the scraper finds the current month's ZIP dynamically; no hardcoded URLs to maintain

| Output Field | Description |
|---|---|
| `uniqueId` | FAA unique identifier for the airman |
| `firstName` | First name |
| `lastName` | Last name |
| `city` | City of record |
| `state` | US state code |
| `country` | Country code |
| `region` | FAA region code |
| `certificateType` | Human-readable certificate type(s), e.g. "ATP (Airline Transport Pilot)" |
| `certificateCodes` | Raw certificate type code(s), e.g. "A" |
| `certificateClass` | Certificate class and ratings from CERT/PILOT files |
| `medicalClass` | First Class / Second Class / Third Class (if applicable) |
| `medicalDate` | Date of medical certificate (YYYY-MM) |
| `medicalExpDate` | Medical certificate expiration date (YYYY-MM) |

---

### How to Scrape FAA Airmen Certification Data

#### Step 1 — Open the Actor input form

In Apify Console, click **Input** on the Actor's run page. Three fields are available:

- **State Filter** — enter a two-letter US state code to filter results (optional)
- **Certificate Type Filter** — enter a type keyword such as `ATP`, `Private`, `Mechanic`, or `Dispatcher` (optional; case-insensitive, partial match)
- **Max Results** — maximum number of records to return (default: 5000; set to `0` for unlimited)

#### Step 2 — Run the Actor

Click **Start**. The Actor will:

1. Fetch the FAA Airmen Certification download page to find the current monthly ZIP URL
2. Download the ZIP file (typically 15–35 MB compressed, 150–300 MB uncompressed)
3. Parse the CERT/PILOT certificate files to build a certificate lookup table
4. Stream-parse MASTER.txt line-by-line, apply your filters, and push records to the dataset

#### Step 3 — Download your results

When the run finishes, click **Results** → **Export** to download as JSON, CSV, or XLSX.

#### Example: All ATP pilots in California

```json
{
    "state": "CA",
    "certificateType": "ATP",
    "maxResults": 0
}
````

#### Example: All FAA-certified mechanics in Texas

```json
{
    "state": "TX",
    "certificateType": "Mechanic",
    "maxResults": 500
}
```

***

### Pricing

| Run type | Approximate cost |
|---|---|
| State + type filter (≤5,000 results) | ~$0.01–0.04 (Apify compute) + $0.003/result |
| Full nationwide pull (600k+ records) | ~$0.05–0.15 (Apify compute) + per-result fee |

The Actor downloads a 15–35 MB file and processes it in a single run. Compute usage is low. The per-result fee is **$0.003 per record** extracted.

***

### Input Reference

```json
{
    "state": "CA",
    "certificateType": "ATP",
    "maxResults": 100
}
```

| Field | Type | Default | Description |
|---|---|---|---|
| `state` | string | `""` | Two-letter US state code filter. Empty = all states. |
| `certificateType` | string | `""` | Certificate type filter (partial match). E.g. `ATP`, `Private`, `Mechanic`. |
| `maxResults` | integer | `5000` | Max records to return. `0` = unlimited. |

***

### Output Reference

```json
{
    "uniqueId": "1234567",
    "firstName": "JOHN",
    "lastName": "SMITH",
    "city": "LOS ANGELES",
    "state": "CA",
    "country": "US",
    "region": "AWP",
    "certificateType": "ATP (Airline Transport Pilot)",
    "certificateCodes": "A",
    "certificateClass": "ASEL, AMEL, ASES",
    "medicalClass": "First Class",
    "medicalDate": "2024-01",
    "medicalExpDate": "2025-01"
}
```

***

### FAQ

**How often is the FAA database updated?**
The FAA publishes a new release of the releasable airmen database monthly. This Actor always fetches the current month's file by parsing the official FAA download page, so results are always fresh without any code changes.

**Why don't I see street addresses?**
The FAA marks address fields as suppressed in their releasable dataset and this Actor intentionally excludes them. Only city, state, and country are extracted — consistent with what the FAA itself makes public.

**Can I pull all records without a filter?**
Yes. Set `maxResults` to `0` and leave `state` and `certificateType` empty. The full database contains approximately 600,000–900,000 records. Use a state filter if you only need a subset to keep your run fast and costs low.

**What are the certificate type codes?**
Common codes: `A` = ATP, `C` = Commercial, `P` = Private Pilot, `S` = Student, `M` = Mechanic, `D` = Dispatcher, `I` = Flight Instructor, `H` = Remote Pilot (drone). The Actor outputs human-readable labels for all known codes.

**Does this scraper require a proxy?**
No. The FAA registry is a public federal database with no rate limits or bot protection.

**What certificate types are available?**
The database covers all airmen certified under 14 CFR: pilots (student through ATP), flight instructors, mechanics/A\&P, aircraft dispatchers, control tower operators, remote pilots, parachute riggers, and more.

***

### Other Actors You May Like

- **HRSA Health Centers Scraper** — Extract federally qualified health centers from the HRSA database
- **CISA KEV Scraper** — Track CISA's Known Exploited Vulnerabilities catalog
- **Hotfrog Business Scraper** — Scrape business listings from Hotfrog.com

***

### Legal Disclaimer

This Actor accesses data from the FAA Releasable Airmen Certification database, which is a **publicly released federal dataset** provided by the United States Federal Aviation Administration under the Freedom of Information Act. Use of this data is subject to the FAA's terms for the releasable database. This Actor is not affiliated with the FAA.

The data extracted is limited to publicly released fields only. Street addresses and other suppressed fields are NOT extracted. Users are responsible for complying with applicable laws (including the Privacy Act, CAN-SPAM, GDPR where applicable) when using extracted data for marketing or outreach purposes.

For questions or support, contact: bciccarelli6@gmail.com

# Actor input Schema

## `state` (type: `string`):

Filter by US state code (e.g. 'CA', 'TX', 'FL'). Leave empty for all states.

## `certificateType` (type: `string`):

Filter by certificate type: ATP (Airline Transport Pilot), COM (Commercial), PVT (Private), STU (Student), CFI (Flight Instructor), MEC (Mechanic), DSP (Dispatcher). Partial match, case-insensitive. Leave empty for all types.

## `maxResults` (type: `integer`):

Maximum number of records to return. Set to 0 for unlimited (may return 1M+ records — use state filter to limit scope).

## Actor input object example

```json
{
  "state": "",
  "certificateType": "",
  "maxResults": 5000
}
```

# Actor output Schema

## `dataset` (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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("compute-edge/faa-airmen-certification-scraper").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("compute-edge/faa-airmen-certification-scraper").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 '{}' |
apify call compute-edge/faa-airmen-certification-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=compute-edge/faa-airmen-certification-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "FAA Airmen Certification Database Scraper",
        "description": "Extract FAA Releasable Airmen Certification data — certified pilots, mechanics, dispatchers. Filter by state and certificate type. Includes name, city, state, certificate type, medical class.",
        "version": "0.1",
        "x-build-id": "qevgzA8hpe2HyQmUN"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/compute-edge~faa-airmen-certification-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-compute-edge-faa-airmen-certification-scraper",
                "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/compute-edge~faa-airmen-certification-scraper/runs": {
            "post": {
                "operationId": "runs-sync-compute-edge-faa-airmen-certification-scraper",
                "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/compute-edge~faa-airmen-certification-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-compute-edge-faa-airmen-certification-scraper",
                "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",
                "properties": {
                    "state": {
                        "title": "State Filter",
                        "type": "string",
                        "description": "Filter by US state code (e.g. 'CA', 'TX', 'FL'). Leave empty for all states.",
                        "default": ""
                    },
                    "certificateType": {
                        "title": "Certificate Type Filter",
                        "type": "string",
                        "description": "Filter by certificate type: ATP (Airline Transport Pilot), COM (Commercial), PVT (Private), STU (Student), CFI (Flight Instructor), MEC (Mechanic), DSP (Dispatcher). Partial match, case-insensitive. Leave empty for all types.",
                        "default": ""
                    },
                    "maxResults": {
                        "title": "Max Results",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum number of records to return. Set to 0 for unlimited (may return 1M+ records — use state filter to limit scope).",
                        "default": 5000
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
