{
  "openapi": "3.0.1",
  "info": {
    "title": "FAA Airmen Certification Scraper - Pilot & Mechanic Leads",
    "description": "Scrape the FAA airman certificate database: pilots (ATP/commercial/private/student), CFIs, drone pilots & A&P mechanics — with full mailing address, certificate level, ratings, type ratings & medical class. Filter by state, category & rating. Aviation B2B leads + monitoring.",
    "version": "0.1",
    "x-build-id": "Ml4V42NwURs49AVyj"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapesage~faa-airmen-certification-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapesage-faa-airmen-certification-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/scrapesage~faa-airmen-certification-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapesage-faa-airmen-certification-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/scrapesage~faa-airmen-certification-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapesage-faa-airmen-certification-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "categories": {
            "title": "Airman categories",
            "type": "array",
            "description": "Which certificate holders to include. Each category maps to FAA certificate types. <b>Pilots</b> covers all pilot levels (use the level filter below to narrow). Pick at least one. The actor reads only the file(s) it needs for the categories you select.",
            "items": {
              "type": "string",
              "enum": [
                "pilots",
                "flightInstructors",
                "remotePilots",
                "mechanics",
                "repairmen",
                "flightEngineers",
                "groundInstructors",
                "dispatchers",
                "parachuteRiggers",
                "controlTowerOperators",
                "flightNavigators",
                "authorizedInstructors"
              ],
              "enumTitles": [
                "Pilots (ATP / Commercial / Private / Sport / Student)",
                "Flight Instructors (CFI)",
                "Remote (drone) Pilots — Part 107",
                "Mechanics (A&P)",
                "Repairmen",
                "Flight Engineers",
                "Ground Instructors",
                "Aircraft Dispatchers",
                "Parachute Riggers",
                "Control Tower Operators",
                "Flight Navigators",
                "Authorized Aircraft Instructors"
              ]
            },
            "default": [
              "pilots",
              "mechanics"
            ]
          },
          "pilotLevels": {
            "title": "Pilot levels (for the Pilots category)",
            "type": "array",
            "description": "Narrow the Pilots category to specific certificate levels. Leave empty for all pilot levels. <b>ATP</b> + type ratings ≈ airline/jet pilots; <b>Student</b> ≈ flight-school upsell targets.",
            "items": {
              "type": "string",
              "enum": [
                "A",
                "C",
                "P",
                "V",
                "T",
                "S"
              ],
              "enumTitles": [
                "Airline Transport Pilot (ATP)",
                "Commercial Pilot",
                "Private Pilot",
                "Recreational Pilot",
                "Sport Pilot",
                "Student Pilot"
              ]
            }
          },
          "states": {
            "title": "States",
            "type": "array",
            "description": "Filter by the airman's state — two-letter USPS codes, e.g. <code>CA</code>, <code>TX</code>, <code>FL</code>, <code>NY</code>. Leave empty for all states & territories.",
            "items": {
              "type": "string"
            }
          },
          "cities": {
            "title": "Cities",
            "type": "array",
            "description": "Filter by city (case-insensitive, exact city name), e.g. <code>Dallas</code>, <code>Miami</code>, <code>Scottsdale</code>.",
            "items": {
              "type": "string"
            }
          },
          "zipCodes": {
            "title": "ZIP codes (prefix)",
            "type": "array",
            "description": "Filter by ZIP — full ZIP (<code>75201</code>) or a prefix (<code>752</code> matches all 752xx).",
            "items": {
              "type": "string"
            }
          },
          "regions": {
            "title": "FAA regions",
            "type": "array",
            "description": "Advanced: filter by FAA region code. Most users should use states/cities instead.",
            "items": {
              "type": "string",
              "enum": [
                "SO",
                "EA",
                "CE",
                "GL",
                "SW",
                "NM",
                "WP",
                "NE",
                "AL"
              ],
              "enumTitles": [
                "Southern",
                "Eastern",
                "Central",
                "Great Lakes",
                "Southwest",
                "Northwest Mountain",
                "Western-Pacific",
                "New England",
                "Alaskan"
              ]
            }
          },
          "usOnly": {
            "title": "U.S.-based airmen only",
            "type": "boolean",
            "description": "Only include airmen with a U.S. mailing address (excludes foreign-resident certificate holders).",
            "default": false
          },
          "nameContains": {
            "title": "Name contains",
            "type": "string",
            "description": "Only return airmen whose name contains this text (case-insensitive)."
          },
          "airmanIds": {
            "title": "Airman unique IDs",
            "type": "array",
            "description": "Look up specific airmen by their FAA unique ID (e.g. <code>A1234567</code>). Leave empty to browse by the filters above.",
            "items": {
              "type": "string"
            }
          },
          "medicalClasses": {
            "title": "Medical class",
            "type": "array",
            "description": "Filter pilots by airman medical class. <b>First Class</b> is required for airline (ATP) duty — a strong signal of an active professional pilot.",
            "items": {
              "type": "string",
              "enum": [
                "1",
                "2",
                "3"
              ],
              "enumTitles": [
                "First Class (airline)",
                "Second Class (commercial)",
                "Third Class (private)"
              ]
            }
          },
          "medicalCurrentOnly": {
            "title": "Current medical only",
            "type": "boolean",
            "description": "Only airmen whose medical certificate has not yet expired — i.e. currently flight-active pilots.",
            "default": false
          },
          "instrumentRatedOnly": {
            "title": "Instrument-rated only",
            "type": "boolean",
            "description": "Only airmen holding an instrument rating (IFR-qualified).",
            "default": false
          },
          "multiEngineRatedOnly": {
            "title": "Multi-engine rated only",
            "type": "boolean",
            "description": "Only airmen with a multi-engine rating (AMEL / AMES) — a proxy for advanced / professional pilots.",
            "default": false
          },
          "rotorcraftRatedOnly": {
            "title": "Rotorcraft (helicopter) rated only",
            "type": "boolean",
            "description": "Only airmen with a helicopter or gyroplane rating.",
            "default": false
          },
          "typeRatedOnly": {
            "title": "Type-rated only (jet / large aircraft)",
            "type": "boolean",
            "description": "Only pilots who hold one or more aircraft <b>type ratings</b> (e.g. B-737, LR-JET) — required for turbojet & large aircraft. The fastest way to isolate airline / corporate-jet pilots.",
            "default": false
          },
          "apMechanicsOnly": {
            "title": "A&P mechanics only",
            "type": "boolean",
            "description": "Only mechanics holding both Airframe and Powerplant ratings (A&P).",
            "default": false
          },
          "inspectionAuthorizationOnly": {
            "title": "Inspection Authorization (IA) only",
            "type": "boolean",
            "description": "Only mechanics who additionally hold Inspection Authorization — the senior maintenance credential.",
            "default": false
          },
          "ratingKeywords": {
            "title": "Rating keywords",
            "type": "array",
            "description": "Free-text match against an airman's rating descriptions and aircraft type ratings (case-insensitive contains), e.g. <code>helicopter</code>, <code>glider</code>, <code>B-737</code>, <code>gulfstream</code>.",
            "items": {
              "type": "string"
            }
          },
          "minLeadScore": {
            "title": "Minimum lead score",
            "type": "integer",
            "description": "Only return airmen with a lead score (0–100) at or above this value — quick way to keep just the highest-value leads."
          },
          "maxResults": {
            "title": "Max results",
            "minimum": 1,
            "type": "integer",
            "description": "Maximum number of airman records to return in this run.",
            "default": 1000
          },
          "sortBy": {
            "title": "Sort order",
            "enum": [
              "leadScore",
              "recentMedical",
              "source"
            ],
            "type": "string",
            "description": "<b>Lead score</b> = highest-value airmen first (recommended). <b>Most recent medical</b> = most recently active pilots first. <b>Source order</b> = fastest on large limits.",
            "default": "leadScore"
          },
          "monitorMode": {
            "title": "Monitoring mode — only new / changed airmen",
            "type": "boolean",
            "description": "Remember which airmen were already returned (in a named key-value store) and emit ONLY records that are new or changed since the last run — each tagged <code>monitorEvent: \"new\"</code>. The FAA refreshes this database monthly; run on a Schedule to capture newly-certificated airmen and medical renewals as fresh leads. Works alongside Apify Schedules (the schedule starts the run; monitoring decides what's new).",
            "default": false
          },
          "monitorKey": {
            "title": "Monitor key",
            "type": "string",
            "description": "Names the memory used by monitoring mode. Use a distinct key per saved watch (e.g. per state or category) so different monitors don't share state.",
            "default": "default"
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Optional proxy. The FAA database is downloaded directly and needs no proxy — leave this off for the fastest download. Enable Apify Proxy only if your network requires it.",
            "default": {
              "useApifyProxy": false
            }
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}