UFC Stats MMA Historical Fight Statistics Scraper
Pricing
Pay per event
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
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:
- Events list — Fetches all completed UFC events (775+ events since UFC 1 in 1993)
- Event detail — Extracts event metadata (name, date, location) and enqueues all fight links
- 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
| Field | Type | Default | Description |
|---|---|---|---|
maxItems | integer | 10 | Maximum number of fight records to return |
startFromEvent | integer | 0 | Skip 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_bare"--"for early UFC events that didn't track control timeweight_classmay be empty for historical fights before weight classes were formalizedwinneris 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
startFromEventto skip older events. - ufcstats.com operates on HTTP (not HTTPS). No proxy is required.
- The default
maxItems: 10withstartFromEvent: 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.