Use the data

Read any record on the web, hand it to an LLM as Markdown, or download the whole release as DuckDB, SQLite and Parquet. No sign-up and no API key.

Web

Permalinks for all documents

Every document has its own predictable URL at openairdocs.org.

Each document has an AI-friendly Markdown version at the same URL plus .md, to give to an LLM.

Every list shows the DuckDB query that reads it from the Parquet files. Pages are cached for a day and change when a new release lands.

Give your model these directions

Paste them into ChatGPT, Claude or another assistant that can run code. It will query the DuckDB file over HTTPS, with no API key, and link the pages it used.

An assistant that browses can start from llms.txt instead, and read any record by adding .md to its address.

Data dictionary
You can query OpenAirDocs, an open copy of U.S. aviation data: FAA airworthiness directives (ADs) with their full text, proposed ADs, SAIBs, type certificate data sheets, STCs, advisory circulars, the aircraft registry with every cancelled registration, service difficulty reports, FAA accident and incident reports, and every NTSB aviation investigation since 1962. Public domain (CC0), release 2026-10-21.

QUERY with DuckDB (1.2 or later). Attach the release's one database file over HTTPS; DuckDB reads only the parts each query needs:

  ATTACH 'https://openairdocs.org/data/latest/openair.duckdb' AS openair (READ_ONLY);
  USE openair;

Tables are then named (FROM faa_directive). Every table and column is described in the file; read a table's descriptions before querying it:

  SELECT table_name, comment FROM duckdb_tables() WHERE database_name = 'openair';
  SELECT column_name, data_type, comment FROM duckdb_columns() WHERE table_name = 'ntsb_case_detail';

Views for common questions:
  ntsb_pre1982_cause: The causes and factors of NTSB cases before 1982, in words: one row per coded cause or factor, decoded the way NTSB's brief prints it (WEATHER - LOW CEILING).
  ntsb_case: Every NTSB case in one row, with the facts most questions need: local date, place and point, injuries, aircraft, N-numbers, probable cause (decoded for cases before 1982) and the case's page.
  aircraft_history: Everything recorded about one N-number, a row each: the aircraft registered now, cancelled registrations, NTSB investigations, FAA accident and incident reports, and service difficulty reports, with a one-line summary and the record's page.
  geo_location: Every point of the geo_* tables, with its dataset and record id (as text): one place to map everything.
  openair_page: each record table's web page address, with the SQL that builds it.

  SELECT record, event_date, summary, page_url FROM aircraft_history WHERE n_number = 'N222UM' ORDER BY event_date;

Joins:
- faa_directive.ad_id joins every faa_directive_* table, and the candidate tables faa_aircraft_model_directive and faa_engine_model_directive that match ADs to registry models.
- faa_aircraft_registration (and faa_aircraft_deregistration, where N-numbers repeat) point to faa_aircraft_model.code by aircraft_model_code and to faa_engine_model.code by engine_model_code.
- A model_key is the model in upper case with only letters, digits and + (PA-28-181 is PA28181); faa_aircraft_model, faa_engine_model and the product tables carry one.
- Each NTSB case is one row of ntsb_case_detail, keyed by mKey; every other ntsb_ table joins on case_mkey. ntsb_aircrafts, faa_incident_report and faa_service_difficulty_report carry n_number.

Watch for:
- Matches between records (an AD to an aircraft, an NTSB case to a registration) are candidates. Check each AD's applicability (serial numbers, part numbers, configuration) before saying it applies, and cite AD numbers.
- NTSB's eventDate is the UTC date from 1982 on, so an evening event shows the next day: use ntsb_case.event_date_local.
- Owner and operator names are spelled as each record reports them: compare upper(name).
- Only the Federal Register PDF on govinfo.gov is the official text of an AD.

CITE every record by its page on OpenAirDocs. Add .md to any page for a Markdown copy to read:

  Airworthiness directive (AD)                       https://openairdocs.org/ad/<AD number>
  Registered aircraft                                https://openairdocs.org/aircraft/<N-number>
  Cancelled registration                             https://openairdocs.org/deregistered/<N-number>-<cancellation date>
  Aircraft model                                     https://openairdocs.org/model/<maker-model>
  Type certificate data sheet (TCDS)                 https://openairdocs.org/tcds/<number>
  Supplemental type certificate (STC)                https://openairdocs.org/stc/<number>
  Special airworthiness information bulletin (SAIB)  https://openairdocs.org/saib/<number>
  Advisory circular (AC)                             https://openairdocs.org/ac/<number>
  Service difficulty report                          https://openairdocs.org/sdr/<id>
  FAA accident or incident report                    https://openairdocs.org/incident/<report number>
  NTSB investigation                                 https://openairdocs.org/ntsb/<NTSB number>

Without SQL, read pages directly: https://openairdocs.org/aircraft/N333UM.md has an aircraft's registration, the ADs that may apply, and its NTSB and FAA reports. Search: https://openairdocs.org/search.md?q=fuel+selector. Every table and recipes: https://openairdocs.org/data/dictionary.md. Everything else: https://openairdocs.org/llms.txt.
Latest release2026-10-21Built October 21, 2026 · schema 0.10.0 · 73 files · 2.3 GB
The file most people wantRecommendedopenair.duckdb · 821 MB · DuckDBEvery table in one file, with every table and column described inside, each record’s page address, and views for an aircraft’s history and NTSB cases. Download it, or attach it over HTTPS and query without downloading.

Documentation · 2

Read these first.

FileSizeDownload
DATA_DICTIONARY.mdEvery table and column, with row counts and sort order.267 KBDownload
manifest.jsonRelease id, sources, row counts, sizes and the SHA-256 of every file.462 KBDownload

Databases · 3

Every table, ready to query. Most people want the DuckDB file: one file, described inside, that DuckDB can read over HTTPS. The SQLite files add full-text search, for offline use.

Query the DuckDB file without downloading it
duckdb -c "ATTACH 'https://openairdocs.org/data/latest/openair.duckdb' AS openair (READ_ONLY);
  SELECT ad_number, subject, effective_date
  FROM openair.faa_directive
  ORDER BY effective_date DESC LIMIT 10"
FileSizeSHA-256Download
openair.duckdbStart here. Every table in one file, with every table and column described, each record's page address, and views for an aircraft's history and NTSB cases. For DuckDB 1.2 or later; attach it over HTTPS or download it. No full-text indexes: search with the SQLite files.821 MBDownload
openair.sqlite.zst67 tables with 12 full-text indexes: everything except service difficulty reports. Compressed with zstd; unpacks to 3.7 GB openair.sqlite.663 MBDownload
openair-sdr.sqlite.zstService difficulty reports, with a full-text index. Attach it to openair.sqlite to join reports to aircraft. Compressed with zstd; unpacks to 1.6 GB openair-sdr.sqlite.298 MBDownload

Parquet · 68

One file per table. Query them over HTTPS without downloading, or load them into anything that reads Parquet.

Query a file without downloading it
duckdb -c "SELECT ad_number, subject, effective_date
  FROM 'https://openairdocs.org/data/latest/faa_directive.parquet'
  ORDER BY effective_date DESC LIMIT 10"
FileRowsSizeSHA-256Download
faa_directive.parquetOne row per FAA airworthiness directive (AD).20,326 rows6.1 MBDownload
faa_directive_section.parquetAD text split into sections: preamble sections and the AD's lettered paragraphs.285,501 rows29.9 MBDownload
faa_directive_product.parquetEach model an AD names, paired with its maker and type certificate where that can be told.159,851 rows1.0 MBDownload
faa_directive_relation.parquetLinks between ADs: from_ad_id supersedes or affects (revises, amends) to_ad_id.3,235 rows29 KBDownload
faa_proposed_directive.parquetProposed ADs: notices of proposed rulemaking (NPRMs), supplemental NPRMs and withdrawals.10,790 rows2.2 MBDownload
faa_saib.parquetFAA Special Airworthiness Information Bulletins: advisory safety information, not mandatory.1,338 rows1.4 MBDownload
faa_saib_product.parquetEach model a SAIB names, paired with its maker and type certificate the same way as faa_directive_product.15,603 rows177 KBDownload
faa_concern_sheet.parquetFAA airworthiness concern sheets (ACS): requests for information on a safety concern, issued before the FAA decides whether an AD is needed.95 rows93 KBDownload
faa_advisory_circular.parquetFAA advisory circulars: guidance on acceptable means of compliance, one row per version (revision or change) DRS holds.1,687 rows248 KBDownload
faa_advisory_circular_page.parquetThe text of each AC, one row per PDF page: the unit to search, quote and link to (open the mirrored PDF at #page=N).74,212 rows46.1 MBDownload
faa_directive_ac.parquetAdvisory circulars cited in the text of an AD, by AC family.361 rows5 KBDownload
faa_type_certificate.parquetFAA type certificate data sheets (TCDS), latest revision of each.2,257 rows116 KBDownload
faa_type_certificate_model.parquetModels listed on each type certificate data sheet.8,535 rows81 KBDownload
faa_stc.parquetFAA supplemental type certificates (STCs): approved design changes to aircraft, engines and propellers, one row per STC number.49,233 rows5.6 MBDownload
faa_stc_model.parquetEach model an STC applies to, paired with its make and type certificate data sheet as DRS gives them.368,690 rows1.4 MBDownload
faa_stc_file.parquetFiles of every STC record in DRS: the certificate PDF of each issue (current and historical) and its attachments, mostly approved model lists (AMLs).55,417 rows26.2 MBDownload
faa_directive_stc.parquetSTCs cited in the text of an AD.1,846 rows12 KBDownload
faa_aircraft_registration.parquetUS-registered aircraft from the FAA registry (MASTER), with the registered owner but not their street address.317,759 rows16.6 MBDownload
faa_aircraft_deregistration.parquetCancelled US aircraft registrations from the FAA registry (DEREG): registrations that expired, were cancelled after a sale, export or revocation, and so on, back to the 1920s.383,637 rows18.5 MBDownload
faa_aircraft_model.parquetFAA registry aircraft model codes (ACFTREF), matched to type certificate data sheets where possible.94,127 rows2.6 MBDownload
faa_engine_model.parquetFAA registry engine model codes (ENGINE), matched to engine type certificate data sheets where possible.4,752 rows116 KBDownload
faa_aircraft_model_directive.parquetCandidate ADs for each registry aircraft model code, matched by airframe model, maker and type certificate.355,197 rows422 KBDownload
faa_engine_model_directive.parquetCandidate ADs for each registry engine model code: the exact model, or the whole series when the registry gives only a series (O-320 SERIES).46,912 rows78 KBDownload
faa_aircraft_model_saib.parquetCandidate SAIBs for each registry aircraft model code, matched like faa_aircraft_model_directive.16,792 rows57 KBDownload
faa_engine_model_saib.parquetCandidate SAIBs for each registry engine model code, matched like faa_engine_model_directive.7,255 rows26 KBDownload
faa_incident_report.parquetFAA Accident/Incident Data System (AIDS) reports: accidents from 1973 and incidents from 1978 (and a few older accidents), one report per aircraft, with the FAA's narrative.234,247 rows33.2 MBDownload
faa_service_difficulty_report.parquetFAA Service Difficulty Reports (SDRs), 1995 onward: malfunctions, failures and defects reported by operators, repair stations and others.1,767,519 rows162 MBDownload
faa_jasc_code.parquetFAA Joint Aircraft System/Component (JASC) codes: the four-digit system codes in service difficulty reports (faa_service_difficulty_report.jasc_code) and airworthiness concern sheets (faa_concern_sheet.jasc_codes), with titles and the FAA's definition of what each covers.547 rows47 KBDownload
ntsb_case_detail.parquetNTSB aviation investigations: one row per case, every accident and incident NTSB holds from 1962 on, as the NTSB API returns it.180,553 rows7.1 MBDownload
ntsb_aircrafts.parquetAircraft in NTSB cases, one row per aircraft (the API's aircrafts list).182,992 rows7.3 MBDownload
ntsb_narratives.parquetNarratives of NTSB cases: probable cause, analysis and factual narrative, one row per aircraft.177,220 rows81.7 MBDownload
ntsb_findings.parquetFindings of NTSB investigations (2008 on): the coded finding, its hierarchy, and whether it is in the probable cause.73,255 rows989 KBDownload
ntsb_events.parquetThe sequence of events of each aircraft in NTSB cases (2008 on, and a phase for older cases), with NTSB's event codes.153,980 rows970 KBDownload
ntsb_occurrences.parquetOccurrences in NTSB investigations from 1982 to 2007 (the coding NTSB used before findings).137,910 rows680 KBDownload
ntsb_sequenceofevents.parquetThe coded sequence of events within each occurrence, 1982 to 2007: subject, modifier, person, cause or factor.264,151 rows2.0 MBDownload
ntsb_injuries.parquetInjury counts per aircraft in NTSB cases, by person category.93,934 rows773 KBDownload
ntsb_crew_and_occupants.parquetCrew and occupants of aircraft in NTSB cases (age, sex, injury, certificates, medical).96,791 rows848 KBDownload
ntsb_pilots_flight_time_matrix.parquetCrew members' flight hours by period (total, last 90 days...) and aircraft (all, this make...).1,301,007 rows3.0 MBDownload
ntsb_flight_time_summary.parquetWhether a crew member's flight times are estimated or incomplete.96,791 rows338 KBDownload
ntsb_engines.parquetEngines and propellers of aircraft in NTSB cases.178,505 rows1.2 MBDownload
ntsb_owner_operators.parquetOwner and operator of aircraft in NTSB cases, and the rules the flight was conducted under.95,969 rows2.7 MBDownload
ntsb_aircraft_accidents.parquetDamage, fire and explosion for each aircraft in an NTSB case.182,537 rows620 KBDownload
ntsb_airworthiness_certificates.parquetAirworthiness certificates of aircraft in NTSB cases.87,888 rows307 KBDownload
ntsb_airports.parquetAirports and runways involved in NTSB cases, per aircraft.190,415 rows1.8 MBDownload
ntsb_approaches.parquetApproaches flown by aircraft in NTSB cases.172,140 rows599 KBDownload
ntsb_itinerary.parquetDeparture and destination of aircraft in NTSB cases.95,514 rows1.3 MBDownload
ntsb_weather_conditions.parquetWeather at NTSB events, as the investigation recorded it.103,877 rows2.0 MBDownload
ntsb_weather_precipitations.parquetPrecipitation at NTSB events.13,158 rows53 KBDownload
ntsb_data_dictionary.parquetThe NTSB API's aviation data dictionary (GetAviationDataDictionary) as NTSB publishes it: a description of each field.343 rows11 KBDownload
ntsb_docket.parquetPublic dockets of NTSB aviation investigations, from the NTSB docket system (data.ntsb.gov/Docket): one row per docket in the docket search, with the docket page's summary and dates.25,649 rows1.7 MBDownload
ntsb_docket_item.parquetFiles in NTSB dockets: one row per item of each docket page, with its title, pages, type and a link to the file on data.ntsb.gov.192,398 rows9.0 MBDownload
ntsb_pre1982_first_half.parquetNTSB investigations from 1962 to 1981, the first half of each record (PRE1982.MDB tblFirstHalf, unchanged since 2003).87,039 rows6.1 MBDownload
ntsb_pre1982_second_half.parquetThe second half of each pre-1982 record (PRE1982.MDB tblSecondHalf), by RecNum: remarks, cause, weather, survival.87,039 rows4.4 MBDownload
ntsb_pre1982_occurrences.parquetOccurrences in pre-1982 records (PRE1982.MDB tblOccurrences).130,970 rows1.3 MBDownload
ntsb_pre1982_seq_of_events.parquetCauses and factors in pre-1982 records (PRE1982.MDB tblSeqOfEvents).355,681 rows2.8 MBDownload
ntsb_pre1982_codes.parquetThe codes of the pre-1982 records (PRE1982.MDB ct_Pre1982): Name is the column (or group of columns: CAUSE_FACTOR for CAUSE_FACTOR_1P...), Code the value, Meang its meaning.2,910 rows32 KBDownload
ntsb_access_events.parquetEvents (one per investigation) from 1982 on, as NTSB's Access files hold them.94,304 rows6.0 MBDownload
ntsb_access_admin.parquetRecord status and approval date of each event, from the Access files' NTSB_Admin table.94,304 rows1.1 MBDownload
ntsb_access_aircraft.parquetAircraft from NTSB's Access files, 1982 on.95,767 rows7.7 MBDownload
ntsb_access_engines.parquetEngines from NTSB's Access files, 1982 on.91,375 rows1.5 MBDownload
ntsb_access_flight_crew.parquetFlight crew from NTSB's Access files, 1982 on, including city and state of residence, which the API does not return.96,702 rows1.9 MBDownload
ntsb_access_data_dictionary.parquetNTSB's data dictionary for the Access files (eADMSPUB_DataDictionary, from avall.mdb): one row per column and code, with the code's meaning and the column's definition.4,574 rows117 KBDownload
geo_ntsb_case.parquetA point for each NTSB case that can be placed: NTSB's own coordinate when it checks out, else the airport NTSB names (moved by NTSB's distance and direction from it), else the named town.168,393 rows2.7 MBDownload
geo_faa_incident_report.parquetA point for each FAA incident report that can be placed: the linked NTSB case's site, else the named airport, else the named town.225,327 rows4.2 MBDownload
geo_faa_aircraft_registration.parquetA point for each registered aircraft's owner: the center of the owner's 5-digit ZIP area, else their city.311,126 rows4.8 MBDownload
geo_faa_aircraft_deregistration.parquetA point for each cancelled registration's last owner: the center of the 5-digit ZIP of their mailing address, else their city.227,720 rows4.2 MBDownload
source_document.parquetEvery upstream document the release was built from: Federal Register documents and FAA DRS records.147,783 rows8.6 MBDownload
source_file.parquetEvery mirrored source file (PDF, XML, HTML, plain text), stored once under its SHA-256.152,904 rows19.6 MBDownload