U.S. aircraft data for developers

FAA Aircraft Registry API

Look up current U.S. aircraft by N-number or ICAO24, inspect observed registration history and changes, and avoid maintaining FAA source files. Free includes 1,000 requests/month with no payment method.
API contract preview
Request
GET/v1/aircraft/n-number/{nNumber}/status
Response fields
state
registered, reserved, deregistered, or unknown
availability
not_determined, never an FAA assignment decision
observedAt
Observation timestamp from reviewed source data
source
FAA snapshot provenance
Schematic, not a live API response. Live status requires your own API key.
View API docs โ†’Explore the hosted aircraft demo โ†’
  • Reviewed FAA registry records
  • Observed registration history
  • Paid watch lists and signed webhooks

Try the data: free N-number lookup

Look up one current U.S. aircraft registration

Enter an exact N-number to preview the same reviewed public read model behind the API. No account or API key is required for this web demo.

The demo deliberately omits registrant names, street addresses, postal codes, aliases, raw provenance hashes, and historical rows. It does not provide owner search, bulk enumeration, or pagination.

No tail number handy? This checks the same live FAA-backed demo; a registration may change or no longer be present.

Quickstart

1

Create or reuse your Grizzly Bulls account

The same account API key can authenticate aircraft requests. New users are sent directly to the Developer API section after signup.

Create a free account โ†’
2

Generate one API key

Open My Account โ†’ Developer API and generate a key. You can issue least-privilege Aircraft scopes when a credential should only read, query, or inspect usage.

3

Make your first request

Keep the key in your server environment, then copy the exact N-number lookup below. If you need an N-number first, expand the optional discovery example.

Set your API key locally (Bash/zsh)export GRIZZLY_BULLS_API_KEY="your-key"

Need an N-number? Try a bounded discovery request

Find a small set of current registry records

Bash/zsh. Replace the placeholder with your own API key. This California-filtered read returns reviewed records, not an N-number availability decision.

export GRIZZLY_BULLS_API_KEY="your-key"
curl --fail-with-body \
  -H "Authorization: Bearer $GRIZZLY_BULLS_API_KEY" \
  "https://api.grizzlybulls.com/v1/aircraft?state=CA&limit=3"

Swipe the code sideways to see the full request.

Copy-paste an exact N-number request

Use the same Bearer API key from your Grizzly Bulls account in server-side code. Replace N_NUMBER with a valid U.S. N-number. Browser CORS is not enabled for the machine API, so the JavaScript example is for Node.js 18+ or another server runtime.

cURL request

Bash or zsh. Set GRIZZLY_BULLS_API_KEY in your environment before running.

curl --fail-with-body \
  -H "Authorization: Bearer $GRIZZLY_BULLS_API_KEY" \
  "https://api.grizzlybulls.com/v1/aircraft/N_NUMBER"

Swipe the code sideways to see the full request.

When a managed registry API earns its cost

Already have a reliable FAA lookup? You may not need to replace it. The more useful question is whether you are building a new data workflow or need to maintain registration-change evidence for aircraft you already track.

Free history and changes

Add evidence to an existing integration

Keep your current lookup and inspect bounded observed history or privacy-safe changes. Free includes reads, not outbound notifications.
Implementation examples

Review a known fleet's observed history offline first, or make bounded reads with a Free key.

Check a known fleet for identity drift. Compare up to ten supplied N-numbers against current FAA manufacturer, model, and serial fields, plus a bounded observed-change sample. Conflicts require manual review. No fleet records are changed.

Plans & pricing

Free

$0 / month

Prototype against the live read API with no payment method.
  • 1,000 requests/month
  • 30 requests/minute
  • Lookup, flexible query, lifecycle, changes, history, and FAA document-index reads
  • No saved reports, exports, or outbound watch delivery on Free

Business

$199 / month

For higher-volume commercial applications that need larger retained workflows.
  • 250,000 requests/month ยท 600/minute
  • 250 saved reports ยท 1,000 export runs/month
  • CSV, JSON, and XLSX exports up to 25,000 rows / 64 MiB
  • 250 named watch lists with alert history and signed webhooks
  • Completed exports retained for 72 hours

Sign in or create an account before paid checkout. Already subscribed? Manage your Aircraft plan in Account.

Built for data workflows, not generic aviation content

Aviation software & internal tools

Validate identifiers, query reviewed registry fields, and integrate against a stable contract instead of parsing and joining raw FAA files yourself.

Fleet, brokerage & asset workflows

Use bounded aircraft, registration, document-index, report, and export workflows for operational data tasks without owner-name reverse search or title inference.

Research & change monitoring

Combine retained observations, privacy-safe changes, named watch lists, alert history, and signed delivery when a workflow needs more than a one-time snapshot.

From FAA bulk files to an application-ready API

The FAA remains the upstream authority. Grizzly Bulls operates the ingestion, validation, normalization, history, authentication, quota, and API-contract layers that application developers would otherwise need to build around the FAA releasable aircraft database.

  1. FAA source snapshot

    Daily FAA releasable files are retrieved, checked, and normalized.

  2. Retained observations

    Accepted snapshots preserve what was observed about reviewed registrations.

  3. Changes and notifications

    Privacy-safe differences are available on Free; paid plans add watches and signed delivery.

These are observation stages, not a historical event timeline. They do not prove ownership transfers, legal effective dates, or N-number availability.

Need a filtered CSV, JSON, or XLSX extract? Follow the registry export API guide โ†’ The Free plan can preview the same filter before a paid export run.

Retained history records what Grizzly Bulls observed in accepted source snapshots. It is not presented as a complete legal ownership history or as proof of the exact date an underlying real-world change occurred. For an example of the underlying source tradeoffs, see the Python FAA download and update guide.

Developer workflows

Choose a capability and expand its details for example requests, limitations, and relevant guides.

Current reads

Flexible current-registry queries

Filter, project, sort and page reviewed FAA records.

Details & examples

Discover supported columns, then combine reviewed exact, prefix, contains, set, and manufacture-year range filters with allowlisted projection, sorting, and opaque cursor pagination. At least one filter is always required.

curl --fail-with-body \
  -H "Authorization: Bearer $GRIZZLY_BULLS_API_KEY" \
  "https://api.grizzlybulls.com/v1/aircraft/query?filter=manufacturer%3Acontains%3ACESSNA&columns=nNumber%2Cmanufacturer%2Cmodel%2CmanufactureYear&sort=manufacturer%3Aasc&limit=3"
Paid workflows

Saved reports & asynchronous exports

Save report definitions and export bounded results.

Details & examples

Paid plans can retain normalized current-registry or observed-change report definitions and run bounded CSV, JSON, and XLSX exports asynchronously. Completed artifacts are private, integrity-checked, and expire on the plan's retention window.

Paid monitoring

Named watch lists & signed webhooks

Watch N-numbers and deliver signed change notifications.

Details & examples

Developer and Business can monitor named groups of exact N-numbers, retain alert history and read state, and choose none, realtime, daily, or weekly delivery. Outbound requests use signed webhook delivery rather than a second change-event model.

Read the changes and webhooks guide โ†’

Before upgrading, test a signed synthetic notification locally without an account or API key. Real watch delivery requires a paid plan.

Source evidence

FAA document index

Inspect bounded FAA document-index metadata for an N-number.

Details & examples

Retrieve bounded FAA document-index evidence for one N-number, including reviewed document types and receipt, processing, and correction dates. An indexed document is not presented as proof of beneficial ownership, title status, lien priority, or transfer.

Identity

Exact ICAO24 / Mode S lookup

Resolve an ICAO24 / Mode S address to a current registry record.

Details & examples

Resolve one six-digit ICAO24 address to its matching current FAA registration. This is registry identity resolution, not live ADS-B position data.

curl --fail-with-body \
  -H "Authorization: Bearer $GRIZZLY_BULLS_API_KEY" \
  "https://api.grizzlybulls.com/v1/aircraft/icao24/A12239"
Read the ICAO24 lookup API guide โ†’
Status evidence

N-number lifecycle status

Inspect registered, reserved, deregistered and unknown state evidence.

Details & examples

Resolve reviewed registered, reserved, deregistered, or unknown evidence without treating an unknown result as an availability determination.

curl --fail-with-body \
  -H "Authorization: Bearer $GRIZZLY_BULLS_API_KEY" \
  "https://api.grizzlybulls.com/v1/aircraft/n-number/N172SP/status"
Read the N-number status API guide โ†’
Change evidence

Recent observed changes

Read privacy-safe field differences by observation time.

Details & examples

Query a bounded observation-time change feed with reviewed privacy-safe field diffs and opaque cursor pagination.

curl --fail-with-body \
  -H "Authorization: Bearer $GRIZZLY_BULLS_API_KEY" \
  "https://api.grizzlybulls.com/v1/aircraft/changes?since=2026-09-29T00%3A00%3A00.000Z&until=2026-09-30T00%3A00%3A00.000Z&limit=20"
Read the changes and webhooks guide โ†’
History

Retained registration history

Inspect retained versions and observed changes for an N-number.

Details & examples

Retrieve bounded historical versions and PII-free change events observed by Grizzly Bulls. Observation boundaries are not represented as FAA legal effective dates.

curl --fail-with-body \
  -H "Authorization: Bearer $GRIZZLY_BULLS_API_KEY" \
  "https://api.grizzlybulls.com/v1/aircraft/N_NUMBER/history"
Read the registration history API guide โ†’
Developer tools

Least-privilege keys & usage visibility

Scope credentials and inspect usage against your plan.

Details & examples

Shared Grizzly Bulls API keys can be scoped to Aircraft read, query, and usage operations. The authenticated usage endpoint reports the effective plan, current monthly request count, remaining quota, reset time, and effective Aircraft scopes without consuming Aircraft monthly data-plane quota.

API contract

Explore contract and source detailsAuthentication, OpenAPI, Postman, data freshness, and privacy

Versioned JSON over HTTPS

The canonical server base is https://api.grizzlybulls.com/v1. Aircraft routes use Bearer authentication, bounded request shapes, stable error envelopes, and explicit plan/rate/quota headers where the operation is metered.

Open the OpenAPI 3.1 contract โ†’

Want to explore the requests in Postman? Open the public Aircraft API collection โ†’ Use your Grizzly Bulls API key for authenticated requests.

FAA source, Grizzly Bulls normalization

Automated source checks run nightly after the FAA's daily registry refresh. Each accepted snapshot is validated before promotion and normalized into a provider-independent public contract. Response provenance identifies the source provider, retrieval time, source-contract version, source URL, and archive hash; current publication remains governed by the latest releasable source state.

Privacy-aware history

Historical retention is not used to restore owner or address fields that the current public FAA source no longer releases. Owner-name reverse search, bulk owner enumeration, and unfiltered registry walking are not supported.

Errors, limits & support

Read error and integration guidanceRequest validation, rate limits, retries, and support

Fix request and authentication errors first

400 invalid_request means an identifier, filter, cursor, report, or pagination shape is invalid. 401 unauthenticated means the Bearer key is missing or no longer valid. 403 forbidden can indicate that a scoped key lacks the required Aircraft operation.

Respect rate and quota headers

Successful metered requests return X-Aircraft-Plan, X-Aircraft-Rate-Limit, X-Aircraft-Quota-Limit, X-Aircraft-Quota-Remaining, and X-Aircraft-Quota-Reset. On 429 rate_limited, wait for Retry-After before retrying.

Handle temporary service failures

503 service_unavailable is temporary. Use bounded exponential backoff. A valid request may reserve monthly usage before a downstream aircraft read fails, so repeated immediate retries can consume additional quota.

Need help?

Contact Grizzly Bulls with the endpoint path, UTC time, HTTP status, and error code. Never include your API key or non-public registry information in a support message.

Technical guides for the data model

Use the task pages when you are integrating an endpoint. These deeper guides explain the source, identifier, and temporal decisions behind the API contract.

Browse technical articlesFAA source processing, identifiers, and observed history

Update FAA registry data in Python

Read the FAA's comma-delimited MASTER file from its ZIP archive, compare two observations by N-number, and choose between a local pipeline and a maintained API.

Read the runnable Python guide โ†’

N-number vs. Mode S / ICAO24

How registration identity, surveillance addresses, and physical-airframe identity relate without becoming interchangeable keys.

Read the identifier guide โ†’

What daily registry history can prove

How observed intervals, change events, effective-date uncertainty, and current-withholding suppression shape historical use.

Read the history evidence guide โ†’

Start free, then scale without changing keys

Create one account key, make a bounded registry request, and upgrade to Developer or Business when your integration needs saved reports, exports, or watch automation.