Ultimate Fighting Calendar
UFCalendar Fight API

The PFL API: seasons, cards & results

PFL fight data back to the league's 2017 debut · event schedules, full fight cards, results, per-fight SmartCage stat lines and complete fighter careers, in the same schema and under the same key as our UFC and OKTAGON coverage.

Free 1-day trial · 100 requests · no credit card. Paid plans from $19/mo, cancel anytime.

What's inside

138
events since 2017
1,399
fights
828
fights with full stat lines
3,816
rounds of round-by-round stats
1,071
fighters with bios & records
528
official ranking rows

4 upcoming events already on the schedule · cards, venues and broadcasts included.

Crossover careers, complete

PFL rosters are full of careers that cross promotions. Every fighter profile carries a complete multi-promotion timeline · Bellator, UFC, regional shows · merged and deduplicated, not just PFL bouts.

Cards and results, live

PFL cards refresh through fight week and live results land within 5 minutes of each verdict. The card-change log endpoint captures every reshuffle, and webhooks push them on Pro plans.

Sample request

$ curl "https://api.ufcalendar.com/v1/events?org=pfl&status=completed&limit=1" \
    -H "Authorization: Bearer ufcalendar_..."

{
  "data": [
    {
      "slug": "pfl-2026-08-07",
      "title": "PFL Charlotte: Battle vs. Rosta",
      "org": "pfl",
      "starts_at": "2026-08-07T23:00:00Z",
      "status": "completed",
      "fights": [ ... ]
    }
  ],
  "meta": { "pagination": { "next_cursor": null } }
}

Endpoints for PFL data

Every list endpoint filters with ?org=pfl. The full reference lives in the docs.

  • GET /v1/events?org=pfl

    MMA schedule + results API: full fight cards, venues, broadcasts, and a card-change diff log for late reshuffles.

  • GET /v1/fights/{id}/rounds

    One bout with its result, per-fight totals for both corners, and round-by-round statistics.

  • GET /v1/fighters?org=pfl

    Roster search, bios, records · and complete multi-promotion career timelines, merged and deduplicated.

  • GET /v1/rankings/pfl

    Official ranking boards, point-in-time back to 2013 for the UFC. Champions across every launch org.

  • GET /v1/calendar/pfl.ics

    ICS calendar feeds per organization · subscribe any calendar app to every event, auto-updating as cards change.

  • POST /v1/webhook-endpoints

    Signed webhooks for fight results, card changes and event completion · no polling needed.

  • GET /v1/bulk/events.json.gz

    Gzipped full-dataset snapshots of events, fights and fighters for warehouse loads.

Questions

How far back does the PFL API go?
To PFL's 2017 debut · 138 events, 1,399 fights with results, 828 with per-fight stat lines, plus current champions and official ranking rows.
Does one API key cover PFL and UFC?
Yes. Every plan covers all three launch organizations · UFC, PFL and OKTAGON · with an identical schema and per-org query filters.
Is this affiliated with the Professional Fighters League?
No. UFCalendar is an independent publication; PFL data is reconciled from public sources and normalized into our schema.
Do fighter profiles include non-PFL fights?
Yes · career timelines are complete across every promotion a fighter has competed in, merged and deduplicated into one history.

One key, three organizations

Every plan covers UFC, PFL and OKTAGON in the same schema, under the same key. Also see:

UFCalendar is an independent publication, not affiliated with UFC/Zuffa/TKO, PFL, OKTAGON MMA or any promotion. Organization names are used to describe the data. Terms of service · Refund Policy