How FirmTracer Works
We believe regulatory data should be instantly accessible, permanently archived, and fully transparent. Here is exactly where our data comes from and how we process it.
Official Data Sources
We do not accept user-submitted data. Every record on FirmTracer is pulled directly from official government registrars via automated pipelines.
Data Methodology
Firm Matching
FCA firms are matched to their corporate entity via the specific Companies House Number returned directly by the FCA API payload. We rely strictly on the regulator's assigned linkage rather than fuzzy name matching.
Enforcement Linkage
Enforcement actions are linked against Firm Reference Numbers (FRN) identified in the penalty documents. Unresolved historical actions lacking strict FRNs are stored globally.
Completeness Scoring
Firm profiles display a dynamically assigned completenessScore reflecting the breadth of ingested fields (e.g. Website, Trading Names, SIC Codes). Profiles must breach a minimum completeness threshold before becoming publicly indexed to prevent thin-page inflation.
Current Limitations
Individual Prohibition Orders
While major Firm Enforcements are archived reliably, unstructured prohibition orders banning specific private individuals remain partially indexed as we train extraction models.
Permission Details
Top-level business authorizations are fully supported, but the nested granular sub-permissions (e.g., specific derivative asset classes allowed) are currently simplified or omitted pending Phase 2 data expansions.
Non-UK Jurisdictions (Phase 3+)
FirmTracer is currently strictly scoped to the United Kingdom jurisdiction. All cross-border flags relate exclusively to external entities encountering UK enforcement action.
Public Pipeline Audit Log
We operate transparently. Below is the live immutable log of our backend data ingestion workers mapped directly from admin_data.scrape_log.
| Job Name | Started At | Status | Added | Updated | Failed | Duration |
|---|---|---|---|---|---|---|
| db-keepalive | 15 Mar 2026, 18:38 UTC | Success | 0 | 0 | 0 | 0.1s |
| db-keepalive | 15 Mar 2026, 12:52 UTC | Success | 0 | 0 | 0 | 0.1s |
| J05-ai-summariser | 15 Mar 2026, 08:58 UTC | Partial | 0 | 10 | 10 | - |
| J05-ai-summariser | 15 Mar 2026, 08:37 UTC | Failed | 0 | 0 | 20 | - |
| J05-ai-summariser | 15 Mar 2026, 08:24 UTC | Failed | 0 | 0 | 20 | - |
| J05-ai-summariser | 15 Mar 2026, 08:03 UTC | Partial | 0 | 12 | 8 | - |
| db-keepalive | 15 Mar 2026, 06:56 UTC | Success | 0 | 0 | 0 | 0.1s |
| J05-ai-summariser | 15 Mar 2026, 05:28 UTC | Success | 0 | 0 | 0 | - |
| cross-border-conflict-scan | 15 Mar 2026, 05:17 UTC | Success | 0 | 0 | 0 | 2.0s |
| companies-house-sync | 15 Mar 2026, 05:01 UTC | Success | 0 | 25 | 0 | 100.2s |
| fca-enforcement-scrape | 15 Mar 2026, 04:55 UTC | Success | 0 | 0 | 0 | 8.6s |
| fca-register-sync | 15 Mar 2026, 04:35 UTC | Success | 0 | 0 | 0 | 0.2s |
| fca-enforcement-scrape | 15 Mar 2026, 02:40 UTC | Failed | 0 | 0 | 0 | 0.0s |
| J05-ai-summariser | 15 Mar 2026, 02:15 UTC | Success | 0 | 1 | 0 | - |
| db-keepalive | 15 Mar 2026, 02:13 UTC | Success | 0 | 0 | 0 | 0.1s |
| db-keepalive | 14 Mar 2026, 18:37 UTC | Success | 0 | 0 | 0 | 0.1s |
| db-keepalive | 14 Mar 2026, 12:49 UTC | Success | 0 | 0 | 0 | 0.1s |
| J05-ai-summariser | 14 Mar 2026, 09:26 UTC | Failed | 0 | 0 | 1 | - |
| J05-ai-summariser | 14 Mar 2026, 09:21 UTC | Failed | 0 | 0 | 1 | - |
| J05-ai-summariser | 14 Mar 2026, 09:17 UTC | Failed | 0 | 0 | 1 | - |