UFC Stats MMA Historical Fight Statistics Scraper avatar

UFC Stats MMA Historical Fight Statistics Scraper

Pricing

Pay per event

Go to Apify Store
UFC Stats MMA Historical Fight Statistics Scraper

UFC Stats MMA Historical Fight Statistics Scraper

Scrapes complete historical fight statistics from ufcstats.com. Retrieves per-fighter striking, takedown, and submission data for every recorded UFC bout. Ideal for MMA analytics, model training, and historical performance research.

Pricing

Pay per event

Rating

0.0

(0)

Developer

BowTiedRaccoon

BowTiedRaccoon

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Share

Scrapes complete historical fight statistics from ufcstats.com — the official UFC stats source. Retrieves per-fighter striking, takedown, and submission data for every recorded UFC bout.

What it does

This actor crawls ufcstats.com across three levels:

  1. Events list — Fetches all completed UFC events (775+ events since UFC 1 in 1993)
  2. Event detail — Extracts event metadata (name, date, location) and enqueues all fight links
  3. Fight detail — Extracts complete bout statistics for each fight

For each fight, the actor outputs a flat record with:

  • Fight outcome: fighters, winner, method, round, time, weight class
  • Total statistics: knockdowns, significant strikes (landed/attempted + %), total strikes, takedowns (landed/attempted + %), submission attempts, control time
  • Significant strike breakdown by target: head, body, leg
  • Significant strike breakdown by position: distance, clinch, ground

Input

FieldTypeDefaultDescription
maxItemsinteger10Maximum number of fight records to return
startFromEventinteger0Skip this many events from most recent (0 = start from most recent)

Example input

{
"maxItems": 100,
"startFromEvent": 0
}

To scrape the full historical dataset (7,000+ fights), set maxItems to a high value and allow the run to complete — expect several hours at the default rate limit.

Output

Each record in the dataset represents one UFC bout:

{
"fight_url": "http://ufcstats.com/fight-details/7e7d7a488ea21f63",
"event_name": "UFC 4: Revenge of the Warriors",
"event_date": "December 16, 1994",
"event_location": "Tulsa, Oklahoma, USA",
"fighter_a": "Steve Jennum",
"fighter_b": "Melton Bowen",
"winner": "Steve Jennum",
"result_a": "W",
"result_b": "L",
"method": "Submission",
"round": 1,
"time": "4:47",
"weight_class": "",
"kd_a": "0",
"kd_b": "0",
"sig_str_a": "13 of 40",
"sig_str_b": "1 of 4",
"sig_str_pct_a": "32%",
"sig_str_pct_b": "25%",
"total_str_a": "29 of 70",
"total_str_b": "48 of 59",
"td_a": "2 of 3",
"td_b": "0 of 0",
"td_pct_a": "66%",
"td_pct_b": "---",
"sub_att_a": 1,
"sub_att_b": 0,
"ctrl_time_a": "--",
"ctrl_time_b": "--",
"head_strikes_a": "13 of 36",
"head_strikes_b": "1 of 4",
"body_strikes_a": "0 of 2",
"body_strikes_b": "0 of 0",
"leg_strikes_a": "0 of 2",
"leg_strikes_b": "0 of 0",
"distance_strikes_a": "0 of 6",
"distance_strikes_b": "0 of 3",
"clinch_strikes_a": "0 of 0",
"clinch_strikes_b": "1 of 1",
"ground_strikes_a": "13 of 34",
"ground_strikes_b": "0 of 0"
}

Field notes

  • Strike fields use the format "X of Y" (landed of attempted)
  • Percentage fields are strings like "32%" or "---" when not applicable
  • ctrl_time_a / ctrl_time_b are "--" for early UFC events that didn't track control time
  • weight_class may be empty for historical fights before weight classes were formalized
  • winner is set to "Draw" or "NC" (no contest) when applicable

Use cases

  • MMA analytics — Build fighter performance models, win probability calculators, or style matchup analysis
  • Machine learning — Train classifiers for fight outcome prediction using the full historical dataset
  • Research — Track evolution of fighting styles, dominant techniques across weight classes, or historical era comparisons
  • Fantasy sports — Build scoring models based on verified official statistics

Notes

  • The actor crawls in BFS order: all events are enqueued before fights. For a focused recent-events run, use startFromEvent to skip older events.
  • ufcstats.com operates on HTTP (not HTTPS). No proxy is required.
  • The default maxItems: 10 with startFromEvent: 770 (last ~5 events) completes in under 30 seconds. A full historical run (all 7,000+ fights) takes several hours.
  • Rate is limited to ~5 concurrent requests to respect the source site.