UFCStats Fighter Profile & Fight History Scraper
Pricing
from $18.75 / 1,000 results
UFCStats Fighter Profile & Fight History Scraper
Scrapes UFCStats.com fighter profiles and optional full fight histories. Returns each fighter as a flat row with physical attributes, career totals, and per-bout striking and grappling stats.
Pricing
from $18.75 / 1,000 results
Rating
0.0
(0)
Developer
ParseForge
Maintained by CommunityActor stats
0
Bookmarked
184
Total users
62
Monthly active users
9 days ago
Last modified
Categories
Share
UFCStats Fighter Profile & Fight History Scraper
Scrape UFCStats fighter profiles and complete fight histories, up to a million records per run. Every fighter row includes physical attributes, career stats, and a full bout-by-bout breakdown with strikes, takedowns, and method of victory. Export to CSV, JSON, Excel, or XML.
UFCStats.com holds the deepest public record of UFC fighter data, but browsing it manually means clicking through alphabet pages and individual profiles one by one. This Actor walks the entire fighter directory, or a targeted subset you define, and pulls every stat into a flat, analysis-ready row. No API key, no rate-limit headaches, structured data from the sport's most detailed archive.
| Who uses it | What they scrape UFCStats for |
|---|---|
| Sports analysts | Building predictive models from career-long striking and grappling data. |
| Fantasy MMA players | Comparing fighter stats to set weekly DraftKings lineups. |
| Content creators | Pulling accurate fight records for pre-fight preview graphics. |
| Bettors | Backtesting betting angles against historical fight outcomes. |
What it does
This Actor collects UFC fighter profiles from UFCStats.com, including physical attributes, career totals, and optional full fight history, and returns each fighter as a single flat record.
- ๐ฅ Full fight history: every bout with opponent, event, method, round, time, knockdowns, significant strikes, takedowns, and submission attempts.
- ๐ค Alphabet walk: start from A and crawl every last name, or restrict to specific letters to target a division.
- ๐ Free-text search: filter by first name, last name, or nickname like 'mcgregor' or 'spider' before a single request fires.
- ๐ Physical filters: narrow results to a specific stance (Orthodox, Southpaw, Switch) or minimum career wins and losses.
- ๐ฏ Direct URLs: drop in a list of fighter profile URLs and scrape only those, ignoring the directory walk.
Results export to CSV, JSON, Excel, or XML, or straight from the API.
What you can do with UFCStats data
๐ Build a fighter database.
A data engineer runs the Actor across all 26 letters once a quarter, dumps the results into a warehouse, and powers a Tableau dashboard the coaching staff uses for opponent scouting.
๐ฐ Model betting edges.
A quantitative bettor scrapes every lightweight with 10+ wins, joins the fight history to closing odds, and trains a model on striking differentials that predict underdog upsets.
๐๏ธ Prep a fight-week show.
A podcast producer drops in the two headliner URLs on Monday morning, grabs their full histories, and has the stat pack ready for the hosts by lunch.
๐ Run a fantasy league draft.
A league commissioner scrapes the top 50 fighters by wins, exports a CSV, and lets managers sort by strikes landed per minute to make their picks.
Why choose this scraper
| What you get | |
|---|---|
| Career stat totals | Lifetime wins, losses, draws, and no-contests pulled from the fighter header. |
| Physical profile | Height, weight, reach, leg reach, stance, and date of birth for every fighter. |
| Striking breakdown | Significant strikes landed per minute, accuracy, absorbed per minute, and defense percentage. |
| Grappling breakdown | Takedown average, takedown accuracy, takedown defense, and submission average per 15 minutes. |
| Fight-by-fight detail | Optional nested array with opponent, event, date, method, round, time, and full stat line for each bout. |
How it compares
This Actor and the UFC Stats API both pull data from ufcstats.com, but they differ in how you target fighters and what shape the output takes.
| Feature | ParseForge | UFC Stats |
|---|---|---|
| Full fight history per fighter | Yes, optional nested array | Yes |
| Free-text name and nickname search | Yes | Not listed |
| Alphabet walk by last-name letter | Yes | Not listed |
| Post-fetch filters (stance, min wins/losses) | Yes | Not listed |
| Direct fighter URL input | Yes | Not listed |
| Flat row output (CSV, JSON, Excel, XML) | Yes | Not listed |
Configure the run
Drive the Actor from specific fighter URLs, a free-text name search, or an alphabet walk by last-name letter, and apply post-fetch filters for stance, minimum wins, and minimum losses so only relevant fighters land in your dataset. The Input tab lists every parameter.
A first run with the defaults:
{"maxItems": 10,"proxyConfiguration": {"useApifyProxy": true}}
A larger pull:
{"maxItems": 200,"proxyConfiguration": {"useApifyProxy": true}}
Pricing
Pay-per-result: $0.054 per result collected. You pay only for the results written to your dataset.
| Results collected | Approximate cost |
|---|---|
| 100 results | $5.40 |
| 1,000 results | $54.00 |
| 10,000 results | $540.00 |
New Apify accounts start with $5 in free credit.
Free users
Free-plan runs return up to 10 results as a preview. Upgrade your Apify plan to collect up to 1,000,000 results per run.
Run it
- Create a free Apify account with $5 in credit.
- Open the UFCStats Fighter Profile & Fight History Scraper.
- Set your inputs and any filters, then click Start.
- Export the results as CSV, Excel, JSON, or XML from the Dataset tab.
Run it programmatically through the Apify API (run-sync-get-dataset-items) or the ApifyClient for JavaScript and Python.
Use with AI agents (MCP)
Give an AI agent live access to UFCStats through the Model Context Protocol. Add the Actor to Claude, Cursor, or any MCP client:
$claude mcp add --transport http apify "https://mcp.apify.com?tools=parseforge/ufcstats-scraper"
Then prompt it in plain language to run the scraper and read back the results.
Troubleshooting
Why am I getting zero results?
Check that your searchQuery or startUrls match fighters on UFCStats. If you set a minimum wins or losses filter, try lowering it. Also confirm the letters array includes the starting letter of the fighters you expect.
The run stopped early with fewer records than maxItems.
The Actor stops when it exhausts the fighters matching your filters. If you set letters to only 'x' and minWins to 20, there may be fewer fighters than your maxItems value. Broaden the letters or lower the win threshold.
Some fighter profiles are missing data fields.
UFCStats occasionally has incomplete profiles, especially for older or recently debuted fighters. Missing fields appear as null or empty strings in the output. This is expected behavior reflecting the source data.
I am getting timeout errors.
UFCStats can be slow during high-traffic periods. The Actor retries failed requests automatically. If timeouts persist, increase the run memory to 2 GB or switch to residential proxies in the proxy configuration.
The fight history array is empty even though the fighter has bouts.
Ensure the includeFightHistory toggle is set to true. If it is and the array is still empty, the fighter's detail page on UFCStats may have a non-standard layout. Try scraping that fighter by direct URL in a separate run.
FAQ
| Question | Answer |
|---|---|
| Does this scrape every fighter on UFCStats? | Yes. If you leave the start URLs and search query empty and set letters to all A through Z, the Actor walks the full directory. Set maxItems to cap the total records returned. |
| Can I get the fight history for each fighter? | Yes. The includeFightHistory toggle is on by default and attaches a nested array with every bout, including opponent, event, method, round, time, and detailed striking and grappling stats. |
| How do I scrape only one weight class? | UFCStats does not expose a weight-class filter on its directory pages. The best approach is to scrape all fighters and filter the resulting dataset by weight class in your own code, or use the stance and min-wins filters to narrow the pool before export. |
| What proxy do I need? | The Actor defaults to Apify datacenter proxies, which work reliably for ufcstats.com. It rotates sessions and falls back to a direct connection if the proxy fails, so you rarely need to change this setting. |
| Can I search by nickname? | Yes. The searchQuery field matches against first name, last name, and nickname. Searching 'spider' returns Anderson Silva, and 'bones' returns Jon Jones. |
| How fast does it run? | The Actor processes fighters sequentially with polite delays to avoid triggering rate limits. A full A-Z walk of several thousand fighters typically completes in under an hour on a standard memory allocation. |
| What output formats are supported? | Your dataset can be exported to CSV, JSON, Excel, or XML directly from the Apify run console. |
| Does it include fighter photo URLs? | Yes. Each fighter record includes the profile image URL hosted on UFCStats.com. |
| Can I scrape only specific fighters by URL? | Yes. Paste one or more fighter detail URLs into the startUrls field, and the Actor scrapes only those profiles, ignoring the directory walk and search. |
| What happens if a fighter has no fights listed? | The career totals will show zeros, and the fight history array will be empty. The record still appears in your dataset with the fighter's physical attributes populated. |
Related actors
Browse the full ParseForge collection for more scrapers.
๐ Need help? Email parseforge@protonmail.com with your run ID, your input, and what you expected.
โ ๏ธ Disclaimer. This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by UFCStats.com. It collects only publicly available data. You are responsible for using the collected data in compliance with the source's terms of service and applicable data-protection laws, including GDPR, CCPA, and PIPL. Do not use it to collect personal data unlawfully.
