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.
https://epsteinexposed.com/api/v1Overview
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
| Endpoints | Limit |
|---|---|
| /persons, /persons/:slug, /documents, /flights | 60 requests / minute |
| /search | 30 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
/api/v1/personsSearch and filter persons of interest. Returns paginated results sorted by relevance when a query is provided, or alphabetically otherwise.
Query Parameters
| Param | Type | Description |
|---|---|---|
| q | string | Search persons by name. |
| category | string | Filter by category: politician, business, royalty, celebrity, associate, legal, academic, socialite, military-intelligence, other. |
| page | integer | Page number (default: 1). |
| per_page | integer | Results 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
/api/v1/persons/:slugRetrieve 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
/api/v1/documentsSearch documents using FTS5 full-text search. When a query is provided, results are ranked by relevance. Supports filtering by source and category.
Query Parameters
| Param | Type | Description |
|---|---|---|
| q | string | Full-text search query (FTS5 syntax supported). |
| source | string | Filter by document source (e.g. court-filing, doj-release, fbi, efta). |
| category | string | Filter by document category (e.g. deposition, testimony, correspondence). |
| page | integer | Page number (default: 1). |
| per_page | integer | Results per page, max 100 (default: 20). |
Response Fields
id, title, date, source, category, summary, sourceUrl, tagsExample
curl "https://epsteinexposed.com/api/v1/documents?q=little+st+james&source=court-filing&per_page=10"Flights
/api/v1/flightsSearch Epstein's flight logs by passenger name, year, origin, or destination. Covers roughly 1997 through 2006 across all known aircraft.
Query Parameters
| Param | Type | Description |
|---|---|---|
| passenger | string | Filter flights by passenger name. |
| year | integer | Filter by year (e.g. 2002). |
| origin | string | Filter by departure location (e.g. TIST, Palm Beach). |
| destination | string | Filter by arrival location (e.g. Teterboro, CYUL). |
| page | integer | Page number (default: 1). |
| per_page | integer | Results per page, max 100 (default: 20). |
Response Fields
id, date, origin, destination, aircraft, pilot, passengerIds, passengerNames, passengerCountExample
curl "https://epsteinexposed.com/api/v1/flights?passenger=trump&year=1997&per_page=5"Cross-Type Search
/api/v1/searchSearch across documents and emails simultaneously using FTS5 full-text search. Returns separate result arrays for each type.
Query Parameters
| Param | Type | Description |
|---|---|---|
| q | string | Search query (required). |
| type | string | Limit to a specific type: "documents" or "emails". Omit to search both. |
| limit | integer | Max 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
| Code | Status | Description |
|---|---|---|
| 200 | OK | Request succeeded. |
| 400 | Bad Request | Missing or invalid query parameters. |
| 404 | Not Found | The requested resource does not exist. |
| 429 | Too Many Requests | Rate limit exceeded. Back off and retry after the period resets. |
| 500 | Internal Server Error | Something 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/issuesFor general questions about the project, see the FAQ or About page.