UFC Stats MMA Historical Fight Statistics Scraper avatar

UFC Stats MMA Historical Fight Statistics Scraper

Pricing

from $1.00 / 1,000 record scrapeds

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

from $1.00 / 1,000 record scrapeds

Rating

0.0

(0)

Developer

BowTiedRaccoon

BowTiedRaccoon

Maintained by Community

Actor stats

0

Bookmarked

8

Total users

0

Monthly active users

11 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.
  • 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.