Sources we use
Wikipedia / Wikidata (text facts only)
en.wikipedia.org, wikidata.org · open-data · daily
CC BY-SA 4.0 (text) and CC0 (Wikidata). Reuse permitted with attribution.
Attribution: Text from Wikipedia, CC BY-SA 4.0.
TEXT ONLY. Image re-hosting from Wikimedia is disabled — see MEDIA_INGESTION_ENABLED. Wikimedia images carry per-file CC-BY/BY-SA terms we do not currently track, so we do not take them.
Publisher RSS feeds (headlines + links)
~60 publisher feeds · rss-syndication · 15 minutes
RSS is published for syndication. We take the headline, a short excerpt and the canonical link, and send every reader to the publisher's own page.
Attribution: Publisher name + link on every item.
Cover images are NOT taken. Publisher imagery was previously hotlinked; it is now replaced with locally generated category artwork.
BKFC events & cards (bkfc.com)
bkfc.com · scrape · daily
OPERATOR OVERRIDE (development), not an established legal basis. Enabled at the operator's explicit instruction to ingest factual event data (date/venue/matchups). A written BKFC licence or permission is still REQUIRED before production/public use — obtain one and replace this text.
Attribution: Event data via BKFC (bkfc.com).
ENABLED via operator override (dev). Requires ENABLE_SCRAPER=true. Bout results come from the separate 'bkfc-results' entry below (they are genuinely absent from this HTML). Rankings/news/photos remain disabled. Not a licence — see basis.
BKFC fighter profiles (bkfc.com)
bkfc.com · scrape · daily
OPERATOR OVERRIDE (development), not an established legal basis. Enabled at the operator's explicit instruction to ingest factual fighter data (name, record, division, reach/height) AND the profile headshot URL (stored as a source URL, served via /api/img, not re-hosted) — the operator explicitly authorized promotion photos for dev, overriding 'promotion-photos'. A written BKFC licence is still REQUIRED for production/public use.
Attribution: Fighter data & headshots via BKFC (bkfc.com).
ENABLED via operator override (dev). Requires ENABLE_SCRAPER=true. Headshot URL stored (photo override authorized). Not a licence — see basis.
ONE Championship events (onefc.com)
onefc.com · scrape · daily
OPERATOR OVERRIDE (development), not an established legal basis. Enabled at the operator's explicit instruction to ingest factual event data (date/venue/location) for the schedule; the 'ONE Friday Fights' series maps to Muay Thai / kickboxing. A written ONE licence is still REQUIRED for production/public use. robots.txt only disallows /wp-admin/.
Attribution: Event data via ONE Championship (onefc.com).
ENABLED via operator override (dev). Requires ENABLE_SCRAPER=true. Fight cards/results not scraped (not in static HTML). Not a licence — see basis.
ADCC events (adcombat.com) — BJJ / submission grappling
adcombat.com · scrape · daily
OPERATOR OVERRIDE (development), not an established legal basis. Enabled at the operator's explicit instruction to ingest factual BJJ event data (name/date/location) for the schedule. robots.txt allows the events listing (Disallow only /order/, /checkout, /scoreboard). A written ADCC permission is still recommended for production/public use.
Attribution: Event data via ADCC (adcombat.com).
ENABLED via operator override (dev). Requires ENABLE_SCRAPER=true. Not a licence — see basis.
Sources we do not use
We list these because their absence is deliberate. Each was either never licensed or has been withdrawn, and we do not ingest them.
The Odds API
api.the-odds-api.com
INGESTED BUT NOT DISPLAYED. No UI renders these odds today. It stays disabled until the 18+/RG messaging obligation is implemented on every surface that would show it.
UFCStats / FightMetric
ufcstats.com
REMOVED. The site fronts every page with a JavaScript proof-of-work anti-bot gate, and our scripts drove Chromium to solve it. Circumventing a technical access-control measure is the classic CFAA fact pattern. Scripts and the Playwright dependency are deleted. DO NOT REINSTATE.
UFC / BKFC / PFL / ONE / FightersRec / FloGrappling rankings
ufc.com, bkfc.com, pflmma.com, onefc.com, fightersrec.com, flograppling.com
REMOVED. A ranking table is an editorial compilation, not a fact — the classic UK/EU database-right and copyright target. Scrapers deleted; existing rows purged via `npm run rankings:purge-unlicensed`. Rankings stay off until a licensed source exists.
Promotion press photography (ONE / BKFC / PFL / FightersRec)
onefc.com, bkfc.com, pflmma.com, fightersrec.com
REMOVED. Official press photography is a harder copyright class than user-contributed imagery. Scrapers deleted.
Kalshi
api.elections.kalshi.com
DISABLED (KALSHI_ENABLED=false). Requires a market-data licence.
Polymarket
gamma-api.polymarket.com, clob.polymarket.com
DISABLED (POLYMARKET_ENABLED=false). Requires a market-data licence.
Sportradar
api.sportradar.com
Key-gated and unkeyed. Do not add a key until an Order Form is signed, SPORTRADAR_ACCESS=production is set, and the attribution is implemented.
BKFC official scored cards (xapi.mmareg.com)
xapi.mmareg.com
DISABLED. The connector is complete, tested and measured (20/24 sampled events expose a full scored card; 207/207 bouts decided) — it is withheld on COMPLIANCE, not capability. Because isSourceEnabled() has been a no-op since 2026-08-01, this `enabled` field does NOT stop anything: the real gate is the BKFC_RESULTS_ENABLED feature flag, which fails closed and is unset. Turn both on together, never one alone. Per-round STRIKE STATISTICS are in the payload and are deliberately NOT ingested. Meanwhile BKFC results still arrive via the licensed Wikipedia (wikicard) path.
BKFC divisional rankings (bkfc.com)
bkfc.com
DISABLED. Do not enable without a licensed rankings source.
BKFC news articles (bkfc.com/news)
bkfc.com
DISABLED. robots.txt disallows /news — do not enable without written permission.
BKFC videos (YouTube ids embedded on bkfc.com)
bkfc.com, youtube.com
DISABLED.
ONE Championship athletes (onefc.com)
onefc.com
DISABLED. ONE provider currently ingests events only.
Federation member directories (IJF, IMMAF, IFMA, WAKO, FIAS, WT)
various governing bodies
DISABLED pending a robots.txt-respecting client and, ideally, permission. The script also self-enabled the scraper gate (`ENABLE_SCRAPER ??= "true"`), which is removed.
Rankings
We do not currently publish rankings. Our previous ranking data could not be traced to a licensed source, so it was withdrawn and deleted. Rankings will return when we have a source we are entitled to use.
Photography
We do not publish third-party photography. Fighter images are neutral generated placeholders until we have photographs we own or are licensed to use, with the attribution the licence requires. If you are a fighter, you can upload your own photograph to your claimed profile.
Corrections
If something here is wrong, or you believe we are using your data or imagery without permission, please tell us — see the copyright page.
Who we are. [NOT CONFIGURED — operator must set this before public launch], [NOT CONFIGURED — operator must set this before public launch].
Governing law: [NOT CONFIGURED — operator must set this before public launch].
Effective from: [NOT CONFIGURED — operator must set this before public launch].
General contact: [NOT CONFIGURED — operator must set this before public launch]
