BOP Federal Inmate Locator avatar

BOP Federal Inmate Locator

Pricing

from $3.63 / 1,000 item processeds

Go to Apify Store
BOP Federal Inmate Locator

BOP Federal Inmate Locator

Look up supplied known BOP register numbers and export raw identity, public facility, release codes and dates with provenance for bounded legal and journalistic research.

Pricing

from $3.63 / 1,000 item processeds

Rating

0.0

(0)

Developer

Automation Lab

Automation Lab

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

Share

Perform a bounded BOP inmate search by register number against the official Federal Bureau of Prisons locator. Supply already known register numbers and export raw source identity, public facility fields, release codes, dates and retrieval provenance for legal and journalistic public-record research.

This is not a population database, background-check service or identity-resolution tool. It does not support name-only search, generate numbers, enumerate inmates or make eligibility decisions.

Who is it for?

Legal researchers can retrieve source records for a bounded list of known register numbers. Journalists can preserve a dated source snapshot and compare it with their own earlier research. Each run makes fresh lookups; no historical archive or alert engine is included.

Why use this BOP inmate locator?

  • Exact register-number matching instead of ambiguous name matching.
  • Actual and projected release dates remain separate, as raw source text.
  • Source URL and UTC retrieval time accompany every matching row.
  • No demographic enrichment, risk score or inferred custody classification.
  • Duplicate supplied numbers are normalized before requests and item charging.

Getting started

  1. Obtain the known BOP register number through your authorized research.
  2. Open the input form and supply between 1 and 25 numbers.
  3. Start the Actor and wait for its terminal status.
  4. Inspect the default dataset and the SUMMARY key-value record.
  5. Export permitted results as JSON, CSV or Excel through Apify.

The prefilled 61727-054 is the widely reported register number of deceased public figure Bernard Madoff. Use your own authorized known-number list for research. Do not construct number ranges.

Input parameters

{"registerNumbers":["61727-054"]}
ParameterBehavior
registerNumbersRequired string array, 1–25 entries before deduplication. Each must be eight digits or NNNNN-NNN. Leading/trailing whitespace is trimmed; duplicates are removed after normalization.

Other input fields are rejected. There is no name, location, race, age, eligibility, date-range, population or wildcard filter. No automatic proxy or browser fallback is enabled.

Extracted data

FieldMeaning
registerNumberExact BOP register number returned by the source
firstName, middleName, lastName, suffixRaw source identity text
facilityCode, facilityName, facilityTypeRaw source facility metadata, not an inferred current location
facilityUrlAbsolute official facility URL, or an empty string
releaseCodeRaw BOP release code
actualReleaseDateRaw actual date text, or an empty string
projectedReleaseDateRaw projected date text, or an empty string
sourceUrlOfficial locator page
retrievedAtRetrieval time in UTC, not a source update timestamp

Empty source strings are preserved. Dates are not guessed or converted into eligibility conclusions. A populated facility field can remain present after release or death: never interpret it alone as proof of current custody.

Output example

This anonymized illustration follows the tested output shape; it is not a real person or a valid research target.

{
"registerNumber": "00000-000",
"firstName": "EXAMPLE",
"middleName": "",
"lastName": "PERSON",
"suffix": "",
"facilityCode": "ABC",
"facilityName": "Example",
"facilityType": "FMC",
"facilityUrl": "https://www.bop.gov/locations/institutions/abc/",
"releaseCode": "D",
"actualReleaseDate": "01/01/2020",
"projectedReleaseDate": "",
"sourceUrl": "https://www.bop.gov/inmateloc/",
"retrievedAt": "2026-10-23T12:00:00.000Z"
}

How much does it cost to look up BOP register numbers?

Pay-per-event pricing includes a $0.005 start fee per validated run and a tiered fee for each matching dataset record. No-match lookups, duplicates and failed requests have no item event fee. A run with no matches still incurs the start fee. Platform budget controls can stop a run before all numbers are processed.

BRONZE $0.006049 per record. At this BRONZE rate, one matching record costs approximately $0.011049 including start; five cost $0.035245; 25 cost $0.156225. These are estimates, not guaranteed invoices. Spend tiers follow your aggregate qualifying monthly Apify Store spend, not this Actor's private volume tiers.

TierMatching-record event price
FREE$0.0069563
BRONZE$0.006049
SILVER$0.0047182
GOLD$0.0036294
PLATINUM$0.0036294
DIAMOND$0.0036294

The $0.005 start event is the same at every tier. Consult the Pricing tab for the applicable active rate.

Limits and failure behavior

Each run accepts at most 25 supplied numbers and uses sequential requests. It does not paginate or discover more numbers. Repeated scheduled runs do not constitute historical source coverage.

Network failures, rate limits and temporary server errors receive at most three attempts per number with bounded backoff. A challenge, permanent HTTP failure, source error message, mismatched number or unexpected response fails the run rather than pretending it is a legitimate no-match result. If a later lookup fails, already saved rows are partial and remain in storage.

A recognized empty result produces no dataset row. SUMMARY records aggregate saved and no-match counts, without a second list of personal identifiers. An empty dataset does not prove a person has no federal record.

Integrations

Export the default dataset to a restricted-access research spreadsheet or your existing case-management pipeline. Use Apify webhooks to notify your workflow that a run finished, then check its status before importing data. Compare dated snapshots in your own authorized system; this Actor does not infer changes or send custody alerts.

API usage

Use an Apify token stored securely, not embedded in shared documents.

curl -X POST 'https://api.apify.com/v2/acts/automation-lab~bop-federal-inmate-locator/runs' \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H 'Content-Type: application/json' \
-d '{"registerNumbers":["61727-054"]}'

JavaScript using apify-client:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/bop-federal-inmate-locator')
.call({ registerNumbers: ['61727-054'] });
const { items } = await client.dataset(run.defaultDatasetId).listItems({ limit: 25 });

Python using apify-client:

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('automation-lab/bop-federal-inmate-locator').call(
run_input={'registerNumbers': ['61727-054']})
items = client.dataset(run['defaultDatasetId']).list_items(limit=25).items

MCP setup and bounded results

For an authorized MCP client, select this stable Actor-specific endpoint:

claude mcp add --transport http apify \
'https://mcp.apify.com?tools=automation-lab/bop-federal-inmate-locator'

Equivalent HTTP configuration for Claude Desktop, Cursor and VS Code (use the configuration location and authentication flow supported by your client):

{"mcpServers":{"apify":{"url":"https://mcp.apify.com?tools=automation-lab/bop-federal-inmate-locator"}}}

Authenticate through the client's supported Apify flow. Discover actual tool names and input schemas using scoped tools/list; Actor selection also adds run/data helper tools, not exactly one tool. Discovery does not authorize running an Actor.

Example prompts for authorized use: “Retrieve raw release fields for my supplied known numbers, without inference.” Another example authorized instruction: “Look up my supplied known BOP register number, preserve raw dates and provenance, and do not infer custody or eligibility.”

Start once, retain the run ID and storage IDs, and follow the same run. call-actor may return before completion (waitSecs 0–45, default 30). Poll that same ID with bounded backoff (2, 4, 8 seconds, capped at 10) and a 120-second total deadline; report pending at the deadline. Set client timeout above the chosen server wait plus transport margin. Recover a known run after client timeout; never restart just to poll. If its ID is unknown, report uncertainty. Failed-run rows are partial, not a completed answer.

After success, read the returned dataset ID with get-dataset-items, explicit limit, offset and needed fields. A suggested consumer budget is pages of 20, at most 25 source rows or 64 KiB of serialized UTF-8 content, whichever comes first. Enforce the byte limit host-side before model injection, including oversized rows. If the client cannot intercept oversized responses, do not claim a hard byte guarantee. Track source offsets, disclose truncation and continuation offset, and keep full exports outside model context. These are consumer limits, not reductions to the Actor's collection contract. No numeric token-savings claim is made.

Legality and responsible use

Use only for lawful, bounded legal and journalistic research with already known identifiers. This tool is not a consumer-reporting agency or an employment, housing, credit, insurance, parole or other eligibility decision service. Do not use it for harassment, discriminatory screening, population enumeration, identity inference or combining unrelated personal profiles.

Public availability does not remove privacy or accuracy obligations. Verify material facts with the official source and appropriate professionals. BOP coverage and release information can change or be incomplete; absence is not proof, and source dates may be revised. Restrict dataset access, retain only necessary records and delete research snapshots when no longer needed.

Failed operations send sanitized diagnostic input, exceptions and Actor/build/run IDs to our private GlitchTip service for repair. Secret fields and URL queries are removed; registerNumbers is explicitly redacted. Reports are retained for 30 days. Do not submit personal free text in unsupported fields.

Troubleshooting and FAQ

Can I search by name? No. Only supplied known BOP register numbers are supported.

Why did I receive no row? A recognized no-match response emits no row. Check SUMMARY and verify the number manually. Do not conclude that no criminal record exists.

Why did the run fail? An upstream error or challenge is not a no-match. Inspect the safe run message, check the official locator and retry later rather than expanding the number list.

Does a facility name mean current custody? No. Raw fields may be retained for released or deceased people. No current-custody inference is provided.

Are sentence details or demographics included? No. The output is limited to the documented source identity, facility and release fields.

Data handling and support

No AI model processes inputs or output. BOP receives the supplied number as a normal locator request; Apify stores run input and output under your account's storage and retention settings until expiry or deletion. There is no cross-run cache. Delete datasets, INPUT and run storage through Apify when research ends; no automatic Actor-side deletion is promised. Logs contain aggregate counts and generic failure messages, not response bodies. Contact the Actor's Issues tab for support without posting personal research records publicly. This independently developed Actor is not affiliated with, endorsed by or certified by BOP or the US government. The icon is an original generated illustration, not an official seal.

This is a standalone public-record research workflow. We intentionally do not cross-link marketing or people-enrichment Actors, or imply automated screening compatibility.