Aircraft Intelligence API

Query, monitor, and export normalized U.S. FAA aircraft registry data through a versioned API without operating the FAA bulk-data pipeline yourself.
Start free, upgrade when you need reports, exports, and watch automation

Every authenticated Grizzly Bulls account starts on Free with 1,000 requests per month and 30 requests per minute. Developer and Business add paid workflow capacity without changing the account API key.

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.

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
Create free API key

Developer

$49 / month

For production prototypes and smaller integrations that need repeatable workflows.

  • 25,000 requests/month ยท 120/minute
  • 25 saved reports ยท 100 export runs/month
  • CSV, JSON, and XLSX exports up to 5,000 rows / 16 MiB
  • 25 named watch lists with alert history and signed webhooks
  • Completed exports retained for 24 hours

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.

Official source

FAA releasable bulk database

  • Downloadable source files published for public registry access
  • Multiple records and reference files must be parsed and joined correctly
  • Your application owns acquisition, validation, normalization, and refresh logic
  • Historical snapshots, changes, auth, quotas, exports, and alerts are your responsibility
Managed product

Grizzly Bulls Aircraft Intelligence API

  • Nightly source checks after the FAA's daily registry refresh
  • Validated, normalized, provider-independent JSON over HTTPS
  • Flexible query, exact lookup, lifecycle, changes, retained history, reports, exports, watch lists, and FAA document-index evidence
  • Retrieval-time provenance, least-privilege key scopes, quotas, and stable error semantics

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.

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
curl --fail-with-body \
  -H "Authorization: Bearer $GRIZZLY_BULLS_API_KEY" \
  "https://api.grizzlybulls.com/v1/aircraft/N_NUMBER"
Python 3
import json
import os
import urllib.request

request = urllib.request.Request(
    "https://api.grizzlybulls.com/v1/aircraft/N_NUMBER",
    headers={"Authorization": f"Bearer {os.environ['GRIZZLY_BULLS_API_KEY']}"},
)

with urllib.request.urlopen(request) as response:
    aircraft = json.load(response)

print(aircraft["data"]["registration"]["nNumber"])
print(aircraft["data"]["aircraft"]["manufacturer"])
print(aircraft["data"]["aircraft"]["model"])
JavaScript ยท Node.js 18+
const response = await fetch(
  "https://api.grizzlybulls.com/v1/aircraft/N_NUMBER",
  {
    headers: {
      Authorization: "Bearer " + process.env.GRIZZLY_BULLS_API_KEY,
    },
  },
);

if (!response.ok) {
  throw new Error("Aircraft API request failed: " + response.status);
}

const { data } = await response.json();
console.log(data.registration.nNumber, data.aircraft.manufacturer, data.aircraft.model);

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

Put the key in an environment variable, then run a bounded state search. The response includes aircraft N-numbers you can use for exact lookup or history.

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

Developer workflows

Flexible current-registry queries

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"

Saved reports & asynchronous exports

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.

Named watch lists & signed webhooks

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 โ†’

FAA document index

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.

Exact N-number lookup

Retrieve the current reviewed registration record, aircraft attributes, currently releasable registrant fields, source snapshot information, and a compact history summary.

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

Exact ICAO24 / Mode S lookup

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"

N-number lifecycle status

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 โ†’

Recent observed changes

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 โ†’

Retained registration history

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 โ†’

Least-privilege keys & usage visibility

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

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 โ†’

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

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.

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.