Skip to content
Developer

Public API Documentation

The Epstein Exposed API provides free, read-only access to the largest structured index of the Epstein case files. No authentication is required. We ask that you include attribution to epsteinexposed.com when using this data.

Base URL: https://epsteinexposed.com/api/v1

Overview

This API serves the public interest by making Epstein case file data programmatically accessible. All data is derived from publicly released government records, court filings, and verified reporting.

  • Read-only. No authentication required.
  • All responses are JSON.
  • Attribution to epsteinexposed.com is requested but not enforced.
  • Inclusion in the database does not imply guilt or wrongdoing.

Rate Limits

EndpointsLimit
/persons, /persons/:slug, /documents, /flights60 requests / minute
/search30 requests / minute

Limits are per IP address using a sliding window. Exceeding the limit returns a 429 status.

Response Format

All successful responses are wrapped in a standard envelope:

{
  "status": "ok",
  "data": [ ... ],
  "meta": {
    "total": 1463,
    "page": 1,
    "per_page": 20,
    "timestamp": "2026-02-13T12:00:00.000Z"
  }
}

Error responses use the same envelope with an error object:

{
  "status": "error",
  "error": {
    "message": "Invalid category parameter",
    "code": "BAD_REQUEST"
  }
}

Persons

GET/api/v1/persons

Search and filter persons of interest. Returns paginated results sorted by relevance when a query is provided, or alphabetically otherwise.

Query Parameters

ParamTypeDescription
qstringSearch persons by name.
categorystringFilter by category: politician, business, royalty, celebrity, associate, legal, academic, socialite, military-intelligence, other.
pageintegerPage number (default: 1).
per_pageintegerResults per page, max 100 (default: 20).

Response Fields

id, name, slug, category, shortBio, imageUrl, stats { flights, documents, connections, emails }

Example

curl "https://epsteinexposed.com/api/v1/persons?q=clinton&category=politician&page=1&per_page=5"

Person Detail

GET/api/v1/persons/:slug

Retrieve a single person by their URL slug. Returns full biographical detail including aliases, black book entry status, and aggregate stats.

Response Fields

id, name, slug, category, bio, shortBio, aliases, blackBookEntry, imageUrl, stats { flights, documents, connections, emails }

Example

curl "https://epsteinexposed.com/api/v1/persons/bill-clinton"

Documents

GET/api/v1/documents

Search documents using FTS5 full-text search. When a query is provided, results are ranked by relevance. Supports filtering by source and category.

Query Parameters

ParamTypeDescription
qstringFull-text search query (FTS5 syntax supported).
sourcestringFilter by document source (e.g. court-filing, doj-release, fbi, efta).
categorystringFilter by document category (e.g. deposition, testimony, correspondence).
pageintegerPage number (default: 1).
per_pageintegerResults per page, max 100 (default: 20).

Response Fields

id, title, date, source, category, summary, sourceUrl, tags

Example

curl "https://epsteinexposed.com/api/v1/documents?q=little+st+james&source=court-filing&per_page=10"

Flights

GET/api/v1/flights

Search Epstein's flight logs by passenger name, year, origin, or destination. Covers roughly 1997 through 2006 across all known aircraft.

Query Parameters

ParamTypeDescription
passengerstringFilter flights by passenger name.
yearintegerFilter by year (e.g. 2002).
originstringFilter by departure location (e.g. TIST, Palm Beach).
destinationstringFilter by arrival location (e.g. Teterboro, CYUL).
pageintegerPage number (default: 1).
per_pageintegerResults per page, max 100 (default: 20).

Response Fields

id, date, origin, destination, aircraft, pilot, passengerIds, passengerNames, passengerCount

Example

curl "https://epsteinexposed.com/api/v1/flights?passenger=trump&year=1997&per_page=5"
GET/api/v1/search

Search across documents and emails simultaneously using FTS5 full-text search. Returns separate result arrays for each type.

Query Parameters

ParamTypeDescription
qstringSearch query (required).
typestringLimit to a specific type: "documents" or "emails". Omit to search both.
limitintegerMax results per type, max 100 (default: 20).

Response Fields

documents.results [ ], emails.results [ ]

Example

curl "https://epsteinexposed.com/api/v1/search?q=wexner+trust&type=documents&limit=10"

HTTP Status Codes

CodeStatusDescription
200OKRequest succeeded.
400Bad RequestMissing or invalid query parameters.
404Not FoundThe requested resource does not exist.
429Too Many RequestsRate limit exceeded. Back off and retry after the period resets.
500Internal Server ErrorSomething went wrong on our end. Please open an issue.

Support

Found a bug or have a feature request? Open an issue on GitHub:

github.com/epstein-index/epstein-index/issues

For general questions about the project, see the FAQ or About page.