Sourcemark Sourcemark Get started free
KYB infrastructure · built for devs

Know any business.
With the receipts.

Submit a URL. Thirteen official sources run in parallel — sanctions, PEPs, business registries across 140+ jurisdictions, SEC EDGAR, threat intel, adverse media. Get a defensible verdict in seconds, with every rule linked back to the record that fired it.

No credit card · 10 scans / month · Sandbox keys included

Powered by official watchlists, registries & intel

OFAC SDN UN Consolidated UK HMT EU Consolidated Open Sanctions PEPs URLhaus OpenPhish Tranco ICANN RDAP Companies House OpenCorporates SEC EDGAR GDELT
0
Watchlists, PEP datasets & business registries wired end-to-end
0
Independent extractors run in parallel — no single slow source blocks the verdict
0%
Verdicts ship with full source attribution
0
Scoring rules — every weight & threshold in the open
01 THE RECEIPT

Every verdict comes with its evidence.

Black-box risk scores are why compliance teams hate "AI for KYB." We took the opposite bet: every rule that fires shows you the exact record it fired on — sanctioned entity row, abuse-feed entry, registry document.

source_refs on every rule. Click through to OFAC, URLhaus, or RDAP — the exact record, with timestamp.
PDF / CSV / JSON export. Drop a verdict report straight into the case file or onboarding ticket.
Open methodology. Every rule, weight, and override is documented and pinned to a versioned config.
Calibration endpoint. Send feedback. We publish per-rule precision back to you, monthly.
Rule fired rule.domain_established
Domain established (3+ years)
−10 risk lowers score fired: yes
Source · ICANN RDAP
domain: stripe.com
created: 2009-12-15T05:36:30Z
registrar: MarkMonitor Inc.
verified: 2026-06-16 04:12 UTC · cache hit · 0.12s
02 HOW IT WORKS

From URL to defensible verdict, in three steps.

No webhooks to configure to get started. No data residency contracts. Just an API key and a URL.

STEP 01 · SUBMIT
Send a URL.

One URL or a batch up to 1,000. Sandbox keys never count against your quota — wire it up before billing kicks in.

POST/api/v1/scans/
STEP 02 · PARALLEL
Thirteen sources, in parallel.

Sanctions across four official lists, PEPs via Open Sanctions, Companies House + OpenCorporates (140+ jurisdictions) + SEC EDGAR for US public-filer matching, domain registry, threat intel, and GDELT adverse-media. Customer-attested beneficial owners get cross-checked too.

14 extractors · async pipeline
STEP 03 · VERDICT
Score + tier + every receipt.

22 scoring rules produce a tier and composite risk score (lower is safer). Every rule that fires returns its source_refs — defensible at audit time.

GET/api/v1/scans/<id>/
02·5 CONTINUOUS MONITORING

Onboard once. Get pinged when it changes.

Pin a merchant to a monitor — daily, weekly, or monthly. We re-scan on the cadence, diff the verdict, and fire monitor.tripped on every tier flip or material score change. No polling. No re-onboarding to find out a customer landed on OFAC last week.

Tier flips always trip. low → high gets routed to your review queue immediately.
Configurable score threshold — default ±10. Set it tighter for high-value merchants.
Full diff in the payload. prior tier, new tier, score delta, both scan IDs — act in one round-trip.
monitor.tripped · webhook payload mon_4f8c1a
Diff
prior_tier: low → new_tier: high
prior_score: 18 → new_score: 64
score_delta: +46 (threshold: 10)
caused by: sanctions_hit fired against opensanctions_pep · pep-2049
POST → your_endpoint
X-KYB-Event: monitor.tripped
X-KYB-Signature: sha256=…
03 PIP INSTALL

From pip install to verdict in 60 seconds.

We're product-led, not sales-led. No demo call to try it. Python SDK, full OpenAPI spec, sandbox keys, webhook signature verification — everything you need to wire it up in an afternoon.

Idempotency keys auto-generated by the SDK
Webhooks with HMAC signature verification
Bulk endpoint: 1,000 URLs per call, atomic quota reservation
Typed errors: QuotaExceeded, RateLimited, ValidationError
quickstart.py
from kyb_scanner import KybClient

client = KybClient(api_key="kyb_test_xxx")
scan = client.scans.create(url="https://stripe.com")

print(f"{scan.verdict.tier.upper()} — {scan.verdict.score}/100")
for r in scan.verdict.reasons:
    print(f"  {r.delta:+d}  {r.name}")
LOW — 6/100 (lower is safer)
  −20  Trusted infrastructure   Tranco #47
  −12  Active registry filing   SEC EDGAR
  −10  Domain age 14y        ICANN RDAP
  −15  Review-site presence   Trustpilot
   +5  Adverse-media mentions  GDELT
04 PRICING

Anchored. Transparent. Free to start.

Sandbox keys never count against quota. Cancel any time. Annual saves 20%.

Free FREE
Free

Trial tier — 10 scans/month, 30/min throttle, no charge.

10 scans / month
30 req / minute
Sandbox keys + bulk API
Webhooks + PDF / CSV exports
Start free
Starter STARTER
$199 / mo

500 scans/month, 60/min throttle. For small risk teams.

500 scans / month
60 req / minute
Sandbox keys + bulk API
Webhooks + PDF / CSV exports
Start with Starter
Enterprise ENTERPRISE
Custom

Custom quota, 300/min throttle. Contact sales.

Unlimited scans
300 req / minute
Sandbox keys + bulk API
Webhooks + PDF / CSV exports
SSO + custom data residency
Contact sales
05 COMPLIANCE

Built to pass procurement.

The unsexy stuff your security team will ask about — answered.

GDPR-aligned by design

Right to deletion via API. Per-tenant data isolation. DPA on request. Source-attribution receipts double as audit trails.

SOC 2 Type II — in progress

Currently in observation window. SOC 2 Type I report available on request. ISO 27001 prep alongside.

Sandbox-first integration

Test keys (kyb_test_*) run the real pipeline but never bill, never publish, never count against quota. Safe to ship in CI.

Start verifying in 60 seconds.

Free forever tier · 10 scans / month · no credit card