FAA Aircraft Registry Scraper - Owners & Expiring Registrations
Pricing
from $3.00 / 1,000 aircraft records
FAA Aircraft Registry Scraper - Owners & Expiring Registrations
Aircraft registration data from the official FAA Releasable Aircraft database: registrations expiring soon, newly issued or recently deregistered. N-number, make/model, year, engine, owner company and address. Filter by state, aircraft and engine type. Business owners by default.
Pricing
from $3.00 / 1,000 aircraft records
Rating
0.0
(0)
Developer
Groundplane Labs
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Filter the official daily Federal Aviation Administration (FAA) Civil Aircraft Registry (ReleasableAircraft.zip, ~300,000+ registered US civil aircraft) joined with aircraft model (ACFTREF.txt), engine (ENGINE.txt), and deregistration (DEREG.txt) reference tables. Identify corporate, LLC, partnership, and fleet aircraft owners flagged by registration lifecycle signals: expiring registrations, newly issued certificates, or recent deregistrations.
What it does
Every US civil aircraft („N-Number“) must maintain an active registration with the FAA Civil Aviation Registry. Raw FAA bulk files split aircraft ownership (MASTER.txt), make/model specs (ACFTREF.txt), engine specs (ENGINE.txt), and deregistered aircraft (DEREG.txt) across separate fixed-width CSV files with numeric code lookups.
This Actor:
- Streams the official daily
ReleasableAircraft.zipbulk archive directly to temporary disk and parses it with low-memory streaming CSV readers. - Verifies the
MASTER.txtschema header (N-NUMBER,SERIAL NUMBER,MFR MDL CODE) before processing. - Joins every aircraft record to
ACFTREF.txt(manufacturer, model, aircraft type) andENGINE.txt(engine manufacturer, engine model, engine type). - Filters by four aviation registration signals:
EXPIRING_SOON— Active registrations expiring withinexpiringWithinDays(default 180) through the end of that calendar month, soonest expiration first. Many owners renew months early, so 180 days gives a fuller list than 90.NEWLY_ISSUED_30_DAYS— Certificates issued within the past 30 days (sorted newest certificate first).RECENTLY_DEREGISTERED_30_DAYS— Aircraft cancelled/deregistered inDEREG.txtwithin the past 30 days (sorted newest cancellation first).ALL_ACTIVE— All valid (STATUS CODE = V) registrations matching your state, aircraft-type, and engine-type filters.
- Excludes private individual owners and co-owner registrations (
TYPE REGISTRANT1, 4 and 9, which are almost always people) by default (includeIndividualOwners: false), so results focus on corporations, LLCs, partnerships and government entities. Partnership registrations (type 2) are kept only when the name carries a business marker such as LTD, LP, LLC, LLP, PARTNERSHIP, INC, CORP, CO or TRUST, because many are two people registered together.
Note on expirations: FAA mails renewal notices about 6 months ahead and most owners renew early, so very few registrations appear in the next 1-3 months. Most expirations in the data show up 3 or more months out. That's why
expiringWithinDaysdefaults to 180.
Who it's for
- Aviation MROs, avionics shops, and maintenance providers reaching out to corporate and LLC aircraft operators ahead of registration renewals or after new acquisitions.
- Aircraft brokers, lenders, and aviation insurance agencies tracking newly certificated and recently deregistered fixed-wing and rotorcraft assets.
- FBOs, hangar operators, and charter management companies mapping turbine, turboprop, and multi-engine fleets by state.
- Aerospace market researchers analyzing fleet composition and ownership trends.
Input
expiringWithinDays(integer) — Window forEXPIRING_SOON, 1-730 days. Default180.registrationSignal(string enum) —"EXPIRING_SOON"(default),"NEWLY_ISSUED_30_DAYS","RECENTLY_DEREGISTERED_30_DAYS", or"ALL_ACTIVE".states(array of strings) — Two-letter US state codes for the registrant's address. Default:["AZ", "TX"]. Leave empty ([]) for all states.aircraftTypes(array of strings) — FAA aircraft type codes ("4"Fixed Wing Single-Engine,"5"Fixed Wing Multi-Engine,"6"Rotorcraft,"1"Glider,"2"Balloon,"3"Blimp/Dirigible,"7"Weight-Shift-Control,"8"Powered Parachute,"9"Gyroplane,"H"Hybrid Lift,"O"Other). Default:["4", "5", "6"].engineTypes(array of strings) — Optional FAA engine type codes ("1"Reciprocating,"2"Turbo-prop,"3"Turbo-shaft,"4"Turbo-jet,"5"Turbo-fan, etc.). Default:[](all engine types).includeIndividualOwners(boolean) — Defaults tofalseto exclude individual consumer registrants and co-owners (TYPE REGISTRANT1, 4 and 9) and return only business/institutional registrant types (2, 3, 5, 7 and 8).nNumbers(array of strings) — Optional list of specific N-Numbers (with or without leading"N", e.g.["N10004", "101UV"]) to filter from the bulk file. Default:[].maxItems(integer) — Maximum rows to return. Default:200.
Example input JSON
{"registrationSignal": "EXPIRING_SOON","states": ["AZ", "TX"],"aircraftTypes": ["4", "5", "6"],"engineTypes": [],"includeIndividualOwners": false,"nNumbers": [],"maxItems": 200}
Example run options (default max charge $50)
Set a default maximum charge of $50 ("maxTotalChargeUsd": 50) in your run options:
{"maxTotalChargeUsd": 50}
Output
Results are deduplicated by nNumber + serialNumber and sorted by the signal's primary date (expirationDate ascending for EXPIRING_SOON; certIssueDate descending for NEWLY_ISSUED_30_DAYS and ALL_ACTIVE; cancelDate descending for RECENTLY_DEREGISTERED_30_DAYS).
| Field | Type | Description |
|---|---|---|
nNumber | string | FAA registration number with leading "N". |
serialNumber | string | null | Airframe manufacturer serial number. |
manufacturer | string | null | Aircraft manufacturer name (ACFTREF.txt). |
model | string | null | Aircraft model designation (ACFTREF.txt). |
aircraftType | string | null | Decoded aircraft category (e.g. Fixed Wing Multi-Engine, Rotorcraft). |
engineType | string | null | Decoded engine category (e.g. Turbo-fan, Turbo-prop, Reciprocating). |
engineManufacturer | string | null | Engine manufacturer name (ENGINE.txt). |
engineModel | string | null | Engine model designation (ENGINE.txt). |
yearManufactured | integer | null | Four-digit manufacturing year. |
registrantType | string | null | Decoded registrant type (Corporation, LLC, Partnership, Co-Owned, Government, Individual, etc.). |
registrantName | string | null | Registered owner name. |
street | string | null | Mailing street address line 1. |
street2 | string | null | Mailing street address line 2. |
city | string | null | Mailing city. |
state | string | null | Two-letter state code. |
zip | string | null | Mailing postal ZIP code. |
country | string | null | Two-letter country code. |
certIssueDate | string | null | Certificate issue date (YYYY-MM-DD). |
lastActionDate | string | null | Last registration action date (YYYY-MM-DD). |
expirationDate | string | null | Registration expiration date (YYYY-MM-DD). |
daysUntilExpiration | integer | null | Calendar days until expirationDate. |
airworthinessDate | string | null | Airworthiness certificate date (YYYY-MM-DD). |
cancelDate | string | null | Deregistration cancellation date (YYYY-MM-DD, populated for DEREG.txt rows). |
statusCode | string | null | Raw FAA status code (V = Valid, etc.). |
registrationSignal | string | Registration signal matched for this row. |
faaUrl | string | Direct link to the FAA Aircraft Inquiry N-Number record. |
Sample output row (synthetic example)
{"nNumber": "N999EX","serialNumber": "525B-0999","manufacturer": "TEXTRON AVIATION INC","model": "525B","aircraftType": "Fixed Wing Multi-Engine","engineType": "Turbo-fan","engineManufacturer": "WILLIAMS","engineModel": "FJ44 SERIES","yearManufactured": 2020,"registrantType": "LLC","registrantName": "EXAMPLE FLIGHT HOLDINGS LLC","street": "100 AVIATION WAY STE 200","street2": null,"city": "SCOTTSDALE","state": "AZ","zip": "85260","country": "US","certIssueDate": "2020-01-15","lastActionDate": "2023-01-23","expirationDate": "2027-01-31","daysUntilExpiration": 99,"airworthinessDate": "2020-01-10","cancelDate": null,"statusCode": "V","registrationSignal": "EXPIRING_SOON","faaUrl": "https://registry.faa.gov/AircraftInquiry/Search/NNumberResult?nNumberTxt=999EX"}
How pricing works
Pay per result: $0.003 per aircraft record returned ($3.00 per 1,000), plus a tiny Apify actor-start fee. You only pay for rows returned. Set "maxTotalChargeUsd": 50 in your run options to cap spend automatically.
Privacy and intended use
This Actor returns public government records that include registered owner names and addresses, some of them private individuals. Use them only for lawful purposes such as research, due diligence, compliance and relevant B2B outreach. Do not spam, harass or resell personal data, and follow the laws that apply to you (for example CAN-SPAM, TCPA, GDPR/CCPA and state privacy laws) plus any terms set by the source agency. You are responsible for how you use the data. To report a data or privacy issue, open a ticket in this Actor's Issues tab.
Data source and terms
- Official source: FAA Releasable Aircraft Database Download.
- Update frequency: Published and updated daily by the FAA Civil Aviation Registry (federal public data).
- Affiliation disclaimer: This Actor is an independent tool and is not affiliated with or endorsed by the Federal Aviation Administration (FAA) or the U.S. Department of Transportation.
Compliance
The FAA Releasable Aircraft Registry publishes mailing addresses for registered aircraft owners as a matter of federal public record (it does not contain phone numbers or email addresses). includeIndividualOwners defaults to false so individual consumer registrants are excluded unless explicitly requested. Buyers are responsible for complying with the Telephone Consumer Protection Act (TCPA), the National Do-Not-Call Registry, the CAN-SPAM Act, and all applicable federal and state privacy laws before any outreach. Do not use this Actor for consumer or individual targeting.
Limits and FAQ
- Why do FAA registrations expire on the last day of the month?
Under 14 CFR § 47.40, FAA aircraft registration certificates expire on the last calendar day of the month. Consequently,
EXPIRING_SOONincludes through the last day of the calendar month at the end of the window. - Why does the Actor download the bulk ZIP instead of scraping
aircraftinquiryweb pages? The official daily bulk file (ReleasableAircraft.zip) is faster, complete across all ~300,000+ registrations, and avoids hammering individual web inquiry pages.
Changelog
- v0.1 (2026-10-23): Initial release with streaming bulk ZIP download,
MASTER.txt/DEREG.txt/ACFTREF.txt/ENGINE.txtjoin, and privacy-first registrant filtering.