Sherdog MMA Fighters, Fights & Events Scraper
Pricing
from $10.00 / 1,000 results
Sherdog MMA Fighters, Fights & Events Scraper
MMA fighter profiles with full fight histories, event cards and bout results from Sherdog - UFC, PFL, Bellator, ONE and hundreds of other promotions, back to the 1990s - with incremental runs.
Pricing
from $10.00 / 1,000 results
Rating
0.0
(0)
Developer
Artsiom Kunitsyn
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
sherdog-scraper
Scrapes MMA data from Sherdog: fighter profiles with their complete fight history, event fight cards (upcoming and past) and bout results β for the UFC, PFL, Bellator, ONE and hundreds of smaller promotions, back to the 1990s. No login required.
Contents
π Key features
- Three views of the same data.
fighters(one row per fighter),events(one row per card) andfights(one flat row per bout, ready for a spreadsheet or a model). - Full fight histories. Every professional fight with opponent, event, date, method (KO/TKO, submission, decisionβ¦), round, time and referee β plus amateur and pro-exhibition bouts, kept in separate divisions.
- Record breakdowns. Wins and losses split by KO/TKO, submission, decision and other.
- Upcoming cards. Future events with the full bout list, weight classes and fighter records, and each fighter's next scheduled fight.
- Scope by promotion. Pick UFC, PFL, Bellator, ONE, KSW, Oktagon, Rizin, Cage Warriors and more, or paste any Sherdog promotion URL. For fighters, that means "everyone who fought (or is booked) on these cards".
- The whole database, too. Leave the promotion list empty for every fighter (about 354,000) or event (about 77,000) Sherdog lists.
- Incremental runs. Schedule
eventsorfights: after the first run you only receive new events and cards whose results changed. maxItemsdefaults to 50 β a fast, cheap preview. Clear it (null) for everything in your selection.
π Output
See .actor/dataset_schema.json for every field.
fighters β one row per fighter:
{"source": "sherdog","external_id": "27944","name": "Jon Jones","nickname": "Bones","birth_date": "1987-07-19","height_cm": 193.04,"weight_kg": 107.95,"weight_class": "Heavyweight","association": "Jackson-Wink MMA","nationality": "United States","wins": 28, "losses": 1, "draws": 0, "no_contests": 1,"wins_ko": 11, "wins_submission": 7, "wins_decision": 10,"pro_fights": 30,"upcoming_fights": [],"fights": [{"division": "pro", "result": "win", "opponent": "Stipe Miocic", "opponent_id": 39537,"event": "UFC 309 - Jones vs. Miocic", "event_date": "2024-11-16","method": "TKO", "method_detail": "Spinning Back Kick and Punches", "finish_type": "ko_tko","referee": "Herb Dean", "round": 3, "time": "4:29", "time_seconds": 269}]}
events β one row per card, with bouts (match number, weight class, both fighters with ids and records
where shown, winner, method, round, time, referee) and a status of completed, upcoming, no_results
or unknown.
fights β one flat row per bout: event, promotion, date, weight class, fighter_1 / fighter_2 with
ids and results, winner, method, finish_type, round, time_seconds, referee.
π§ Input
| Field | Type | Default | Description |
|---|---|---|---|
entityType | string | fighters | fighters, events or fights. |
organizations | array | ["ufc"] | Promotions to scrape. Empty = the entire database. |
startUrls | array | β | Specific fighter, event or promotion pages. Replaces the promotion selection. |
dateFrom / dateTo | string | β | Only events in this window (YYYY-MM-DD). Use a future window for upcoming cards. |
maxItems | integer | 50 | Stop after this many rows. null = everything selected. |
mode | string | auto | auto / full / incremental β events and fights only. |
concurrency | integer | 8 | Parallel page requests (max 25). |
impersonate | string | firefox | Browser TLS fingerprint. Change only if requests are blocked. |
proxyConfiguration | object | no proxy | Apify Proxy settings. Not needed in testing. |
π₯ Input examples
Default preview (50 UFC fighters):
{}
Every UFC fight ever, one row per bout:
{ "entityType": "fights", "organizations": ["ufc"], "maxItems": null }
Upcoming UFC and PFL cards:
{ "entityType": "events", "organizations": ["ufc", "pfl"], "dateFrom": "2026-09-21", "maxItems": null }
Daily feed of new and changed events (schedule this):
{ "entityType": "fights", "organizations": ["ufc", "pfl", "bellator", "one"], "maxItems": null }
Two specific fighters:
{ "entityType": "fighters", "startUrls": ["https://www.sherdog.com/fighter/Jon-Jones-27944", "https://www.sherdog.com/fighter/Stipe-Miocic-39537"] }
π Incremental mode
events and fights only, and only for a run with maxItems cleared (null) β a capped run is a preview
and always returns rows. In auto mode the first uncapped run returns everything in scope. Later runs return
only events that are new or whose card or results changed in the last 90 days, plus upcoming ones
(change_type is new or changed); older events are history and are not repeated. A run limited by
maxItems, your spending limit, startUrls, a date window or an error does not update the memory.
fighters is always a fresh pull.
β FAQ
How complete is fighter data? Sherdog lists every fighter, but many are obscure: in a sample of 5,000
fighters, about 63% had a nationality, 54% a weight class and 22% a birth date. Fields Sherdog doesn't have
are null, never guessed.
What are the divisions? pro, amateur and pro_exhibition, matching Sherdog's sections. The win/loss
record fields are the professional record.
Why does an old event have no_results? Some 1990s events exist on Sherdog with an empty card. They are
returned with that status rather than being labelled upcoming.
Do you cover boxing or Muay Thai? Sherdog is an MMA site; a few boxing events exist (the "Boxing"
promotion), and promotions you paste into startUrls are scraped as listed.