Sports Analytics Jobs: Break Into Sports Trading & Build a Portfolio That Gets Hired
Want a job in sports analytics, trading, or quant betting? The roles exist, and there are more of them every year, but they are scattered across team career pages, league sites, LinkedIn, and a dozen niche boards. Worse, the listings are only half the battle. Desks get hundreds of applicants who can recite the theory. Almost none of them show up with a working project that pulls live market data and finds an edge.
This guide covers both halves: where to actually find the jobs, and how to build a portfolio project with a free odds API that puts you ahead of the stack of resumes.
Step 1: Find the jobs in one place
Sports analytics and trading roles are notoriously hard to track down. The best single resource we have found is SportsJobs Online.
| SportsJobs Online | Details |
|---|---|
| What it is | A job board built specifically for sports analytics careers |
| How it works | Updated daily by automatically tracking career pages from major teams, leagues, and sports organizations, plus LinkedIn and other boards |
| Hidden roles | Also surfaces opportunities shared through its network that are hard to find through public channels |
| New jobs | Around 400 per month (12,000+ added historically) |
| Sports | Baseball, basketball, football, soccer, hockey, golf, tennis, Formula 1 |
| Roles | Internships through to director level |
| Extras | Powerful search filters, plus member access to datasets, educational-partner discounts, and recommendations for breaking into the industry |
Instead of checking dozens of sites and still missing openings, SportsJobs Online brings them together and lets you filter fast, which is why it is our top pick for a focused sports analytics search.
It still pays to cast a wide net. A few other places worth checking:
- TeamWork Online: the long-running sports-industry board used by teams, leagues, and venues.
- LinkedIn Jobs: set alerts for “sports analyst”, “trading analyst”, and “quantitative analyst”.
- Indeed: broad coverage that catches listings which never reach the niche boards.
Step 2: Understand what desks actually hire for
Finding the listing is the easy part. Standing out is harder. Sports trading and quant betting roles are technical, and the screen is usually some version of “can you turn market data into a decision?” Here is what that breaks down to in practice.
| Skill | Why it matters |
|---|---|
| Python | The lingua franca of every trading desk and modelling team. requests, pandas, numpy. |
| Reading odds feeds | Decimal vs American vs fractional, implied probability, removing the vig to get a fair price. |
| Line shopping & CLV | Comparing prices across books and benchmarking against the closing line is the core of value betting. |
| Sharp vs soft books | Knowing why Pinnacle’s price is a signal and a recreational book’s is noise. |
| Modelling | Poisson for soccer, Elo for tennis, Monte Carlo for bankroll risk. You do not need all of them, but you need one done well. |
| A portfolio | The thing that 95% of applicants skip. A repo that does something real beats a list of buzzwords every time. |
Step 3: Build a portfolio project with a free odds API
The fastest way to demonstrate every skill above is to build a small tool against live market data. You do not need a commercial data contract or a scraping setup. OddsPapi gives you a free tier with real-time odds from 350+ bookmakers, including sharps like Pinnacle and SBOBET, plus free historical data so you can backtest a model before you ever risk a cent.
Here is a complete, working example: a line-shopping scanner that pulls a soccer match across every book, finds the best price, and flags when it beats the sharp benchmark. This is exactly the kind of thing a trading desk wants to see you reason about.
import requests, time
from datetime import date, timedelta
API_KEY = "YOUR_API_KEY" # get a free key at oddspapi.io
BASE = "https://api.oddspapi.io/v4"
def get(path, **params):
params["apiKey"] = API_KEY # apiKey is a query param, not a header
return requests.get(f"{BASE}{path}", params=params).json()
# 1. Find a soccer fixture that has live odds
frm = date.today().isoformat()
to = (date.today() + timedelta(days=3)).isoformat()
fixtures = [f for f in get("/fixtures", sportId=10, **{"from": frm, "to": to})
if f.get("hasOdds")]
fixture_id = fixtures[0]["fixtureId"]
# 2. Pull every book's price for Full Time Result (market 101, Home = outcome 101)
time.sleep(1)
odds = get("/odds", fixtureId=fixture_id)["bookmakerOdds"]
home_prices = {}
for slug, data in odds.items():
try:
home_prices[slug] = data["markets"]["101"]["outcomes"]["101"]["players"]["0"]["price"]
except KeyError:
continue # this book doesn't price that market
# 3. Line shopping: who has the best (highest) price?
ranked = sorted(home_prices.items(), key=lambda kv: -kv[1])
best_book, best_price = ranked[0]
print(f"Best home-win price: {best_price} @ {best_book}")
# 4. A simple edge signal: Pinnacle is the sharp benchmark.
# Beat its price and you may have value.
if "pinnacle" in home_prices and best_book != "pinnacle":
edge = (best_price / home_prices["pinnacle"] - 1) * 100
print(f"Best price is {edge:.1f}% above Pinnacle's {home_prices['pinnacle']}")
That is fewer than 30 lines, and it touches authentication, fixture discovery, nested JSON parsing, line shopping, and a sharp-book edge signal. Drop it in a repo with a clean README and you already have more to talk about in an interview than most candidates.
Step 4: Level it up
Once the basic scanner works, extend it into something a hiring manager remembers. Each of these is a tutorial on our blog with tested Python you can fork:
- Build an arbitrage betting bot: find risk-free spreads across books.
- Build a value betting scanner: surface +EV prices against a fair line.
- Expected value, CLV & the Pinnacle benchmark: the metric desks live by.
- Kelly criterion stake sizing: turn an edge into a bankroll strategy.
- Tennis Elo model: beat the closing line with free historical odds.
Pick one, ship it, write up what you learned. A candidate who walks in with a backtested model and a line-shopping tool built on real data from 350+ books is not competing with the resume pile; they are in a different conversation entirely.
Put it together
Two steps: find the roles, then earn them.
- Track openings daily at SportsJobs Online: internships to director level, across every major sport.
- Build the portfolio that gets you shortlisted. Grab a free OddsPapi API key and start with the scanner above.
The data is free. The jobs are listed. The only thing missing is the project with your name on it.