FBI Most Wanted Search — Watchlist Intelligence is an Apify actor on ApifyForge. Watchlist intelligence over the FBI Most Wanted database. Screen people for KYC, score risk and danger, detect captures and watchlist changes, and get prioritised review queues with recommended actions. It costs $0.002 per record-fetched. Best for investigators, analysts, and risk teams conducting due diligence, regulatory tracking, or OSINT research. Not ideal for real-time surveillance or replacing classified intelligence systems. Maintenance pulse: 90/100. Last verified March 27, 2026. Built by Ryan Clinton (ryanclinton on Apify).

AIDEVELOPER TOOLS

FBI Most Wanted Search — Watchlist Intelligence

FBI Most Wanted Search — Watchlist Intelligence is an Apify actor available on ApifyForge at $0.002 per record-fetched. Watchlist intelligence over the FBI Most Wanted database. Screen people for KYC, score risk and danger, detect captures and watchlist changes, and get prioritised review queues with recommended actions. Deterministic decisions, not raw rows. Browse, screening, and case-management modes.

Best for investigators, analysts, and risk teams conducting due diligence, regulatory tracking, or OSINT research.

Not ideal for real-time surveillance or replacing classified intelligence systems.

Try on Apify Store
$0.002per event
Last verified: March 27, 2026
90
Actively maintained
Maintenance Pulse
$0.002
Per event

What to know

  • Limited to publicly available and open-source information.
  • Report depth depends on the availability of upstream government and public data sources.
  • Requires an Apify account — free tier available with limited monthly usage.

Maintenance Pulse

90/100
Last Build
Today
Last Version
1d ago
Builds (30d)
8
Issue Response
N/A

Cost Estimate

How many results do you need?

record-fetcheds
Estimated cost:$0.20

Pricing

Pay Per Event model. You only pay for what you use.

EventDescriptionPrice
record-fetchedCharged per FBI wanted person record retrieved.$0.002

Example: 100 events = $0.20 · 1,000 events = $2.00

Documentation

FBI Most Wanted watchlist intelligence — turn records into analyst-ready decisions

Cut your FBI watchlist review workload. Screen people, prioritize risk, suppress alert noise, and automatically generate analyst review queues from FBI Most Wanted data — so a human works a short prioritised list instead of paging raw records.

The FBI API gives you records. This actor tells you what needs action.

Not a scraper — an intelligence layer. Built for compliance teams, KYC screening, OSINT analysts, journalists, and security operations.

Person  →  Screening  →  Risk assessment  →  Review queue  →  Action recommendation

Screen people against the FBI's Most Wanted database and get back decisions, not raw rows. This Apify actor queries the FBI's public Wanted Persons API, then classifies every record with a danger level, a crime category, a reward tier, a 0-100 risk score, and a recommended action (escalate / review / monitor / no-action) — plus fuzzy name-matching for KYC screening and cross-run change detection for continuous monitoring. No API key required.


FBI scraper vs intelligence engine

Before vs after

Raw FBI API gives you a poster:

{ "title": "JOHN DOE", "warning_message": "Armed and dangerous", "reward_text": "$100,000" }

…now what should I do?

This actor gives you the decision:

{ "riskLevel": "critical", "reviewPriority": 94, "recommendedAction": { "action": "escalate" },
  "eventPriority": "high", "attentionScore": 91, "sla": { "recommendedReviewWithinHours": 2 } }

Escalate immediately — within 2 hours.

Why teams switch from FBI scrapers

ProblemTraditional FBI scrapersThis actor
Too many records✅ Prioritized (review queue)
False positives✅ Explained (match tree)
Alert fatigue✅ Suppressed (alert policy)
No screening workflow✅ Built in
No history✅ Persistent (intelligence history)
No action guidance✅ Recommended

Capability comparison

CapabilityFBI public APICompetitor scrapersThis actor
Search & filter
Name/attribute screening (KYC)
Risk score + danger level
Review queue + SLA
Change detection⚠️
Alert suppression
Intelligence history + risk drift
Recommended actions

Who is this for?

Use this if you do:

  • ✅ Compliance screening & KYC onboarding — screeningDecision (escalate / review / no-action) with matching/conflicting factors and an analystNotes audit trail
  • ✅ Due diligence & OSINT investigations — risk scores, danger levels, crime categories, subjectFingerprint, similarCases
  • ✅ Security operations — Slack/Discord alerts routed on intelligenceEvent + eventPriority, noise suppressed
  • ✅ Watchlist monitoring & journalism — captures, new listings, and reward changes via a named watchlist; the run digest answers "what changed?"

Skip this if you only need:

  • ❌ Raw FBI records with no scoring or workflow — a free scraper is enough
  • ❌ A one-off manual lookup of a single person
  • ❌ The verbatim FBI API response (this adds a decision layer on top; set outputProfile: full if you want both)

Everything is deterministic — every score, tier, and verdict comes from documented rules, no LLM and no randomness, so the output is reproducible and auditable.


What you also get — screening decisions, review queue with SLA, change detection, and alert suppression

What is watchlist intelligence?

Traditional watchlists (and raw FBI scrapers) answer one question: who is on the list?

Watchlist intelligence answers the four questions an analyst actually has:

  • Who matters? — risk score, attention score, review priority
  • Why do they matter? — danger level, crime category, threat archetype, match tree
  • What changed? — change flags, event priority, risk drift, case journey
  • What should happen next? — recommended action, screening decision, review queue + SLA

This actor is built around the second set of questions. The FBI data is public; the decision layer on top is the product.

From a full result set to a ranked queue

A broad FBI query can return hundreds of records. The decision layer collapses that into a short, prioritised work list so an analyst isn't paging raw data:

Full result set  →  focus filter  →  risk + screening scoring  →  alert suppression  →  ranked review queue

For example, a wide query in case-management mode with focus: critical-only surfaces only the records that cross the bar — the run summary's reviewQueue { critical, high, medium, low } tells you exactly how many landed in each tier. The exact reduction depends on your query and thresholds; the point is the analyst works the queue, not the dump.

The intelligence pipeline

Each record passes through a layered pipeline — the data is public, the decision layer is the product:

Raw FBI record
   ↓  Identity resolution      (screening match — matchedOn / conflicts / missingData)
   ↓  Threat classification    (crimeCategory, threatArchetype, dangerLevel)
   ↓  Risk prioritization      (riskScore + riskBreakdown, attentionScore, operationalStatus)
   ↓  Change detection         (changeFlag, eventPriority, intelligenceHistory + riskDrift + caseJourney)
   ↓  Alert suppression        (alertPolicy.shouldNotify — only what matters)
   ↓  Operational recommendation (recommendedAction, screeningDecision, analystNotes)

Over scheduled runs the intelligenceHistory block accrues per subject — first-seen, days tracked, update count, reward changes, risk trend, and a caseJourney event timeline. The data is public; the accumulated intelligence record is what compounds.

The intelligence stack — from raw FBI record through identity resolution, threat classification, risk prioritization, change detection, and alert suppression to a decision and review queue

Typical workflows

  • KYC screening{ "screeningSubjects": [...] } → each subject gets a screeningDecision (escalate / review / no-action) with a per-field matchTree.
  • Daily monitoring{ "watchlistName": "daily" } → the summary reports { captures, newListings, statusChanges }; alerts fire only on meaningful change.
  • Analyst queue{ "mode": "case-management" } → a prioritised reviewQueue { critical, high, medium } of cases with SLAs, not raw records.

Key features

  • Decision layer on every record -- Each wanted person is tagged with dangerLevel (armed-and-dangerous / caution / standard), crimeCategory (terrorism, violent-crime, crimes-against-children, cyber, financial-crime, kidnapping, missing-person, and more), rewardTier, a 0-100 riskScore with riskLevel, and a recommendedAction your automation can branch on
  • KYC / screening mode -- Pass a list of people via screeningSubjects; each is fuzzy-matched (name + sex + race + age) against returned wanted persons and emitted with a matchScore, band (strong / possible / weak), and a screening verdict (escalate / review / no-action)
  • Cross-run watchlist monitoring -- Set a watchlistName and every record carries a changeFlag (NEW / CAPTURED / STATUS_CHANGED / REWARD_CHANGED / UPDATED / UNCHANGED) diffed against the previous run, so scheduled runs surface captures and new listings
  • Eight poster classifications -- Browse Ten Most Wanted, standard wanted, seeking information, law enforcement assistance, missing persons, kidnappings, parental kidnappings, and ViCAP cases
  • Output profiles -- minimal (automation essentials), standard (full decision layer), full (everything incl. raw fields), llm (compact agent context)
  • Run summary + KV mirror -- A final summary record with danger/category distributions, coverage, and watchlist deltas; also mirrored to the SUMMARY key-value store key
  • Slack / Discord alerts -- Optional webhookUrl posts a rich embed when escalation-worthy records, captures, or new listings are found
  • Deterministic + auditable -- Every score, tier, and verdict comes from documented rules (no LLM, no randomness); dangerSignals and riskScore drivers explain each decision
  • Automatic pagination + endpoint fallback -- Fetches across API pages (50 per page) and falls back between the FBI's two base URLs automatically
  • Clean text + full raw record -- Strips HTML entities from text fields; preserves every raw FBI field (physical description, images, files, reward amounts, field offices) alongside the decision layer
  • No API key required -- The FBI's Wanted Persons API is publicly accessible; the actor calls it on your behalf

How to use FBI Most Wanted Search

Using Apify Console

  1. Navigate to the FBI Most Wanted Search actor page on the Apify Store and click Try for free.
  2. On the Input tab, configure your search filters. All fields are optional -- leave them blank to browse the most recent wanted persons across all classifications.
  3. Set Max Results to control how many records to return (default is 20, maximum is 500).
  4. Click Start to run the actor.
  5. Once the run finishes, open the Dataset tab to view, filter, and export results as JSON, CSV, or Excel.

Using the API

Call the actor programmatically using the Apify REST API, official client libraries, or cURL:

curl "https://api.apify.com/v2/acts/E1an0B0Syquyf8BXG/runs" \
  -X POST \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -d '{
    "posterClassification": "ten",
    "maxResults": 10
  }'

Input parameters

ParameterTypeRequiredDefaultDescription
titleStringNo--Browse mode: search by person name or case title (partial match supported)
posterClassificationSelectNo--Filter by poster type: ten, default, information, law, missing, kidnap, parental, vicap
fieldOfficeStringNo--Filter by FBI field office (e.g., newyork, losangeles, chicago, dallas, miami)
statusSelectNo--Filter by case status: na (Not Captured), captured, recovered, located, surrendered, deceased
raceStringNo--Filter by race (e.g., white, black, asian)
sexSelectNo--Filter by sex: Male or Female
maxResultsIntegerNo20Maximum number of results to return in browse mode (1--500)
screeningSubjectsArrayNo--Screening mode: a list of people to fuzzy-match against the FBI database. Each subject: { subjectId, fullName, aliases[], sex, race, nationality, yearOfBirth }. When set, browse filters are ignored.
screeningListNameStringNo--Save the screening subjects under a name (KV-persisted) for continuous screening. Supply both to save/update; supply only the name on later runs to reuse the list without re-uploading.
focusSelectNoallOpinionated result filter applied after scoring: critical-only, armed-and-dangerous, terrorism, children, cyber, financial-crime, ten-most-wanted, reward-above-100k, new-and-changed. Only matching records are emitted and charged.
modeSelectNostandardstandard emits full wanted-person records; case-management emits lean recordType: case review-queue records (caseId, priority, status, reviewPriority, queuePosition).
watchlistNameStringNo--Enable cross-run change detection. Records get a changeFlag diffed against the previous run on the same watchlist name.
outputProfileSelectNostandardField verbosity: minimal, standard, full, llm
includeSummaryBooleanNotrueEmit a final run-summary record with distributions, coverage, and watchlist deltas
webhookUrlStringNo--Slack or Discord webhook for high-priority alerts (escalations, captures, new listings)

Example input — browse mode

{
    "posterClassification": "ten",
    "status": "na",
    "maxResults": 50
}

Example input — screening mode (KYC / due diligence)

{
    "screeningSubjects": [
        { "subjectId": "cust-8842", "fullName": "John Smith", "sex": "Male", "yearOfBirth": 1980 },
        { "subjectId": "cust-8843", "fullName": "Maria Garcia", "sex": "Female" }
    ],
    "outputProfile": "standard"
}

Example input — scheduled monitoring

{
    "posterClassification": "ten",
    "watchlistName": "ten-most-wanted",
    "webhookUrl": "https://hooks.slack.com/services/T000/B000/XXXX"
}

Example input — case-management (analyst review queue)

{
    "screeningListName": "customers",
    "mode": "case-management",
    "watchlistName": "kyc-daily"
}

In case-management mode the dataset is a queue of recordType: case records — caseId, priority, status (open / monitoring / closed), reviewPriority, and queuePosition — so an analyst works a prioritised case list instead of paging raw records. The summary's reviewQueue gives the { critical, high, medium, low } counts.

Tips

  • All fields are optional. Running the actor with no input returns the most recent wanted persons across all classifications.
  • Field office names are lowercase and concatenated. Enter newyork, losangeles, saltlakecity -- not New York or Los Angeles.
  • Combine filters for precision. Setting posterClassification to ten and status to na returns only currently active Ten Most Wanted Fugitives.
  • Poster classifications explained: ten = Ten Most Wanted Fugitives, default = standard wanted posters, information = seeking public tips, law = law enforcement assistance, missing = missing persons, kidnap = kidnappings and missing persons, parental = parental kidnappings, vicap = Violent Criminal Apprehension Program.
  • Start small, then expand. Use maxResults of 20--50 for exploratory searches before scaling up to the full 500-record maximum.

Output

Sample output — wanted persons scored by danger level, crime category, risk level, recommended action, and review priority

Each record carries the full raw FBI profile plus a deterministic decision layer. Here is a representative standard-profile example (decision fields shown first):

{
    "schemaVersion": "2.0",
    "recordType": "wanted-person",
    "eventId": "9f8a1c4e2b7d6a3f0c5e1d2b",
    "dangerLevel": "armed-and-dangerous",
    "dangerSignals": ["explicit \"armed and dangerous\" warning", "risk:danger:armed-and-dangerous (+45)"],
    "crimeCategory": "violent-crime",
    "crimeCategories": ["violent-crime", "financial-crime"],
    "rewardTier": "significant",
    "rewardUsd": 100000,
    "classificationLabel": "Wanted",
    "caseStatus": "active",
    "isActive": true,
    "isCaptured": false,
    "riskScore": 78,
    "riskLevel": "critical",
    "materiality": "blocker",
    "recommendedAction": {
        "action": "escalate",
        "label": "Active armed-and-dangerous subject — do not approach; route to law enforcement.",
        "owner": "security",
        "reason": "explicit \"armed and dangerous\" warning"
    },
    "agentContract": { "decision": "act-now", "confidence": 0.85, "nextAction": "escalate", "costToAct": 0.002 },
    "eventTaxonomy": "armed-and-dangerous-alert",
    "summary": "JOHN DOE — Wanted, violent crime, danger armed-and-dangerous, status active, reward up to $100,000.",
    "match": null,
    "changeFlag": null,
    "uid": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6",
    "title": "JOHN DOE",
    "description": "John Doe is wanted for his alleged involvement in a multi-state wire fraud scheme...",
    "aliases": null,
    "dateOfBirth": ["January 15, 1975"],
    "placeOfBirth": "Houston, Texas",
    "race": "White",
    "sex": "Male",
    "hair": "Brown",
    "eyes": "Blue",
    "heightMin": 510,
    "heightMax": 510,
    "weightMin": 180,
    "weightMax": 200,
    "ageMin": 48,
    "ageMax": 52,
    "nationality": "American",
    "scarsAndMarks": "Tattoo on left forearm",
    "build": "Medium",
    "complexion": "Light",
    "warningMessage": "SHOULD BE CONSIDERED ARMED AND DANGEROUS",
    "rewardText": "The FBI is offering a reward of up to $100,000 for information leading to the arrest of John Doe.",
    "rewardMin": 0,
    "rewardMax": 100000,
    "details": "John Doe is wanted for allegedly orchestrating a multi-state wire fraud scheme...",
    "caution": "John Doe has been known to use multiple aliases and fraudulent identification documents.",
    "additionalInformation": null,
    "remarks": null,
    "status": "na",
    "personClassification": "Main",
    "posterClassification": "default",
    "fieldOffices": ["houston"],
    "subjects": ["White-Collar Crime"],
    "occupations": "Financial Advisor",
    "possibleCountries": null,
    "possibleStates": "Texas, California",
    "images": [
        {
            "caption": "Photograph of John Doe",
            "original": "https://www.fbi.gov/wanted/fugitives/@@images/image/original",
            "large": "https://www.fbi.gov/wanted/fugitives/@@images/image/large",
            "thumb": "https://www.fbi.gov/wanted/fugitives/@@images/image/thumb"
        }
    ],
    "files": [],
    "fbiUrl": "https://www.fbi.gov/wanted/fugitives/john-doe",
    "modified": "2024-11-20T14:30:00+00:00",
    "publication": "2023-06-15T10:00:00+00:00",
    "extractedAt": "2025-01-15T08:45:12.345Z"
}

Output fields

FieldTypeDescription
uidStringUnique FBI identifier for the record
titleStringPerson's name or case title (typically uppercase)
descriptionString or nullPlain-text case summary (HTML stripped)
aliasesString[] or nullKnown aliases
dateOfBirthString[] or nullArray of dates of birth used by the individual
placeOfBirthString or nullCity and state/country of birth
raceString or nullRacial description
sexString or nullSex -- Male or Female
hairString or nullHair color
eyesString or nullEye color
heightMin / heightMaxNumber or nullHeight range in inches (encoded as integer, e.g., 510 = 5'10")
weightMin / weightMaxNumber or nullWeight range in pounds
ageMin / ageMaxNumber or nullEstimated age range
nationalityString or nullNationality
scarsAndMarksString or nullDescription of scars, tattoos, birthmarks, or other identifying marks
buildString or nullBody build (e.g., Medium, Heavy, Slim)
complexionString or nullSkin complexion (e.g., Light, Medium, Dark)
warningMessageString or nullWarning to the public (e.g., "ARMED AND DANGEROUS") -- HTML stripped
rewardTextString or nullHuman-readable reward description -- HTML stripped
rewardMin / rewardMaxNumberReward amount range in USD (0 if no reward)
detailsString or nullExtended case details -- HTML stripped
cautionString or nullCaution information -- HTML stripped
additionalInformationString or nullSupplementary case information -- HTML stripped
remarksString or nullAdditional remarks -- HTML stripped
statusStringCase status: na, captured, recovered, located, surrendered, deceased
personClassificationStringPerson classification (e.g., Main, Victim)
posterClassificationStringPoster type (e.g., default, ten, missing, information)
fieldOfficesString[] or nullArray of FBI field offices handling the case
subjectsString[] or nullCrime categories (e.g., Cyber's Most Wanted, White-Collar Crime)
occupationsString or nullKnown occupation(s)
possibleCountriesString or nullCountries where the person may be located
possibleStatesString or nullUS states where the person may be located
imagesObject[]Array of image objects with caption, original, large, and thumb URLs
filesObject[]Array of file attachments with url and name
fbiUrlStringDirect link to the person's official FBI poster page
modifiedStringISO 8601 timestamp of the last FBI record update
publicationStringISO 8601 timestamp of the original publication date
extractedAtStringISO 8601 timestamp of when this actor extracted the data

Decision-layer fields

These deterministic fields are computed on top of the raw FBI record. All enums are stable (additive within a major version) so downstream automation can branch on them.

FieldTypeDescription
rankNumber1-based rank within the run — by match score in screening mode, by riskScore in browse mode (records are returned highest-risk first)
dangerLevelStringarmed-and-dangerous | caution | standard | not-applicable (missing persons) | unknown
dangerSignalsString[]Plain-English reasons behind the danger level + risk-score drivers
crimeCategoryStringPrimary category: terrorism, violent-crime, crimes-against-children, sexual-offense, cyber-crime, financial-crime, organized-crime, kidnapping, missing-person, drug-crime, public-corruption, other, unknown
crimeCategoriesString[]All matched crime categories
riskIndicatorsObjectBooleans: terrorism, violent, crimesAgainstChildren, sexualOffense, cyber, financialCrime, organizedCrime, kidnapping, missingPerson, drug
rewardTierStringmajor (≥$1M) | significant (≥$100k) | standard (>$0) | none | unknown
rewardUsdNumber or nullReward amount in USD (parsed from reward_max or reward text)
classificationLabelStringOfficial poster classification title (e.g. "Ten Most Wanted Fugitive")
caseStatusStringactive | resolved | deceased | unknown
isActive / isCapturedBooleanConvenience flags derived from status
riskScoreNumber0-100 composite of danger + reward + classification signals
riskBreakdownObjectThe per-component points that sum to riskScore (e.g. { danger: 45, reward: 15, tenMostWanted: 20 }) — auditable
riskLevelStringcritical | high | medium | low
materialityStringblocker | major | minor | cosmetic
threatArchetypeStringHuman-readable persona: terror-network-affiliate / child-exploitation-subject / violent-repeat-offender / organized-crime-operative / high-value-financial-fraudster / cyber-threat-actor / international-flight-risk / career-fugitive / missing-or-endangered / unclassified
operationalStatusStringOperational stage: newly-listed / actively-pursued / high-public-interest / cold-case / captured / resolved / deceased / unknown
attentionScore / attentionLevelNumber / String0-100 "what should I look at today?" axis (recency + salience), distinct from riskScore; level = high/medium/low
reviewPriorityNumber0-100 analyst-queue sort key (risk + attention + match + change). Drives queuePosition.
noiseScoreNumber0-100 likelihood this record wastes analyst time (high = low value). The noise side of the queue engine.
reviewEffortStringEstimated effort to clear: low / medium / high (high = ambiguous match with conflicts/gaps)
slaObject{ recommendedReviewWithinHours, tier } — P1 (2h) / P2 (24h) / P3 (72h) / P4 (168h)
queuePositionNumber or null1-based slot in the review queue (escalate/review records ranked by reviewPriority); null otherwise
benchmarksObject or nullPercentiles within this run's result set (not population): { riskPercentile, rewardPercentile, attentionPercentile, cohortSize }. Null below 5 records.
similarCasesArrayWithin-run operational similarity: [{ uid, title, reason }] sharing crime category / archetype / field office ("have we seen this before?")
sourceStringWatchlist source id (fbi-wanted) — common-envelope field so this plugs into a multi-watchlist pipeline
alertPolicyObject{ shouldNotify, reason } — the alert-fatigue gate that drives the webhook; branch on shouldNotify
investigationPackObjectOSINT pivot data analysts gather by hand: { aliases[], possibleCountries[], possibleStates[], fieldOffices[], linkedCases[] }
executiveSummary / analystSummaryStringDeterministic narratives — exec is risk-framed, analyst is history-framed (days tracked, reward/status changes, risk trend)
intelligenceEventObjectSignal-centric event for automation: { type, severity, summary } — the "what happened" your Slack/Zapier rule routes on
timelineObject{ daysWanted, daysSinceUpdate, recordFreshness, freshnessScore, caseVelocity } (caseVelocity = active / dormant / unknown) from the FBI publication/modified dates + watchlist changes
subjectFingerprintObjectCompact identity descriptor for matching: { sex, race, ageRange, heightRange, build, aliasCount, aliasRisk, warningFlags[] }
analystNotesString[]Deterministic plain-English audit-trail bullets (status, reward, classification, danger, aliases, changes) — paste-ready for a case file
confidenceObject{ score, level, components[] } — record completeness (or match confidence in screening mode)
recommendedActionObject{ action, label, owner, reason } — action ∈ escalate | review | monitor | no-action
agentContractObjectCompact agent surface: { decision, confidence, nextAction, costToAct }
eventTaxonomyStringRouting tag (ten-most-wanted, capture-confirmed, screening-match, etc.)
summary / whyThisMatters / whyNowStringPlain-English LLM-friendly narratives
matchObject or nullScreening mode only: { matchedSubjectId, score, band, level, basis[], mismatchSignals[] }
screeningDecisionObject or nullScreening mode only — consolidated compliance verdict: { decision, confidence, certainty, band, matchingFactors[], conflictingFactors[], matchedOn[], missingData[], matchTree[] }. matchTree is per-field {field, result, weight} — courtroom-grade explainability.
changeFlagString or nullWatchlist mode only: NEW | CAPTURED | STATUS_CHANGED | REWARD_CHANGED | UPDATED | UNCHANGED
eventPriorityString or nullSignificance of the change (distinct from danger severity): critical (capture) / high / medium / low / none. Route alerts on this.
changedFields / changeSummaryArray / StringWhat changed since the last watchlist run
intelligenceHistoryObject or nullPersistent cross-run record: { firstSeen, lastChangedAt, daysTracked, runsSeen, updates, rewardChanges, statusChanges, updateFrequency, riskTrend, riskDrift, attentionTrend, caseJourney[] } — accrues over scheduled runs

Run summary record (recordType: "summary")

When includeSummary is on (default), the last dataset record — also mirrored to the SUMMARY key-value store key — answers "what matters in this run?" without paging every result:

  • headline — one-line takeaway, paste-ready for Slack/email
  • recommendedReview — the records flagged escalate/review, the analyst's work queue
  • reviewQueue{ critical, high, medium, low } counts for the review queue
  • overallRisk, highRiskCount, dangerDistribution, categoryDistribution, focus, outputMode
  • geotopRiskStates and topRiskFieldOffices, each { name, count, totalRisk, maxDanger } aggregated across this run's records (within-run sums, not a population-wide model)
  • digest — curated lists: highestRiskSubjects, capturesDetected, newCriticalCases, rewardChanges, terrorismCases, childExploitationCases
  • watchlist{ newListings, captures, statusChanges } when a watchlist is set
  • coverage, trust, and a manifest pinning the internal rule-table versions

Use cases

  • Journalism and investigations -- Research fugitives, missing persons, and crime patterns across FBI classifications for investigative reporting and data journalism projects
  • Compliance screening -- Screen individuals against FBI wanted lists as part of KYC (Know Your Customer), AML (Anti-Money Laundering), or enhanced due diligence workflows
  • Public safety applications -- Build alerting systems, dashboards, or notification tools that surface newly added or updated FBI wanted persons for community awareness
  • Academic research -- Study law enforcement trends, crime demographics, reward structures, or regional patterns using structured bulk data from an authoritative source
  • Open-source intelligence (OSINT) -- Integrate FBI wanted person data into OSINT workflows for threat analysis, investigations, or intelligence aggregation
  • Cross-referencing watchlists -- Combine FBI data with Interpol Red Notices, OFAC sanctions, OpenSanctions, and other watchlists for comprehensive person screening
  • Missing persons awareness -- Extract missing persons and kidnapping cases to power community alert systems, social media campaigns, or non-profit outreach platforms
  • Continuous monitoring -- Schedule daily or weekly runs to detect newly added wanted persons, status changes (captures, recoveries), or updated case details over time
  • Reward tracking -- Filter and monitor cases with monetary rewards to build reward aggregation tools or track high-value fugitive cases
  • Law enforcement technology -- Feed structured FBI data into intelligence platforms, case management systems, or inter-agency data sharing tools

API & Integration

Python

from apify_client import ApifyClient

client = ApifyClient("YOUR_API_TOKEN")

run_input = {
    "posterClassification": "ten",
    "status": "na",
    "maxResults": 20,
}

run = client.actor("E1an0B0Syquyf8BXG").call(run_input=run_input)

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    reward = f"${item['rewardMax']:,}" if item.get("rewardMax") else "None"
    print(f"{item['title']} -- Status: {item['status']} -- Reward: {reward}")

JavaScript

import { ApifyClient } from "apify-client";

const client = new ApifyClient({ token: "YOUR_API_TOKEN" });

const run = await client.actor("E1an0B0Syquyf8BXG").call({
    posterClassification: "ten",
    status: "na",
    maxResults: 20,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
for (const item of items) {
    const reward = item.rewardMax ? `$${item.rewardMax.toLocaleString()}` : "None";
    console.log(`${item.title} -- Status: ${item.status} -- Reward: ${reward}`);
}

cURL

# Start a run
curl "https://api.apify.com/v2/acts/E1an0B0Syquyf8BXG/runs" \
  -X POST \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -d '{"posterClassification": "ten", "maxResults": 10}'

# Fetch dataset results (use defaultDatasetId from the run response)
curl "https://api.apify.com/v2/datasets/DATASET_ID/items?format=json" \
  -H "Authorization: Bearer YOUR_API_TOKEN"

Integrations

Connect FBI Most Wanted Search to your existing tools and workflows:

  • Google Sheets -- Automatically export results to a spreadsheet for team review and record-keeping
  • Slack / Email -- Get notified when new wanted persons match your criteria using Apify webhooks
  • Zapier / Make -- Route data to CRMs, databases, case management systems, or hundreds of other third-party apps
  • REST API -- Fetch results programmatically from any language or platform using the Apify dataset API
  • Scheduled runs -- Set up Apify schedules to run daily, weekly, or monthly screenings automatically
  • Webhooks -- Trigger downstream actions (notifications, database writes, alerts) whenever a run completes

Use in Dify

Drop this actor into Dify workflows via the Apify plugin's Run Actor node. Every wanted person returns scored, classified, and recommended as structured JSON — dangerLevel (armed-and-dangerous / caution / standard), riskLevel (critical / high / medium / low), and a recommendedAction.action (escalate / review / monitor / no-action) your downstream if/else node branches on. A raw FBI scraper pointed at the same API returns poster fields; this returns decisions.

  • Actor ID: ryanclinton/fbi-wanted-search
  • Sample input (screen a person for a KYC / onboarding gate):
{
    "screeningSubjects": [
        { "subjectId": "applicant-4471", "fullName": "John Smith", "sex": "Male", "yearOfBirth": 1980 }
    ],
    "outputProfile": "standard"
}
  • Branching example — a Dify if/else node routes on the decision enum, no prose parsing:
    • recommendedAction.action == "escalate" → block onboarding, notify compliance
    • recommendedAction.action == "review" → send to an analyst queue with match.mismatchSignals
    • recommendedAction.action == "no-action" → proceed
  • Opt-in modes Dify workflows can leverage: set screeningSubjects for the KYC match path, or set watchlistName on a scheduled run and branch on changeFlag == "CAPTURED" / "NEW" to fire alerts only when something changed.
  • The recommendedAction object (action + owner + reason) and the dangerSignals[] / match.basis[] arrays are usable verbatim in a Dify message node — no LLM rewriting needed.

How it works

The actor queries the FBI's public Wanted Persons API (with automatic dual-endpoint fallback and pagination), cleans and normalises each record, runs the deterministic decision layer described above, and pushes the result to the Apify dataset — exportable as JSON, CSV, or Excel. No API key required. See The intelligence pipeline for the decision stages.


Performance & cost

This actor is pay-per-result: you are charged $0.002 per record returned, plus minimal Apify platform compute. You only pay for records the actor actually returns.

ScenarioRecordsApprox. durationResult charge
Quick lookup105--10 seconds$0.02
Default search2010--15 seconds$0.04
Medium search10015--30 seconds$0.20
Large search25030--60 seconds$0.50
Maximum search50045--90 seconds$1.00
  • The actor makes lightweight JSON API calls only -- no browser rendering, no proxy required, no heavy crawling, so platform compute is negligible.
  • The spending limit is respected mid-run: if a per-run charge cap is reached, the actor stops cleanly rather than over-billing.
  • The run summary record is never charged.
  • Daily scheduled monitoring of the Ten Most Wanted list (10 records/day) costs roughly $0.60 per month in result charges.

Limitations

  • Maximum 500 results per run -- The actor caps output at 500 records per execution. For broader coverage, run multiple searches with different filter combinations.
  • FBI API availability -- Results depend on the FBI's public API being accessible. The actor tries two endpoints with automatic fallback, but prolonged API outages will cause the run to fail.
  • Public data only -- The actor retrieves only information the FBI makes publicly available through their API. Some records may have limited detail or redacted fields.
  • Height encoding -- Height values use the FBI's integer encoding (e.g., 510 means 5 feet 10 inches). You may need to parse this format in downstream processing.
  • No real-time push notifications -- The FBI API does not support webhooks or streaming. To detect changes, schedule recurring runs and compare datasets over time.
  • Cloud IP restrictions -- The FBI API may occasionally block cloud provider IP ranges. If this occurs, the actor will report the error in the run log.
  • Field office naming -- Field office names must be entered as lowercase concatenated strings (e.g., newyork, losangeles). There is no published list of valid values -- consult the FBI's website for current field office names.

Responsible use

This actor provides access to publicly available law enforcement data. The FBI's Wanted Persons database contains information about individuals who are wanted, missing, or sought for information -- not necessarily convicted of any crime. Use this data responsibly.

  • Do not treat wanted status as a conviction. A person listed as wanted by the FBI has been charged or is sought in connection with an investigation. This does not constitute a finding of guilt. Always consider the legal context and presumption of innocence.
  • Human review is essential. Do not use FBI wanted person data as the sole input for automated decisions that affect individuals -- such as denying services, blocking accounts, or taking employment actions. Human review should always be part of any decision process involving this data.
  • Handle personal data responsibly. Although this information is published by the FBI for public awareness, it pertains to identified individuals. Comply with applicable privacy laws and regulations in your jurisdiction (including GDPR where applicable) when storing, processing, or redistributing this data.
  • Use for legitimate purposes. This actor is intended for journalism, academic research, public safety, compliance screening, and civic technology. Do not use it for harassment, discrimination, vigilantism, or any purpose that could endanger individuals.
  • Verify through official channels. For any law enforcement, legal, or high-stakes compliance action, verify information directly through the FBI's official website or by contacting the relevant field office. This actor provides a data access layer, not an authoritative legal determination.

FAQ

Does this actor require an API key? No. The FBI's Wanted Persons API is publicly accessible and does not require authentication. The actor handles all API communication for you.

How is this actor priced? Pay-per-result: $0.002 per record returned, plus minimal platform compute. The run summary record is not charged, and the actor honours your per-run spending limit mid-run.

Can I screen a list of people against the FBI database? Yes. Use screeningSubjects — pass a list of people and each is fuzzy-matched (name + sex + race + age) against returned wanted persons. Records below the match threshold are not emitted, so you only see credible matches, each with a matchScore, band, and screening verdict.

How do I detect captures and new listings over time? Set a watchlistName and schedule the actor. Each run diffs against the previous run on that watchlist and tags records with a changeFlag (NEW, CAPTURED, STATUS_CHANGED, etc.). Add a webhookUrl to get a Slack/Discord alert when something changes.

How current is the data? The actor queries the FBI's live API in real time, so results are always as current as the FBI's own database. Each record includes a modified timestamp showing when the FBI last updated it, and an extractedAt timestamp showing when this actor retrieved it.

Can I search for a specific person by name? Yes. Use the title input parameter to search by name or case title. The FBI API performs a partial match, so entering a last name is usually sufficient.

What is the difference between poster classifications? ten = Ten Most Wanted Fugitives (the highest-profile cases), default = standard wanted posters, information = seeking public tips, law = law enforcement assistance requests, missing = missing persons, kidnap = kidnappings and missing persons, parental = parental kidnapping cases, vicap = Violent Criminal Apprehension Program cases involving unsolved violent crimes.

What does the status field mean? na = not yet captured/at large, captured = arrested, recovered = found (for missing persons), located = found alive, surrendered = turned themselves in, deceased = the person has died.

Can I get photographs of wanted persons? Yes. Each record includes an images array with URLs for original, large, and thumbnail versions of the person's photograph hosted on FBI servers. Not all records include images.

How do I read the height values? The FBI encodes height as an integer -- for example, 510 means 5 feet 10 inches, 602 means 6 feet 2 inches. The first digit(s) represent feet and the last two digits represent inches.

Can I filter by geographic region? Yes. Use the fieldOffice parameter to focus on a specific FBI field office. For example, miami returns cases handled by the FBI's Miami field office. Enter the field office name as a single lowercase string.

Can I combine multiple filters? Yes. All input parameters can be combined. For example, set posterClassification to default, status to na, and fieldOffice to newyork to find currently wanted persons handled by the New York field office.

Can I schedule recurring runs? Yes. Use Apify's built-in scheduler to run the actor daily, weekly, or at any custom interval. Combine with webhooks or integrations to get notified when new results appear or statuses change.

What happens if the FBI API is down? The actor tries two separate API endpoints with automatic fallback. If both endpoints are unavailable, the run will fail with an error message. You can retry the run later or set up Apify's automatic retry feature.


Related actors

ActorDescriptionLink
Interpol Red Notice SearchSearch Interpol's Red Notice database for wanted persons across 195 member countries. Combine with FBI data for comprehensive international fugitive coverage.apify.com/ryanclinton/interpol-red-notices
OFAC Sanctions SearchSearch the US Treasury OFAC SDN list for sanctioned individuals, companies, vessels, and aircraft. Pair with FBI data for compliance screening workflows.apify.com/ryanclinton/ofac-sanctions-search
OpenSanctions SearchSearch the OpenSanctions aggregated database covering sanctions, watchlists, and PEPs from multiple international jurisdictions (EU, UN, UK, and more).apify.com/ryanclinton/opensanctions-search
UK Police Crime DataSearch UK police crime reports, street-level crime data, and neighbourhood statistics for international law enforcement research and community safety analysis.apify.com/ryanclinton/uk-police-crime-data
Last verified: March 27, 2026

Ready to try FBI Most Wanted Search — Watchlist Intelligence?

Run it on your own Apify account. Apify offers a free tier with $5 of monthly credits.

Open on Apify Store