{
  "openapi": "3.0.1",
  "info": {
    "title": "jsfirm Aviation Jobs & Employers Scraper: Pilot & Engineer Jobs",
    "description": "Scrape aviation job listings and the employer directory from jsfirm.com as JSON. Filter flight ops, maintenance and engineering, and ground roles by location, employer, and posting window. Employer profiles add website, address, job count, and aircraft models. $1.20 per 1,000 records.",
    "version": "0.1",
    "x-build-id": "1KpbtrcgL6Q2Qr9Ao"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/getascraper~jsfirm-aviation-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-getascraper-jsfirm-aviation-jobs-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/getascraper~jsfirm-aviation-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-getascraper-jsfirm-aviation-jobs-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/getascraper~jsfirm-aviation-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-getascraper-jsfirm-aviation-jobs-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": {
          "dataType": {
            "title": "Collect",
            "enum": [
              "jobs",
              "employers"
            ],
            "type": "string",
            "description": "Job listings returns one record per open role. Employer directory returns one record per company, optionally with its profile details.",
            "default": "jobs"
          },
          "keyword": {
            "title": "Keyword",
            "type": "string",
            "description": "Free-text search, matched the same way as the site's own search box. Try a role such as 'Captain' or 'A&P mechanic', or a company name. Leave empty to include everything."
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "A city, state, or region, such as 'Texas' or 'Dallas'. Matched the same way as the site's location search. Leave empty for all locations."
          },
          "company": {
            "title": "Employer name (jobs only)",
            "type": "string",
            "description": "Limit job listings to one employer by name, such as 'Air Methods'. Ignored in employer mode."
          },
          "category": {
            "title": "Job category (jobs only)",
            "enum": [
              "",
              "Business Operations",
              "Flight Operations",
              "Ground & Logistics",
              "Learning & Development",
              "Maintenance & Engineering"
            ],
            "type": "string",
            "description": "Limit job listings to one of the site's job categories. Leave on 'Any category' to include all of them. Ignored in employer mode.",
            "default": ""
          },
          "employmentType": {
            "title": "Employment type (jobs only)",
            "enum": [
              "all",
              "permanent",
              "contractor"
            ],
            "type": "string",
            "description": "Permanent or contract roles only, or both. Ignored in employer mode.",
            "default": "all"
          },
          "postedWithin": {
            "title": "Posted within (jobs only)",
            "enum": [
              "",
              "7",
              "30",
              "90"
            ],
            "type": "string",
            "description": "Keep only jobs posted within this many days. Leave on 'Any time' to include older postings. Ignored in employer mode.",
            "default": ""
          },
          "excludeKeyword": {
            "title": "Exclude keyword (jobs only)",
            "type": "string",
            "description": "Drop job listings that contain this word or phrase, such as 'helicopter' to skip rotor-wing roles. Ignored in employer mode."
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Maximum number of records to save in one run. The default of 20 keeps a first run quick. Raise it for larger pulls; large values take proportionally longer.",
            "default": 20
          },
          "sort": {
            "title": "Sort order (jobs only)",
            "enum": [
              "posted_desc",
              "updated_desc",
              "posted_asc",
              "title_asc"
            ],
            "type": "string",
            "description": "Order in which job listings are returned. Newest postings first is the most useful for monitoring. Ignored in employer mode.",
            "default": "posted_desc"
          },
          "includeDescription": {
            "title": "Include full description (jobs only)",
            "type": "boolean",
            "description": "Fetch the complete job description for each listing. This adds one request per job and makes the run slower. Off by default; without it, only a short snippet is saved.",
            "default": false
          },
          "includeProfile": {
            "title": "Include employer profile (employers only)",
            "type": "boolean",
            "description": "Fetch each employer's profile: website, address, active job count, description, and aircraft models they support. This adds one request per employer. Off by default. Ignored in job mode.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Proxy used for every request. The default Apify proxy is recommended. Switch to residential proxies only if runs fail with blocked or non-JSON responses.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}