Federal Inmate Locator Scraper (BOP)
Pricing
from $6.40 / 1,000 results
Federal Inmate Locator Scraper (BOP)
Search the Federal Bureau of Prisons inmate locator by name or register number. Get sex, race, age, facility, projected and actual release dates for federal inmates. Export to JSON, CSV or Excel.
Pricing
from $6.40 / 1,000 results
Rating
0.0
(0)
Developer
Scrapers Lat
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
14 days ago
Last modified
Categories
Share
Federal Inmate Locator Scraper (BOP)
Here is one real result, with every field the actor returns:
{"inmateNumber": "00123-871","inmateNumberType": null,"firstName": "JOHN","middleName": "LEE","lastName": "SMITH","suffix": null,"fullName": "JOHN LEE SMITH","sex": "Male","race": "Black","age": 79,"facilityName": "Detroit","facilityCode": "CDT","facilityType": "RRM","facilityUrl": "https://www.bop.gov/locations/ccm/cdt/","projectedReleaseDate": null,"actualReleaseDate": "02/17/1994","status": "Released","facilityAddress": "4026 E. ARKONA RD.","facilityCity": "MILAN","facilityState": "MI","facilityZip": "48160","facilityPhone": "734-508-9048","facilityEmail": "CDT-CCM-S@bop.gov","facilityRegion": "North Central Region","facilitySecurityLevel": "N/A","facilityGender": "n/a","facilityTypeDescription": "Residential Reentry Office","facilityLatitude": 42.09890703288096,"facilityLongitude": -83.66957902908325,"source": "Federal Bureau of Prisons inmate locator","observedAt": "2026-08-10T14:39:17.173Z"}
The most complete BOP inmate locator scraper available. It returns every field the federal locator exposes for each inmate, and enriches each record with the full address, phone, email and GPS coordinates of the facility holding them, from a name or register-number search.
📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples
Table of contents
- What it does
- Quickstart
- Input reference
- Output reference
- Example output record
- Run via API and CLI
- Fetch results
- Billing and limits
- FAQ and troubleshooting
What it does
The actor queries the Federal Bureau of Prisons public inmate locator by name (last name, optionally with a first name) or by federal register number, and writes one normalized record per matching inmate to the run's dataset. Each record carries the register number, name parts and full name, sex, race, age, in-custody or released status, projected and actual release dates, and the facility name, code and type. It then joins the BOP facility directory so every record also carries the facility's street address, city, state, zip, phone, email, region, security level, type description and GPS coordinates. Missing source values are returned as null.
Data covers federal inmates from 1982 onward. The locator returns up to 100 matches per search; add a first name, sex or age to narrow a common name.
Quickstart
Open the actor, paste this into the input, and press Run. It returns up to 10 federal inmates named John Smith.
{"maxInmates": 10,"nameLast": "Smith","nameFirst": "John"}
Provide a last name (optionally with a first name) or a register number. When a register number is set, the name fields are ignored.
Input reference
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
nameLast | string | no* | Smith | The inmate's last name to search for. Required unless you provide a register number. |
nameFirst | string | no | John | First name to narrow a common last name. |
inmateNumber | string | no | (none) | A federal register number (for example 12345-678) for an exact lookup. When set, the name fields are ignored. |
sex | enum | no | (any) | Male, Female, or empty for any. |
race | string | no | (any) | Race filter (for example White, Black, Asian, Native, Multi). |
age | string | no | (any) | Exact age to narrow results. |
maxInmates | integer | no | 10 | Maximum inmate records to collect (1 to 100). The locator returns up to 100 matches per search. |
*Provide either nameLast or inmateNumber.
Output reference
One dataset item per inmate. Types: string, integer, number, or null when the source value is absent.
| Field | Type | Description |
|---|---|---|
inmateNumber | string | Federal register number. |
inmateNumberType | string | Register number type, when present. |
firstName | string | First name. |
middleName | string | Middle name. |
lastName | string | Last name. |
suffix | string | Name suffix. |
fullName | string | Assembled full name. |
sex | string | Sex. |
race | string | Race. |
age | integer | Age in years. |
facilityName | string | Facility name (or IN TRANSIT). |
facilityCode | string | Facility code. |
facilityType | string | Facility type code (for example FCI, RRM). |
facilityUrl | string | Link to the facility page. |
projectedReleaseDate | string | Projected release date, when in custody. |
actualReleaseDate | string | Actual release date, when released. |
status | string | In custody or Released. |
facilityAddress | string | Facility street address. |
facilityCity | string | Facility city. |
facilityState | string | Facility state. |
facilityZip | string | Facility zip. |
facilityPhone | string | Facility phone. |
facilityEmail | string | Facility contact email. |
facilityRegion | string | BOP region. |
facilitySecurityLevel | string | Security level. |
facilityGender | string | Facility gender designation. |
facilityTypeDescription | string | Human-readable facility type. |
facilityLatitude | number | Facility latitude. |
facilityLongitude | number | Facility longitude. |
source | string | Data source label. |
observedAt | string | ISO 8601 timestamp of when the record was collected. |
The facility fields are null when the inmate has no assigned facility (for example while IN TRANSIT).
Example output record
Real record from the same live run (input {"nameLast": "Smith", "nameFirst": "John", "maxInmates": 10}), an in-custody inmate in transit with no assigned facility:
{"inmateNumber": "00531-196","inmateNumberType": null,"firstName": "JOHN","middleName": null,"lastName": "SMITH","suffix": null,"fullName": "JOHN SMITH","sex": "Male","race": "White","age": null,"facilityName": "IN TRANSIT","facilityCode": null,"facilityType": null,"facilityUrl": null,"projectedReleaseDate": "UNKNOWN","actualReleaseDate": null,"status": "In custody","facilityAddress": null,"facilityCity": null,"facilityState": null,"facilityZip": null,"facilityPhone": null,"facilityEmail": null,"facilityRegion": null,"facilitySecurityLevel": null,"facilityGender": null,"facilityTypeDescription": null,"facilityLatitude": null,"facilityLongitude": null,"source": "Federal Bureau of Prisons inmate locator","observedAt": "2026-08-10T14:39:17.173Z"}
Run via API and CLI
Start a run and wait for it to finish, then read the dataset. Replace <TOKEN> with your Apify API token.
Run synchronously and get dataset items in one call:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~inmate-locator-bop-scraper/run-sync-get-dataset-items?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"nameLast":"Smith","nameFirst":"John","sex":"Male","maxInmates":25}'
Start a run asynchronously:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~inmate-locator-bop-scraper/runs?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"inmateNumber":"12345-678"}'
Apify CLI:
apify call scrapers_lat/inmate-locator-bop-scraper \--input '{"nameLast":"Smith","nameFirst":"John","maxInmates":10}'
Fetch results
Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing format:
# JSONcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"# CSVcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"# Paginate large datasetscurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"
<DATASET_ID> is returned as defaultDatasetId in the run object. Use offset and limit to page through large result sets. clean=true drops empty and internal fields.
Billing and limits
- Pay per result. You are charged per inmate record returned (
resultevent). See the pricing tab for the current per-result price. - No charge on failure. If a run errors or has no input, the actor writes a single item with a populated
errorfield and does not charge for it. Empty (no-match) searches cost nothing. - Spend cap respected. Set
maxTotalChargeUsdon the run; once reached, the actor stops emitting and charging further billable results. - Free Apify plans are capped at 10 records per run. Upgrade for higher
maxInmates. - Source match ceiling. The BOP locator returns up to 100 matches per search. Add a first name, sex or age to narrow a common name.
FAQ and troubleshooting
A run returned 0 records. Why? No federal inmate matched the search. Check the spelling of the last name, or search by register number. No-match searches are not charged.
Which inmates are covered? Federal inmates in the Bureau of Prisons system from 1982 onward. It does not include state or county jail inmates.
Why is the facility information missing on some records?
Inmates who are released or IN TRANSIT may have no assigned facility, so the facility fields are null. Missing values are never invented.
How do I look up one specific person?
Set inmateNumber to their federal register number for an exact lookup; the name fields are then ignored.
How do I narrow a common name like "Smith"?
Add a nameFirst, and optionally sex or age. The locator returns at most 100 matches per query.
Is this an official BOP tool? No. This actor is independent and has no affiliation with the Federal Bureau of Prisons. It reads only data that is publicly available through the BOP inmate locator. Use the results in accordance with the source's terms.
Related scrapers
- NPPES NPI Registry Scraper: US healthcare provider registry.
- OFAC Sanctions List Scraper: US Treasury OFAC SDN and Consolidated lists.
- CourtListener Scraper: US court opinions and dockets.
- HHS OIG Exclusions Scraper: US healthcare exclusion list.
More scrapers at scrapers.lat
Built and maintained by scrapers.lat, where we publish scrapers for US and Latin American public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at scrapers.lat.
Independent tool, not affiliated with the Federal Bureau of Prisons. Accesses only publicly available inmate locator data. Use the results in accordance with the source's terms.
