Aircraft Registration Changes API & Webhooks

Read bounded, privacy-safe changes observed in the U.S. FAA registry, then move from polling to signed delivery when exact N-numbers matter to your product.
Stop downloading yesterday's FAA archive just to discover what changed

GET https://api.grizzlybulls.com/v1/aircraft/changes exposes reviewed observation-time events and privacy-safe diffs over a bounded window. Free can evaluate the read feed. Developer and Business add retained watch workflows and signed outbound delivery for exact N-numbers.

Query observed registry changes

Supply explicit since and until timestamps. Windows are bounded, results use opaque cursor pagination, and an optional reviewed event type can narrow the feed. These are changes Grizzly Bulls observed between accepted FAA snapshots, not claims about the exact legal effective time of an underlying real-world event.

cURL
curl --fail-with-body \
  -H "Authorization: Bearer $GRIZZLY_BULLS_API_KEY" \
  "https://api.grizzlybulls.com/v1/aircraft/changes?since=2026-10-12T00%3A00%3A00.000Z&until=2026-10-13T00%3A00%3A00.000Z&limit=25"
Python 3
import json
import os
import urllib.parse
import urllib.request

query = urllib.parse.urlencode({
    "since": "2026-10-12T00:00:00.000Z",
    "until": "2026-10-13T00:00:00.000Z",
    "limit": 25,
})
request = urllib.request.Request(
    f"https://api.grizzlybulls.com/v1/aircraft/changes?{query}",
    headers={"Authorization": f"Bearer {os.environ['GRIZZLY_BULLS_API_KEY']}"},
)

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

for item in changes["data"]:
    print(item["event"]["nNumber"], item["event"]["eventType"] )

What can appear in the change feed

Registration state

Registration added or removed, status changes, and other reviewed registration-record changes can appear as explicit event types.

Aircraft assignment

Changes to the aircraft assignment behind an N-number are represented separately from a generic record update.

Reviewed field diffs

Diffs are limited to the public change contract, including fields such as aircraft/model assignment, manufacture year, status, Mode S code, and reviewed certificate/activity dates.

Privacy transitions

Registrant changes and PII withholding/release can be represented as event semantics without turning the change feed into an owner-history reconstruction service.

Move from polling to named watches

When your application cares about a known set of aircraft, paid watch lists reuse the same reviewed change-event authority. A watch can contain exact N-numbers, select event types, retain alert/read state, and deliver matching realtime events to an HTTPS endpoint with a signing secret returned when the watch is created.

curl --fail-with-body \
  -X POST \
  -H "Authorization: Bearer $GRIZZLY_BULLS_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
    "name": "Fleet registrations",
    "nNumbers": ["N172SP", "N12345"],
    "endpointUrl": "https://example.com/webhooks/aircraft",
    "eventTypes": ["registration_record_changed", "status_changed"],
    "frequency": "realtime"
  }' \
  "https://api.grizzlybulls.com/v1/aircraft/watch-lists"
Developer

$49/month

Up to 25 watched-aircraft memberships across named lists, plus alert history and signed webhooks. Use it when a small production integration should react to exact aircraft changes automatically.

Business

$199/month

Up to 250 watched-aircraft memberships across named lists for higher-volume monitored workflows. The same account key and public change semantics continue across the upgrade.

Free currently has no watch capacity. You can evaluate the change feed on Free before deciding whether server-to-server delivery removes enough polling and diffing work to justify a paid plan.

Designed for automation without inventing certainty

Observation time stays explicit

A change event records when Grizzly Bulls observed a difference between accepted source states. Source-reported effective dates remain separate when the FAA provides them.

Current privacy policy governs history

The public diff model is intentionally PII-safe. Historical retention is not used to restore registrant details that the current FAA public source withholds.

Webhook delivery is hardened

Outbound delivery is HTTPS-only, signed, retry-bounded, redirect-free, and constrained by reviewed network-safety checks rather than accepting arbitrary callback behavior.

Need current/reserved/deregistered state?

Use the lifecycle resolver when the job is determining which reviewed FAA evidence currently applies to one N-number.

Read the N-number status guide →

Need the current record?

Use exact N-number lookup when you want normalized aircraft, registration, currently releasable registrant, source, and history-summary fields.

Read the exact lookup guide →

Evaluate the change feed before you pay for automation

Create a Free key, query a bounded change window, then upgrade only when named watches and signed delivery replace work your application would otherwise own.