API & Data Endpoints

Open JSON endpoints, public-domain underlying files, no auth, no rate limits, no scraping required. Built for journalists, researchers, and anyone who wants to ingest the Trump PURSUE UFO archive into their own pipeline.

License: All endpoints below serve metadata about U.S. Government public-domain files (17 U.S.C. § 105). The metadata itself (scores, summaries, organization) is editorial work on this site and is freely citable. Underlying files remain public domain. Attribution to source agencies (FBI, DoD, NASA, State) is courteous; attribution to this site is appreciated but not required.

Core endpoints

Files index

https://pursueufotracker.com/generated/api/files.json

All 164 files with title, agency, category, type, score, canonical page URL, and a pointer to the per-file detail endpoint. Use this as your starting point.

Format: JSON · Size: ~50 KB · Updates: on every rebuild

Per-file detail

https://pursueufotracker.com/generated/api/files/<id>.json

Full metadata for one file: title, agency, dates, source URL, SHA-256, size, summary, full score components and contributions, video URL + caption tracks (for video files), thumbnail URL.

Format: JSON · Count: 164 endpoints · IDs from: files.json

Verification manifest (SHA-256 + war.gov source URLs)

https://pursueufotracker.com/generated/verification-manifest.json

For each file: id, title, SHA-256 hash, size in bytes, and the original war.gov source URL. Use this to verify any file mirrored on this site matches the canonical war.gov asset byte-for-byte.

Format: JSON · Use case: journalistic fact-check, archive integrity

Scoring rubric

https://pursueufotracker.com/data/scoring-rubric.json

The six-component Anomalousness Index rubric: weights, value scales, presets. Weights sum to exactly 1.00. Anyone can recompute every score on this site by combining a file's score.components values with this rubric. The math is auditable.

Format: JSON · Version: 1.0 · See also: methodology walkthrough

Timeline data

https://pursueufotracker.com/generated/timeline.json

Chronological ordering of all 164 files with event dates. Useful for date-keyed visualizations or filtering.

Format: JSON array · Range: 1947 to 2026

Search index (Lunr-compatible)

https://pursueufotracker.com/generated/search-index.json

Prebuilt Lunr.js search index over titles, summaries, full PDF text, and Whisper-generated video transcripts. Hydrate client-side with Lunr.js to add full-text search to your own UI.

Format: Lunr JSON · Size: ~1.5 MB · See our search demo

RSS feed

https://pursueufotracker.com/generated/feed.xml

RSS 2.0. One item per file, sorted by release date. Polls war.gov every 30 min (weekday business hours), so new drops appear in the feed within hours. Includes a styled XSL view if opened directly in a browser.

Format: RSS 2.0 · Standard: rssboard.org

Sitemaps

https://pursueufotracker.com/sitemap-index.xml

XML sitemap index. Points to the main sitemap (~180 URLs: homepage, editorial pages, category landing pages, all 164 file pages) and the video sitemap (30 video files with Google Video Search metadata).

Format: sitemap.xml standard · Child sitemaps: main, video

Quick recipes

List all files (curl + jq)

curl -s https://pursueufotracker.com/generated/api/files.json \
  | jq '.files[] | {id, title, agency, score, url}'

Get the top 10 by score

curl -s https://pursueufotracker.com/generated/api/files.json \
  | jq '.files | sort_by(.score) | reverse | .[0:10]'

Verify a file against war.gov

# 1. Get the SHA-256 from our manifest
curl -s https://pursueufotracker.com/generated/verification-manifest.json \
  | jq '.[] | select(.id == "fbi-photo-a1") | .sha256'

# 2. Download the file from war.gov
curl -O https://www.war.gov/medialink/ufo/release_1/fbi-photo-a1.png

# 3. Hash it locally and compare
sha256sum fbi-photo-a1.png
# Windows PowerShell: Get-FileHash fbi-photo-a1.png -Algorithm SHA256

Recompute a file's score from the open rubric

// JavaScript / Node
const rubric = await fetch('https://pursueufotracker.com/data/scoring-rubric.json').then(r => r.json());
const file = await fetch('https://pursueufotracker.com/generated/api/files/nasa-uap-d3a-gemini-7-audio-excerpt-1965.json').then(r => r.json());

const score = Object.entries(file.score.components).reduce((sum, [k, choice]) => {
  const comp = rubric.components[k];
  return sum + comp.scale[choice] * comp.weight;
}, 0);

console.log('Recomputed score:', Math.round(score), '/ Published score:', file.score.value);
// Recomputed score: 72 / Published score: 72

Subscribe to new-drop alerts (RSS)

# Any RSS reader. Examples:
# Feedly:    https://feedly.com/i/subscription/feed%2Fhttps%3A%2F%2Fpursueufotracker.com%2Fgenerated%2Ffeed.xml
# Inoreader: https://www.inoreader.com/?add_feed=https%3A%2F%2Fpursueufotracker.com%2Fgenerated%2Ffeed.xml
# Or visit the feed directly: https://pursueufotracker.com/generated/feed.xml

Stability & SLAs

This is a personal-budget project, not an enterprise API. That said:

For journalists: if you need a custom data export, a bulk SHA-256 verification report, or anything not covered above, email through the press kit. Turnaround is usually under 24 hours for press inquiries.

← BACK TO ALL FILES