Docs / FAA drone data
FAA Drone Data API (Part 107 waivers, BVLOS, FRIA sites)
Every FAA Part 107 waiver in one dataset, in effect or upcoming, with status (company, responsible person, waiver number, waived rules such as BVLOS 107.31 and over-people 107.39, effective-from and expiration dates, link to the signed PDF), plus all FAA-Recognized Identification Areas (FRIA) with location.
Run it on Apify ↗ API tab ↗ Compare alternatives
Facts on this page were checked against the live Apify listing on 2026-10-22. The Apify Store page is the source of truth for price.
Who it is for
Drone insurance and hardware sales, drone-show / inspection / delivery market research, counter-UAS startups, investors, journalists and AI agents.
Pricing (pay per event)
| Event | Charged | Price (USD) |
|---|---|---|
record | per record returned | $0.002 |
apify-actor-start | per run | $0.00005 |
The full active waiver list (~2,200 records) costs about $4.50. No subscription. Paid Apify plans get Store tier discounts automatically, and you can set a maximum total charge per run.
Data sources
Update cadence: Read live from FAA at run time. Dates are exactly as FAA publishes them (FAA's "Date of Issuance" is the effective-from date, often in the future; see status).
Coverage: All active Part 107 waivers (~2,200 records) and all FRIA sites.
Inputs
| Field | Type | Default | What it does |
|---|---|---|---|
datasets | array | ["waivers"] | Which official FAA datasets to return. |
issuedAfter | string | | YYYY-MM-DD. Waivers: effectiveFrom date. FRIA: start date. Empty = all. |
regulations | array | | Waived Part 107 sections to keep, e.g. ["107.31"] (BVLOS), ["107.39"] (over people), ["107.29"] (night), ["107.51(b)"] (altitude). Empty = all. |
keywords | array | | Match company/person (waivers) or site/organization/city (FRIA). |
states | array | | Two-letter states for FRIA sites. Empty = all. |
activeOnly | boolean | true | Skip expired waivers/sites. |
maxItems | integer | 100 | Maximum records; each is one charged result ($0.002). Use 10-50 for a quick answer. |
onlyNew | boolean | false | Remember results across runs (per account) and return only items not seen before. Ideal for scheduled runs: you pay only for new records. |
webhookUrl | string | | Optional. POSTs the new items as JSON with a 'text'/'content' summary (Slack, Discord, Zapier, Make, n8n compatible). |
Output fields
dataset, waiverNumber, companyName, responsiblePerson, waivedRegulations[], issueDate, expirationDate, active, documentUrl; FRIA: organization, address, dates, coordinates.
Example input
{
"datasets": ["waivers"],
"regulations": ["107.31"],
"issuedAfter": "2026-01-01",
"maxItems": 25
}
Example output row
{ "dataset": "part107_waiver", "waiverNumber": "107W-2026-02528", "companyName": "Sky Elements LLC", "responsiblePerson": "Preston Ward",
"waivedRegulations": ["107.51(b)"], "issueDate": "2026-12-05", "expirationDate": "2026-12-31", "active": true,
"documentUrl": "https://www.faa.gov/sites/faa.gov/files/107W-2026-02528-Preston-Ward-CoW.pdf" }
Call it from code or an AI agent
REST (one call, returns JSON rows):
curl -X POST "https://api.apify.com/v2/acts/johto.data~faa-drone-data/run-sync-get-dataset-items" \
-H "Authorization: Bearer $APIFY_TOKEN" -H "Content-Type: application/json" \
-d '{"datasets":["waivers"],"regulations":["107.31"],"issuedAfter":"2026-01-01","maxItems":25}'
Python: ApifyClient(token).actor("johto.data/faa-drone-data").call(run_input={...})
MCP (Claude, Cursor, any MCP client): https://mcp.apify.com/?tools=johto.data/faa-drone-data
Limits and notes
- Not an FAA service; data is read from FAA's public pages and datasets.
FAQ
Who holds FAA BVLOS waivers?
Filter regulations to ["107.31"] to get every BVLOS waiver holder, in effect or upcoming, with company, responsible person and the signed PDF.
Is there an FAA bulk download of Part 107 waivers?
FAA publishes a searchable waivers-issued page with PDF links. This Actor turns it into structured JSON.
Apify Store listing: https://apify.com/johto.data/faa-drone-data. Questions: [email protected].