{"sport":"mlb","slug":"frank-thomas","bio":{"fullName":"Frank Thomas","position":"DH","team":"ATH","heightInches":77,"weightLbs":275,"birthDate":"1968-05-27","rookieSeason":1990,"lastSeason":2008,"status":"RET","externalIds":{"mlbam":"123245","chadwick":"e31675e7","retro":"thomf001","wikidata":"Q3082840"}},"draft":{"year":1989,"round":null,"pick":null,"team":null,"undrafted":false},"statTables":[{"id":"batting","label":"Batting","columns":[{"key":"g"},{"key":"ab"},{"key":"r"},{"key":"h"},{"key":"doubles"},{"key":"triples"},{"key":"hr"},{"key":"rbi"},{"key":"sb"},{"key":"bb"},{"key":"so"},{"key":"avg"},{"key":"obp"},{"key":"slg"},{"key":"ops"}],"rows":[{"season":1990,"seasonType":"REG","team":"CWS","gamesPlayed":60,"values":{"g":60,"ab":191,"r":39,"h":63,"doubles":11,"triples":3,"hr":7,"rbi":31,"sb":0,"bb":44,"so":54,"avg":0.33,"obp":0.454,"slg":0.529,"ops":0.983},"rowScope":"team"},{"season":1991,"seasonType":"REG","team":"CWS","gamesPlayed":158,"values":{"g":158,"ab":559,"r":104,"h":178,"doubles":31,"triples":2,"hr":32,"rbi":109,"sb":1,"bb":138,"so":112,"avg":0.318,"obp":0.453,"slg":0.553,"ops":1.006},"rowScope":"team"},{"season":1992,"seasonType":"REG","team":"CWS","gamesPlayed":160,"values":{"g":160,"ab":573,"r":108,"h":185,"doubles":46,"triples":2,"hr":24,"rbi":115,"sb":6,"bb":122,"so":88,"avg":0.323,"obp":0.439,"slg":0.536,"ops":0.975},"rowScope":"team"},{"season":1993,"seasonType":"REG","team":"CWS","gamesPlayed":153,"values":{"g":153,"ab":549,"r":106,"h":174,"doubles":36,"triples":0,"hr":41,"rbi":128,"sb":4,"bb":112,"so":54,"avg":0.317,"obp":0.426,"slg":0.607,"ops":1.033},"rowScope":"team"},{"season":1993,"seasonType":"POST","team":"CWS","gamesPlayed":6,"values":{"g":6,"ab":17,"r":2,"h":6,"doubles":0,"triples":0,"hr":1,"rbi":3,"sb":0,"bb":10,"so":5,"avg":0.353,"obp":0.593,"slg":0.529,"ops":1.122},"rowScope":"team"},{"season":1994,"seasonType":"REG","team":"CWS","gamesPlayed":113,"values":{"g":113,"ab":399,"r":106,"h":141,"doubles":34,"triples":1,"hr":38,"rbi":101,"sb":2,"bb":109,"so":61,"avg":0.353,"obp":0.487,"slg":0.729,"ops":1.216},"rowScope":"team"},{"season":1995,"seasonType":"REG","team":"CWS","gamesPlayed":145,"values":{"g":145,"ab":493,"r":102,"h":152,"doubles":27,"triples":0,"hr":40,"rbi":111,"sb":3,"bb":136,"so":74,"avg":0.308,"obp":0.454,"slg":0.606,"ops":1.06},"rowScope":"team"},{"season":1996,"seasonType":"REG","team":"CWS","gamesPlayed":141,"values":{"g":141,"ab":527,"r":110,"h":184,"doubles":26,"triples":0,"hr":40,"rbi":134,"sb":1,"bb":109,"so":70,"avg":0.349,"obp":0.459,"slg":0.626,"ops":1.085},"rowScope":"team"},{"season":1997,"seasonType":"REG","team":"CWS","gamesPlayed":146,"values":{"g":146,"ab":530,"r":110,"h":184,"doubles":35,"triples":0,"hr":35,"rbi":125,"sb":1,"bb":109,"so":69,"avg":0.347,"obp":0.456,"slg":0.611,"ops":1.067},"rowScope":"team"},{"season":1998,"seasonType":"REG","team":"CWS","gamesPlayed":160,"values":{"g":160,"ab":585,"r":109,"h":155,"doubles":35,"triples":2,"hr":29,"rbi":109,"sb":7,"bb":110,"so":93,"avg":0.265,"obp":0.381,"slg":0.48,"ops":0.861},"rowScope":"team"},{"season":1999,"seasonType":"REG","team":"CWS","gamesPlayed":135,"values":{"g":135,"ab":486,"r":74,"h":148,"doubles":36,"triples":0,"hr":15,"rbi":77,"sb":3,"bb":87,"so":66,"avg":0.305,"obp":0.414,"slg":0.471,"ops":0.885},"rowScope":"team"},{"season":2000,"seasonType":"REG","team":"CWS","gamesPlayed":159,"values":{"g":159,"ab":582,"r":115,"h":191,"doubles":44,"triples":0,"hr":43,"rbi":143,"sb":1,"bb":112,"so":94,"avg":0.328,"obp":0.436,"slg":0.625,"ops":1.061},"rowScope":"team"},{"season":2000,"seasonType":"POST","team":"CWS","gamesPlayed":3,"values":{"g":3,"ab":9,"r":0,"h":0,"doubles":0,"triples":0,"hr":0,"rbi":0,"sb":0,"bb":4,"so":0,"avg":0,"obp":0.308,"slg":0,"ops":0.308},"rowScope":"team"},{"season":2001,"seasonType":"REG","team":"CWS","gamesPlayed":20,"values":{"g":20,"ab":68,"r":8,"h":15,"doubles":3,"triples":0,"hr":4,"rbi":10,"sb":0,"bb":10,"so":12,"avg":0.221,"obp":0.316,"slg":0.441,"ops":0.757},"rowScope":"team"},{"season":2002,"seasonType":"REG","team":"CWS","gamesPlayed":148,"values":{"g":148,"ab":523,"r":77,"h":132,"doubles":29,"triples":1,"hr":28,"rbi":92,"sb":3,"bb":88,"so":115,"avg":0.252,"obp":0.361,"slg":0.472,"ops":0.833},"rowScope":"team"},{"season":2003,"seasonType":"REG","team":"CWS","gamesPlayed":153,"values":{"g":153,"ab":546,"r":87,"h":146,"doubles":35,"triples":0,"hr":42,"rbi":105,"sb":0,"bb":100,"so":115,"avg":0.267,"obp":0.39,"slg":0.562,"ops":0.952},"rowScope":"team"},{"season":2004,"seasonType":"REG","team":"CWS","gamesPlayed":74,"values":{"g":74,"ab":240,"r":53,"h":65,"doubles":16,"triples":0,"hr":18,"rbi":49,"sb":0,"bb":64,"so":57,"avg":0.271,"obp":0.434,"slg":0.563,"ops":0.997},"rowScope":"team"},{"season":2005,"seasonType":"REG","team":"CWS","gamesPlayed":34,"values":{"g":34,"ab":105,"r":19,"h":23,"doubles":3,"triples":0,"hr":12,"rbi":26,"sb":0,"bb":16,"so":31,"avg":0.219,"obp":0.315,"slg":0.59,"ops":0.905},"rowScope":"team"},{"season":2006,"seasonType":"REG","team":"ATH","gamesPlayed":137,"values":{"g":137,"ab":466,"r":77,"h":126,"doubles":11,"triples":0,"hr":39,"rbi":114,"sb":0,"bb":81,"so":81,"avg":0.27,"obp":0.381,"slg":0.545,"ops":0.926},"rowScope":"team"},{"season":2006,"seasonType":"POST","team":"ATH","gamesPlayed":7,"values":{"g":7,"ab":23,"r":3,"h":5,"doubles":1,"triples":0,"hr":2,"rbi":2,"sb":0,"bb":4,"so":5,"avg":0.217,"obp":0.357,"slg":0.522,"ops":0.879},"rowScope":"team"},{"season":2007,"seasonType":"REG","team":"TOR","gamesPlayed":155,"values":{"g":155,"ab":531,"r":63,"h":147,"doubles":30,"triples":0,"hr":26,"rbi":95,"sb":0,"bb":81,"so":94,"avg":0.277,"obp":0.377,"slg":0.48,"ops":0.857},"rowScope":"team"},{"season":2008,"seasonType":"REG","gamesPlayed":71,"gamesStarted":null,"values":{"g":71,"ab":246,"r":27,"h":59,"doubles":7,"triples":1,"hr":8,"rbi":30,"sb":0,"bb":39,"so":57,"avg":0.24,"slg":0.374,"obp":null,"ops":null},"team":"TOT","rowScope":"total"},{"season":2008,"seasonType":"REG","team":"ATH","gamesPlayed":55,"values":{"g":55,"ab":186,"r":20,"h":49,"doubles":6,"triples":1,"hr":5,"rbi":19,"sb":0,"bb":28,"so":44,"avg":0.263,"obp":0.364,"slg":0.387,"ops":0.751},"rowScope":"team"},{"season":2008,"seasonType":"REG","team":"TOR","gamesPlayed":16,"values":{"g":16,"ab":60,"r":7,"h":10,"doubles":1,"triples":0,"hr":3,"rbi":11,"sb":0,"bb":11,"so":13,"avg":0.167,"obp":0.306,"slg":0.333,"ops":0.639},"rowScope":"team"}],"careerTotals":{"REG":{"g":2322,"ab":8199,"r":1494,"h":2468,"doubles":495,"triples":12,"hr":521,"rbi":1704,"sb":32,"bb":1667,"so":1397,"avg":0.301,"obp":0.419,"slg":0.555,"ops":0.974},"POST":{"g":16,"ab":49,"r":5,"h":11,"doubles":1,"triples":0,"hr":3,"rbi":5,"sb":0,"bb":18,"so":10,"avg":0.224,"obp":0.441,"slg":0.429,"ops":0.87}}},{"id":"advanced","label":"Advanced (League-Relative)","columns":[{"key":"ops_plus","label":"OPS+","description":"On-base plus slugging vs the player's own season+league (100 = league average). Park-unadjusted; OBP uses a consistent (H+BB)/(AB+BB) rate. Higher is better.","format":"int","higherIsBetter":true},{"key":"era_plus","label":"ERA+","description":"Earned-run average vs the player's own season+league (100 = league average). Park-unadjusted. Higher is better.","format":"int","higherIsBetter":true}],"rows":[{"season":1990,"seasonType":"REG","team":"CWS","values":{"ops_plus":178,"era_plus":null},"rowScope":"team"},{"season":1991,"seasonType":"REG","team":"CWS","values":{"ops_plus":179,"era_plus":null},"rowScope":"team"},{"season":1992,"seasonType":"REG","team":"CWS","values":{"ops_plus":176,"era_plus":null},"rowScope":"team"},{"season":1993,"seasonType":"REG","team":"CWS","values":{"ops_plus":176,"era_plus":null},"rowScope":"team"},{"season":1994,"seasonType":"REG","team":"CWS","values":{"ops_plus":210,"era_plus":null},"rowScope":"team"},{"season":1995,"seasonType":"REG","team":"CWS","values":{"ops_plus":178,"era_plus":null},"rowScope":"team"},{"season":1996,"seasonType":"REG","team":"CWS","values":{"ops_plus":176,"era_plus":null},"rowScope":"team"},{"season":1997,"seasonType":"REG","team":"CWS","values":{"ops_plus":179,"era_plus":null},"rowScope":"team"},{"season":1998,"seasonType":"REG","team":"CWS","values":{"ops_plus":124,"era_plus":null},"rowScope":"team"},{"season":1999,"seasonType":"REG","team":"CWS","values":{"ops_plus":128,"era_plus":null},"rowScope":"team"},{"season":2000,"seasonType":"REG","team":"CWS","values":{"ops_plus":168,"era_plus":null},"rowScope":"team"},{"season":2001,"seasonType":"REG","team":"CWS","values":{"ops_plus":101,"era_plus":null},"rowScope":"team"},{"season":2002,"seasonType":"REG","team":"CWS","values":{"ops_plus":121,"era_plus":null},"rowScope":"team"},{"season":2003,"seasonType":"REG","team":"CWS","values":{"ops_plus":146,"era_plus":null},"rowScope":"team"},{"season":2004,"seasonType":"REG","team":"CWS","values":{"ops_plus":158,"era_plus":null},"rowScope":"team"},{"season":2005,"seasonType":"REG","team":"CWS","values":{"ops_plus":139,"era_plus":null},"rowScope":"team"},{"season":2006,"seasonType":"REG","team":"ATH","values":{"ops_plus":138,"era_plus":null},"rowScope":"team"},{"season":2007,"seasonType":"REG","team":"TOR","values":{"ops_plus":125,"era_plus":null},"rowScope":"team"},{"season":2008,"seasonType":"REG","gamesPlayed":null,"gamesStarted":null,"values":{"ops_plus":null,"era_plus":null},"team":"TOT","rowScope":"total"},{"season":2008,"seasonType":"REG","team":"ATH","values":{"ops_plus":109,"era_plus":null},"rowScope":"team"},{"season":2008,"seasonType":"REG","team":"TOR","values":{"ops_plus":68,"era_plus":null},"rowScope":"team"}],"careerTotals":{"REG":{"ops_plus":156,"era_plus":null}},"advancedMeta":{"method":"computed in-house from MLB StatsAPI season batting/pitching lines, normalized to each player's own (season, league) baseline","formulas":{"era_plus":"100 * lgERA / playerERA (league ERA = 9 * ΣER / ΣIP over the season+league)","ops_plus":"100 * (OBP/lgOBP + SLG/lgSLG - 1)","career_era_plus":"innings-weighted league ERA / career ERA (B-Ref method)","career_ops_plus":"AB-weighted OBP & SLG against AB-weighted league rates"},"caveats":["PARK-UNADJUSTED: no park-factor data exists in the corpus, so these are league-relative but not park-adjusted (true B-Ref ERA+/OPS+ also divide by a park factor)","OBP baseline uses a consistent (H+BB)/(AB+BB) reached-base rate for BOTH player and league — the source feed carries no HBP or SF, so this is not the full (H+BB+HBP)/(AB+BB+HBP+SF) OBP; SLG is exact from the hit-type columns","league resolved from team code + season (most-recently-founded franchise existing by that season); the same resolver builds the baseline and looks up the player, so ratios stay internally coherent","a (season, league) bucket below the sample floor (3000 AB batting / 1000 IP pitching) yields null — no noisy baselines","regular season only; postseason lines are excluded from league baselines and metrics","AL and NL and each historical/Negro league are normalized separately — never blended across leagues or eras"]}}],"dataSources":["MLB StatsAPI (statsapi.mlb.com — official public league API; facts only, raw payloads not republished)"],"generatedAt":"2026-07-03T02:16:20.189Z"}