# FBI Data Scraper (`crawlerbros/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/crawlerbros/fbi-crime-data-scraper.md
- **Developed by:** [Crawler Bros](https://apify.com/crawlerbros) (community)
- **Categories:** Automation, Developer tools, Agents
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## 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 a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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("crawlerbros/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("crawlerbros/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 crawlerbros/fbi-crime-data-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "FBI Data Scraper",
        "description": "Scrape FBI public data: wanted persons (fugitives, missing persons, terrorists) and stolen art crimes from the official FBI API. No API key required.",
        "version": "0.2",
        "x-build-id": "I6pEJ5adKdS3PHefH"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/crawlerbros~fbi-crime-data-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-crawlerbros-fbi-crime-data-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/crawlerbros~fbi-crime-data-scraper/runs": {
            "post": {
                "operationId": "runs-sync-crawlerbros-fbi-crime-data-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/crawlerbros~fbi-crime-data-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-crawlerbros-fbi-crime-data-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "mode": {
                        "title": "Mode",
                        "enum": [
                            "wantedPersons",
                            "artCrimes"
                        ],
                        "type": "string",
                        "description": "What FBI data to retrieve: wanted persons (fugitives, missing persons, etc.) or stolen art crimes.",
                        "default": "wantedPersons"
                    },
                    "fieldOffice": {
                        "title": "Field Office (Wanted only)",
                        "type": "string",
                        "description": "Filter wanted persons by FBI field office. Example: 'miami', 'new_york', 'los_angeles'. Leave blank for all offices."
                    },
                    "status": {
                        "title": "Status (Wanted only)",
                        "enum": [
                            "",
                            "captured"
                        ],
                        "type": "string",
                        "description": "Filter wanted persons by status. Leave blank for active (default). Use 'captured' for captured fugitives.",
                        "default": ""
                    },
                    "personClassification": {
                        "title": "Person Classification (Wanted only)",
                        "enum": [
                            "",
                            "Main",
                            "Victim",
                            "Victim (Juvenile)"
                        ],
                        "type": "string",
                        "description": "Filter wanted persons by classification type.",
                        "default": ""
                    },
                    "crimeCategory": {
                        "title": "Crime Category (Art Crimes only)",
                        "enum": [
                            "",
                            "paintings",
                            "sculptures",
                            "prints",
                            "drawings",
                            "decorative-arts",
                            "silver",
                            "ceramics",
                            "textiles",
                            "judaica",
                            "numismatic",
                            "other-collectibles"
                        ],
                        "type": "string",
                        "description": "Filter art crimes by category. Leave blank for all categories.",
                        "default": ""
                    },
                    "maxItems": {
                        "title": "Max Items",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Maximum number of records to return.",
                        "default": 50
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
