FBI APIfbi.gov ↗
Access FBI Most Wanted profiles via API. Retrieve charges, physical descriptions, aliases, reward amounts, and images across terrorism and other wanted categories.
What is the FBI API?
The FBI Most Wanted API exposes 3 endpoints that return structured profiles from the FBI's wanted persons listings, including terrorism subcategories. The list_most_wanted endpoint retrieves complete sets of persons across up to three terrorism subcategories, while search_wanted queries across all classifications by name with pagination. Each profile includes fields like charges, physical description, reward details, aliases, and image links.
curl -X GET 'https://api.parse.bot/scraper/63d519bd-15b3-4844-ac0d-8157d0ecd635/list_most_wanted?category=all' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace fbi-gov-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""FBI Most Wanted API — bounded, re-runnable walkthrough."""
from parse_apis.fbi_most_wanted_api import FBIMostWanted, Category, Classification, PersonNotFound
client = FBIMostWanted()
# List wanted terrorists — limit caps total items fetched.
for person in client.people.list(category=Category.WANTED_TERRORISTS, limit=3):
print(person.title, person.nationality, person.reward_text)
# Search across all classifications by name, drill into one result.
result = client.people.search(query="al", limit=1).first()
if result:
print(result.title, result.uid, result.sex)
# Filter search by classification enum.
for person in client.people.search(classification=Classification.TERRORIST, limit=3):
print(person.title, person.poster_classification)
# Get full detail by uid — typed error catch for missing person.
try:
detail = client.people.get(uid="58a2b2e74df44187bd7d935aba56842e")
print(detail.title, detail.place_of_birth, detail.aliases)
except PersonNotFound as exc:
print(f"Person not found: {exc.uid}")
print("exercised: people.list / people.search / people.get with Category + Classification enums")
List all FBI terrorism most wanted persons. Returns persons from 3 subcategories: Most Wanted Terrorists, Seeking Information - Terrorism, and Domestic Terrorism. Paginates through all results internally and returns the complete list for the selected category.
| Param | Type | Description |
|---|---|---|
| category | string | Filter by subcategory. |
{
"type": "object",
"fields": {
"total": "integer - total number of persons returned",
"persons": "array of Person objects",
"category": "string - category filter used"
}
}About the FBI API
Endpoints and Coverage
The API covers three operations. list_most_wanted returns all persons in one of three terrorism subcategories — Most Wanted Terrorists, Seeking Information - Terrorism, and Domestic Terrorism — using the optional category parameter. The response includes a total count and a persons array. search_wanted extends coverage beyond terrorism to all FBI wanted classifications, accepting query (matched against names), page, page_size (up to 50), and classification parameters. An empty query or classification returns all results. get_person fetches a single full profile by uid, which is returned in the other two endpoints' results.
Response Fields
The get_person endpoint returns the most complete set of fields: uid, title (the person's name), url (their FBI page), sex, race, build, eyes, hair, ncic, and path. Physical attributes such as eyes, hair, build, and race may be null for records where that data is unavailable. The ncic field carries the National Crime Information Center code when present.
Pagination and Search Behavior
list_most_wanted paginates through all results internally and returns the complete list for the selected category in a single response — no client-side pagination is needed. search_wanted is paginated: use the page and page_size parameters to walk through results, and check total against page_size to determine how many pages exist. The query parameter in search_wanted matches against person names specifically, not charge descriptions or other fields.
The FBI API is a managed, monitored endpoint for fbi.gov — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when fbi.gov changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official fbi.gov API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a law enforcement reference tool that displays terrorism most wanted persons by subcategory using
list_most_wanted - Cross-reference suspects in investigative databases by searching names via
search_wantedwith thequeryparameter - Display full physical descriptions — height, build, eye and hair color — from
get_personin a case research dashboard - Monitor additions to the FBI wanted list by periodically calling
list_most_wantedand diffing the returnedtotalandpersonsarrays - Filter wanted persons by classification using the
classificationparameter insearch_wantedto scope results to specific offense categories - Retrieve FBI page URLs from the
urlfield to link out to official source records in public-facing applications
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does the FBI offer an official developer API for its wanted persons data?+
What does `list_most_wanted` return compared to `search_wanted`?+
list_most_wanted is scoped to terrorism subcategories only (Most Wanted Terrorists, Seeking Information - Terrorism, Domestic Terrorism) and returns the complete list in one call with no client-side pagination needed. search_wanted covers all FBI wanted classifications and is paginated, but it matches only against person names — not charges, locations, or other fields.Are reward amounts and charges returned by `get_person`?+
get_person response fields documented in this API cover physical attributes (sex, race, build, eyes, hair), identifiers (uid, ncic), and links (url, path). Reward amounts and charge text are not currently returned as discrete fields. You can fork this API on Parse and revise it to add those fields if the source data includes them.Can I search wanted persons by physical description — for example, filter by hair color or race?+
search_wanted matches only against person names via the query parameter, and list_most_wanted filters only by terrorism subcategory. Physical description fields like hair, eyes, and build are returned per-person from get_person but are not available as search filters. You can fork this API on Parse and revise it to add filter-by-description endpoints.