Discover/NamUs API
live

NamUs APInamus.gov ↗

Access NamUs missing-person case records via API. List and filter published cases by state and sex, or fetch full case details including physical descriptors and circumstances.

Endpoint health
verified 3h ago
list_missing_persons
get_missing_person_case
2/2 passing latest checkself-healing
Endpoints
2
Updated
4h ago

What is the NamUs API?

The NamUs API exposes two endpoints that surface public missing-person case data from the National Missing and Unidentified Persons System at namus.gov. list_missing_persons returns paginated case summaries across all published records — covering identity, age at disappearance, last-known location, investigating agency, and modification time — while get_missing_person_case delivers the full record for a single case, including physical descriptors, vehicle records, and geocoded coordinates.

This call costs1 credit / call— charged only on success
Try it
Cases per page; values above 1000 are clamped to 1000.
Full US state/territory name of last contact (e.g. one shape: Texas). Omitted = all states. An unrecognized name returns zero cases.
Biological sex filter as recorded on the case. Omitted = no filter.
Zero-based index of the first case to return; must be below 10000. Pass next_offset from the previous page to continue.
→ api.parse.bot/scraper/c07f9334-1f12-4c8e-8f49-8e49bf6aa0fb/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/c07f9334-1f12-4c8e-8f49-8e49bf6aa0fb/list_missing_persons?limit=25&state=Texas' \
  -H 'X-API-Key: $PARSE_API_KEY'
Python SDK · recommended

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 namus-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.

"""Walkthrough: NamUs Missing Persons SDK — bounded, re-runnable."""
from parse_apis.namus_gov_api import NamUs, State, Gender, CaseNotFound

client = NamUs()

# List recent missing-person summaries in Texas, capped at 5 total items.
for summary in client.missing_person_summaries.list(state=State.TEXAS, limit=5):
    print(summary.first_name, summary.last_name, summary.missing_age_display,
          summary.city_of_last_contact, summary.state_of_last_contact)

# Drill down: take the first female missing-person summary and fetch full details.
summary = client.missing_person_summaries.list(gender=Gender.FEMALE, limit=1).first()
if summary is not None:
    person = summary.details()
    print(person.first_name, person.last_name, person.case_number)
    print("Circumstances:", person.circumstances_of_disappearance)
    for agency in person.investigating_agencies:
        print(" Agency:", agency.name, agency.phone)

# Point lookup by case_id discovered from the previous result.
if summary is not None:
    try:
        full = client.missing_persons.get(case_id=summary.case_id)
        print(full.first_name, full.last_name, "resolved:", full.case_is_resolved)
    except CaseNotFound:
        print("Case no longer available")

print("exercised: missing_person_summaries.list / details / missing_persons.get")
All endpoints · 2 totalmissing one? ·

Returns one page of published NamUs missing-person cases, newest date of last contact first. Each row is one case summary (identity, age at disappearance, current age estimate, last-known city/county/state, sex, race/ethnicity, investigating agency, modification time). total_count is the site's full match count for the filters; the site only exposes the first 10,000 matches of any query, so accessible_count = min(total_count, 10000) and offsets of 10,000 or more are rejected. Without filters the full database (about 26,600 cases) therefore cannot be paged to the end in one query: to retrieve every case, iterate over states (every state has well under 10,000 cases). Paging is controlled by offset (default 0) and limit (default 100, maximum 1000, larger values clamped); has_more and next_offset describe the continuation within the accessible window. An unknown state or sex value yields total_count 0 and an empty cases array, which is a valid result. race_ethnicity is the site's primary race label (the literal 'Multiple' when several apply) and ethnicities is the full list.

Input
ParamTypeDescription
limitintegerCases per page; values above 1000 are clamped to 1000.
statestringFull US state/territory name of last contact (e.g. one shape: Texas). Omitted = all states. An unrecognized name returns zero cases.
genderstringBiological sex filter as recorded on the case. Omitted = no filter.
offsetintegerZero-based index of the first case to return; must be below 10000. Pass next_offset from the previous page to continue.
Response
{
  "type": "object",
  "fields": {
    "cases": "array of case summaries; case_id (integer) is the input for get_missing_person_case; missing_age_* in years at disappearance, current_age_* estimated years now; ethnicities is an array of race labels",
    "limit": "integer, page size applied after clamping",
    "offset": "integer, offset applied",
    "has_more": "boolean, whether another page exists within the accessible window",
    "next_offset": "integer offset for the next page, or null when has_more is false",
    "total_count": "integer, site's total matching cases for the filters",
    "accessible_count": "integer, matches reachable through paging (capped at 10000 by the site)"
  },
  "sample": {
    "data": {
      "cases": [
        {
          "gender": "Male",
          "case_id": 162783,
          "case_url": "https://www.namus.gov/MissingPersons/Case#/162783",
          "last_name": "Graham",
          "first_name": "Kyani",
          "case_number": "MP162783",
          "ethnicities": [
            "Black / African American"
          ],
          "middle_name": "Eugene",
          "thumbnail_url": "https://www.namus.gov/api/CaseSets/NamUs/MissingPersons/Cases/162783/Images/Default/Thumbnail",
          "race_ethnicity": "Black / African American",
          "current_age_max": 14,
          "current_age_min": 14,
          "missing_age_max": 14,
          "missing_age_min": 14,
          "modified_date_time": "2026-09-29T23:21:24.683",
          "missing_age_display": "14 Years",
          "city_of_last_contact": "Forney",
          "date_of_last_contact": "2026-09-11",
          "state_of_last_contact": "TX",
          "county_of_last_contact": "Kaufman",
          "primary_investigating_agency": "Kaufman County Constables Office Precinct 2"
        }
      ],
      "limit": 3,
      "offset": 0,
      "has_more": true,
      "next_offset": 3,
      "total_count": 2930,
      "accessible_count": 2930
    },
    "status": "success"
  }
}

About the NamUs API

Listing and Filtering Cases

list_missing_persons returns case summaries ordered by newest date of last contact first. Each entry includes a case_id (used as input to the detail endpoint), missing_age_* fields in years at disappearance, a current age estimate, last-known city, county, and state, sex, race/ethnicity labels, and the investigating agency. You can narrow results with the state parameter (full name, e.g. Texas) and/or the gender parameter. Pagination uses zero-based offset and limit (capped at 1000 per page). The response includes total_count for the full matching set and accessible_count capped at 10,000 — meaning offset must stay below 10,000 to retrieve results.

Full Case Records

get_missing_person_case accepts a numeric case_id and returns the complete public record: the canonical case_number (format MP<id>), case_url, ethnicities array, height and weight ranges in inches and pounds (height_from_in, weight_from_lb), hair and eye colour, physical features and clothing arrays, circumstances of disappearance, vehicle records, a poster_url, and image_count. Geocoded last-contact coordinates are returned as latitude (and implied longitude) when the site has published them; these may be null.

Coverage and Freshness

The data reflects what NamUs has published publicly on each case page. Cases that have been closed, merged, or restricted by the investigating agency will not appear. The modification_time field in list results indicates when NamUs last updated a given record, which is useful for detecting changed cases on repeated queries.

Reliability & maintenanceVerified

The NamUs API is a managed, monitored endpoint for namus.gov — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when namus.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 namus.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.

Last verified
3h ago
Latest check
2/2 endpoints passing
Maintenance
Monitored & self-healing
Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Build a state-level dashboard of active missing-person cases filtered by state and gender
  • Monitor NamUs for newly modified cases by comparing modification_time across paginated list responses
  • Plot last-known locations on a map using latitude coordinates returned by get_missing_person_case
  • Compile physical descriptor datasets (height, weight, hair colour, eye colour) for research or analysis
  • Cross-reference vehicle records from get_missing_person_case against other automotive or law-enforcement datasets
  • Generate printable missing-person posters using poster_url and physical descriptor fields
  • Aggregate case counts by state and race/ethnicity using total_count and ethnicities data
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo2005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min
Team$300/mo20,000300 req/min
Company$1,000/mo100,000500 req/min

Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.

Frequently asked questions
Does NamUs have an official public developer API?+
NamUs does not publish a versioned public developer API with documentation or access keys. The data on namus.gov is publicly accessible through its web interface, but there is no official API product for developers.
What does `list_missing_persons` return and how does pagination work?+
list_missing_persons returns one page of case summaries with fields including case_id, age at disappearance, last-known location, sex, race/ethnicity, investigating agency, and modification time. Use offset and limit (max 1000) to page through results. Pass next_offset from one response as the offset of the next. The site caps accessible results at 10,000, so offset must remain below that value. total_count reflects the full matching set even when it exceeds 10,000.
Are unidentified remains (Doe) cases available through this API?+
Not currently. The API covers published missing-person cases only, accessible through list_missing_persons and get_missing_person_case. NamUs also maintains a separate unidentified-remains database on the same site. You can fork this API on Parse and revise it to add an endpoint covering unidentified-remains cases.
Can I filter cases by race/ethnicity or age range in `list_missing_persons`?+
list_missing_persons currently supports filtering by state and gender only. Race/ethnicity labels and age fields are present in each case summary in the response, so client-side filtering is possible, but the API does not accept them as query parameters. You can fork this API on Parse and revise it to add those filter parameters if the underlying data supports them.
How current is the case data returned by the API?+
Each case summary in list_missing_persons includes a modification_time field that reflects when NamUs last updated that record. The API returns the current published state of each case; there is no historical snapshot or change-log endpoint, so polling modification_time is the practical way to detect updates.
Page content last updated . Spec covers 2 endpoints from namus.gov.
Related APIs in Government PublicSee all →
fbi.gov API
Search and retrieve profiles of individuals listed on the FBI's Most Wanted pages, including charges, physical descriptions, aliases, reward amounts, and photographs. Browse by category, search by name, or look up a specific person by ID.
ukanimalcrueltyfiles.org API
Access data from ukanimalcrueltyfiles.org.
judyrecords.com API
Search and retrieve detailed court records including case information and statistics from a comprehensive legal database. Access specific case details and view aggregated court record stats to research legal proceedings and case outcomes.
grandmasfamily.com API
Search and explore a genealogy database containing 85 persons across 44 families to discover family relationships and connections. Find specific individuals, view their details, and track how often surnames appear throughout your family tree.
nuforc.org API
Search and access detailed UFO sighting reports from the National UFO Reporting Center database, including witness accounts, locations, and images organized by date. Discover documented sightings with specific details to research UFO phenomena and explore reports from around the world.
www2.miamidadeclerk.gov API
Search Miami-Dade County civil, family, and probate court cases by case number to access complete case details including parties involved, assigned attorneys, docket entries, scheduled hearings, and final disposition outcomes. Get all the official court information you need without visiting the courthouse in person.
usaspending.gov API
Access data from usaspending.gov.
data.unhcr.org API
Access comprehensive humanitarian data on refugee situations, population statistics, and operational information across countries and regions managed by UNHCR. Search and retrieve detailed documents, partner organizations, and country-specific insights to support humanitarian planning and research.