# FBI Data Scraper (`crawlergang/fbi-crime-data-scraper`) Actor

Scrape FBI public data: wanted persons (fugitives, missing persons, terrorists) and stolen art crimes from the official FBI API. No API key required.

- **URL**: https://apify.com/crawlergang/fbi-crime-data-scraper.md
- **Developed by:** [Crawler Gang](https://apify.com/crawlergang) (community)
- **Categories:** Automation, Developer tools, Agents
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 11 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $3.00 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## FBI Data Scraper

Scrape FBI public data from the official [FBI API](https://api.fbi.gov) — wanted persons (fugitives, missing persons, terrorists) and stolen art crimes from the National Stolen Art File (NSAF). No API key required.

### What This Actor Does

The FBI Data Scraper retrieves structured data from the FBI's two live public API endpoints:

- **Wanted Persons**: FBI's wanted list including fugitives, missing persons, terrorists, and other persons of interest. Includes physical descriptions, reward amounts, field office assignments, and profile images.
- **Stolen Art Crimes**: Records from the FBI's National Stolen Art File (NSAF) — stolen paintings, sculptures, prints, jewelry, numismatic items, and other collectibles.

### Use Cases

- **Investigative research**: Track FBI fugitives, missing persons, and persons of interest
- **Art crime monitoring**: Monitor stolen artwork and collectibles from the FBI's national database
- **Law enforcement data**: Access official FBI wanted persons data for research
- **Journalism**: Access official FBI data for reporting on crime and missing persons
- **Security research**: Analyze FBI wanted persons by classification, field office, or status

### Input

| Field | Type | Description | Default |
|-------|------|-------------|---------|
| `mode` | Select | `wantedPersons` or `artCrimes` | `wantedPersons` |
| `fieldOffice` | Text | Filter wanted persons by FBI field office (e.g., `miami`, `new_york`) | — |
| `status` | Select | Filter wanted by status: blank (active) or `captured` | Active |
| `personClassification` | Select | Filter by type: `Main` (fugitive), `Victim` (missing person), etc. | All |
| `crimeCategory` | Select | Filter art crimes by category (e.g., `paintings`, `sculptures`) | All |
| `maxItems` | Integer | Maximum records to return (1–1000) | `50` |

### Output

#### Wanted Persons

Each record includes:

| Field | Description |
|-------|-------------|
| `uid` | Unique FBI record ID |
| `title` | Name of the wanted person |
| `description` | Crime description |
| `caution` | Caution/danger warning |
| `status` | Record status (active, captured, etc.) |
| `personClassification` | Classification (Main, Victim, etc.) |
| `sex`, `race`, `nationality` | Physical identifiers |
| `ageMin`, `ageMax` | Age range |
| `heightMinIn`, `heightMaxIn` | Height range in inches |
| `weightMinLbs`, `weightMaxLbs` | Weight range in lbs |
| `eyes`, `hair`, `build` | Physical description |
| `rewardMin`, `rewardMax` | Reward amount in USD |
| `fieldOffices` | Responsible FBI field offices |
| `locations` | Known locations |
| `possibleCountries`, `possibleStates` | Possible locations |
| `datesOfBirthUsed` | Known dates of birth |
| `placeOfBirth` | Place of birth |
| `imageUrl` | Photo URL |
| `posterUrl` | Wanted poster PDF URL |
| `profileUrl` | FBI profile page URL |
| `modified` | Last updated date |

#### Art Crimes

| Field | Description |
|-------|-------------|
| `uid` | Unique FBI record ID |
| `referenceNumber` | NSAF reference number |
| `title` | Artwork title or description |
| `description` | Detailed description |
| `crimeCategory` | Category (paintings, sculptures, etc.) |
| `maker` | Artist/maker |
| `materials` | Materials used |
| `measurements` | Physical dimensions |
| `period` | Time period of creation |
| `imageUrl` | Photo of the artwork |
| `profileUrl` | FBI art crimes profile URL |
| `modified` | Last updated date |

### FAQ

**Why can't I filter wanted persons by crime type?**
The FBI's public API does not support filtering by crime type. You can filter by field office, status, or person classification.

**How many wanted persons are in the database?**
The FBI currently has over 1,000 active wanted persons listed.

**How many stolen art crimes are in the database?**
The NSAF contains over 4,700 stolen art and collectibles records.

**Is an API key required?**
No. The FBI's public API (`api.fbi.gov`) requires no authentication.

**What happened to the crime statistics (UCR) data?**
The FBI's old crime statistics API (`api.usa.gov/crime/fbi/sapi`) was shut down. Crime statistics are no longer available via a public API — the FBI now provides annual data downloads only through [CDE](https://cde.ucr.cjis.gov/).

**How current is the data?**
The FBI updates wanted persons and art crime records in near-real-time.

# Actor input Schema

## `mode` (type: `string`):

What FBI data to retrieve: wanted persons (fugitives, missing persons, etc.) or stolen art crimes.

## `fieldOffice` (type: `string`):

Filter wanted persons by FBI field office. Example: 'miami', 'new\_york', 'los\_angeles'. Leave blank for all offices.

## `status` (type: `string`):

Filter wanted persons by status. Leave blank for active (default). Use 'captured' for captured fugitives.

## `personClassification` (type: `string`):

Filter wanted persons by classification type.

## `crimeCategory` (type: `string`):

Filter art crimes by category. Leave blank for all categories.

## `maxItems` (type: `integer`):

Maximum number of records to return.

## Actor input object example

```json
{
  "mode": "wantedPersons",
  "status": "",
  "personClassification": "",
  "crimeCategory": "",
  "maxItems": 50
}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "mode": "wantedPersons",
    "fieldOffice": "",
    "maxItems": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("crawlergang/fbi-crime-data-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "mode": "wantedPersons",
    "fieldOffice": "",
    "maxItems": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("crawlergang/fbi-crime-data-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "mode": "wantedPersons",
  "fieldOffice": "",
  "maxItems": 50
}' |
apify call crawlergang/fbi-crime-data-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=crawlergang/fbi-crime-data-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/VcRN7WCQpV88nZsp3/builds/PQtgVGTfUNbBhgc9V/openapi.json
