{
  "openapi": "3.0.1",
  "info": {
    "title": "UFO Sighting Scraper",
    "description": "Scrape 160,000+ UFO/UAP sighting reports from NUFORC. Filter by shape, US state, country, date range, and credibility tier. Returns full witness narratives, structured metadata, and pilot reports. Works as a scraper and MCP tool for AI agents.",
    "version": "0.0",
    "x-build-id": "adTjkyXhPrLexnQMk"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/labrat011~ufo-sighting-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-labrat011-ufo-sighting-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/labrat011~ufo-sighting-scraper/runs": {
      "post": {
        "operationId": "runs-sync-labrat011-ufo-sighting-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/labrat011~ufo-sighting-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-labrat011-ufo-sighting-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": {
          "shape": {
            "title": "🛸 UFO Shape",
            "enum": [
              "all",
              "Light",
              "Circle",
              "Triangle",
              "Fireball",
              "Disk",
              "Sphere",
              "Orb",
              "Oval",
              "Formation",
              "Changing",
              "Cigar",
              "Rectangle",
              "Cylinder",
              "Flash",
              "Diamond",
              "Chevron",
              "Egg",
              "Teardrop",
              "Cone",
              "Cross",
              "Star",
              "Cube",
              "Other",
              "Unknown"
            ],
            "type": "string",
            "description": "Filter by reported UFO/UAP shape. Choose a specific shape or 'All Shapes' for all. Use 🛸 Shapes List below to search multiple shapes at once.",
            "default": "all"
          },
          "shapesList": {
            "title": "🛸 Shapes List (Batch Search)",
            "type": "array",
            "description": "Search multiple UFO shapes in a single run — results are merged and deduplicated. Overrides the single Shape filter above when provided. Example: [\"Triangle\", \"Disk\", \"Orb\"]"
          },
          "country": {
            "title": "🌍 Country",
            "type": "string",
            "description": "Filter by country name. Use exact country name as it appears on NUFORC (e.g. 'United Kingdom', 'Australia', 'India'). Leave empty for all countries."
          },
          "usState": {
            "title": "🗺️ US State",
            "enum": [
              "",
              "AL",
              "AK",
              "AZ",
              "AR",
              "CA",
              "CO",
              "CT",
              "DE",
              "FL",
              "GA",
              "HI",
              "ID",
              "IL",
              "IN",
              "IA",
              "KS",
              "KY",
              "LA",
              "ME",
              "MD",
              "MA",
              "MI",
              "MN",
              "MS",
              "MO",
              "MT",
              "NE",
              "NV",
              "NH",
              "NJ",
              "NM",
              "NY",
              "NC",
              "ND",
              "OH",
              "OK",
              "OR",
              "PA",
              "RI",
              "SC",
              "SD",
              "TN",
              "TX",
              "UT",
              "VT",
              "VA",
              "WA",
              "WV",
              "WI",
              "WY",
              "DC"
            ],
            "type": "string",
            "description": "Filter by US state code (e.g. 'CA', 'NY', 'TX'). Only applies when searching within the United States.",
            "default": ""
          },
          "tier": {
            "title": "⭐ Credibility Tier",
            "enum": [
              "all",
              "1",
              "2",
              "3",
              "4"
            ],
            "type": "string",
            "description": "NUFORC assigns tiers: 1 = dramatic/credible, 2 = unusual, 3 = unexplained, 4 = likely explainable. Use 'All Tiers' for no filter.",
            "default": "all"
          },
          "category": {
            "title": "🏷️ Special Category",
            "enum": [
              "all",
              "highlights",
              "pilot_reports"
            ],
            "type": "string",
            "description": "Filter by special NUFORC categories. 'Highlights' returns the most dramatic/notable reports. 'Pilot Reports' returns sightings by pilots and aviation professionals.",
            "default": "all"
          },
          "datePreset": {
            "title": "📅 Date Preset",
            "enum": [
              "custom",
              "last_30_days",
              "last_90_days",
              "last_year"
            ],
            "type": "string",
            "description": "Quick date shortcuts. When set to anything other than 'Custom', overrides the Date From / Date To fields below.",
            "default": "custom"
          },
          "dateFrom": {
            "title": "📅 Date From (YYYYMM)",
            "type": "string",
            "description": "Start month for sighting date range in YYYYMM format (e.g. '202401' for January 2024). Leave empty for no start limit. Ignored when Date Preset is not 'Custom'."
          },
          "dateTo": {
            "title": "📅 Date To (YYYYMM)",
            "type": "string",
            "description": "End month for sighting date range in YYYYMM format (e.g. '202412' for December 2024). Leave empty for no end limit. Ignored when Date Preset is not 'Custom'."
          },
          "keywordFilter": {
            "title": "🔍 Keyword Filter",
            "type": "string",
            "description": "Only return sightings where the narrative or summary contains this word or phrase (case-insensitive). Examples: 'hovering', 'silent', 'military base', 'missing time'."
          },
          "includeDetails": {
            "title": "📄 Include Full Details",
            "type": "boolean",
            "description": "When enabled, fetches each sighting's detail page for the full narrative, observer type, characteristics, and all metadata. When disabled, returns only summary data from listing pages (faster but less data).",
            "default": true
          },
          "maxResults": {
            "title": "🔢 Max Results",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Maximum number of sightings to return (1-10000). Free users are limited to 25 per run. NUFORC has 160,000+ reports — use filters to narrow your search.",
            "default": 100
          },
          "requestIntervalSecs": {
            "title": "⏱️ Request Interval (seconds)",
            "minimum": 0.5,
            "maximum": 10,
            "type": "number",
            "description": "Minimum seconds between HTTP requests to NUFORC. Be respectful — this is a volunteer-run website.",
            "default": 1
          },
          "proxyConfig": {
            "title": "🔒 Proxy Configuration",
            "type": "object",
            "description": "Proxy configuration. Note: NUFORC uses Cloudflare which blocks proxy IPs — keep disabled. Only change if you have a specific need.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}