API Documentation

Everything you need to integrate PropLine into your app.

Quick Start

Get up and running in 30 seconds:

  1. Get your API key from the signup form
  2. Make your first request:
curl "https://api.prop-line.com/v1/sports?apiKey=YOUR_API_KEY"

Authentication

Pass your API key via query parameter or header:

# Query parameter
curl "https://api.prop-line.com/v1/sports?apiKey=YOUR_API_KEY"

# Header
curl -H "X-API-Key: YOUR_API_KEY" "https://api.prop-line.com/v1/sports"

Endpoints

Base URL: https://api.prop-line.com/v1

MethodEndpointDescription
GET/sportsList available sports
GET/sports/{sport}/eventsList upcoming events
GET/sports/{sport}/oddsBulk odds (game lines)
GET/sports/{sport}/events/{id}/oddsEvent odds + player props
GET/sports/{sport}/scoresGame scores & status
GET/sports/{sport}/events/{id}/resultsResolved prop outcomes (Pro)
GET/sports/{sport}/events/{id}/statsRaw player/team stats from box scores

List Sports

GET /v1/sports

Returns all available sports with their current status.

Response:

[
  {
    "key": "baseball_mlb",
    "title": "MLB",
    "active": true
  }
]

List Events

GET /v1/sports/{sport_key}/events

Returns upcoming events for a sport. No odds included (use the odds endpoint for that).

Response:

[
  {
    "id": "10",
    "sport_key": "baseball_mlb",
    "home_team": "Colorado Rockies",
    "away_team": "Philadelphia Phillies",
    "commence_time": "2026-04-05T19:10:00Z"
  }
]

Get Odds (Bulk)

GET /v1/sports/{sport_key}/odds?markets=h2h,spreads,totals

Returns odds for all upcoming events. Use the markets parameter to filter by market type (comma-separated).

Player Props (Per Event)

GET /v1/sports/{sport_key}/events/{event_id}/odds
    ?markets=pitcher_strikeouts,batter_hits,batter_home_runs

This is the primary endpoint for player props. Pass one or more prop market keys via the markets parameter.

Response:

{
  "id": "10",
  "sport_key": "baseball_mlb",
  "home_team": "Colorado Rockies",
  "away_team": "Philadelphia Phillies",
  "commence_time": "2026-04-05T19:10:00Z",
  "bookmakers": [{
    "key": "bovada",
    "title": "Bovada",
    "markets": [{
      "key": "pitcher_strikeouts",
      "last_update": "2026-04-05T18:46:30Z",
      "outcomes": [
        {
          "name": "Over",
          "description": "Zack Wheeler",
          "price": -130,
          "point": 6.5
        },
        {
          "name": "Under",
          "description": "Zack Wheeler",
          "price": 100,
          "point": 6.5
        }
      ]
    }]
  }]
}

Game Scores

GET /v1/sports/{sport_key}/scores?days_from=3

Returns game scores and status for recent events. Free tier. Use days_from to control how many days back to include (default: 3).

Response:

[
  {
    "id": "16",
    "sport_key": "baseball_mlb",
    "home_team": "Detroit Tigers",
    "away_team": "St. Louis Cardinals",
    "commence_time": "2026-04-05T23:20:00Z",
    "status": "final",
    "home_score": 3,
    "away_score": 5
  }
]

Prop Results (Pro)

GET /v1/sports/{sport_key}/events/{event_id}/results
    ?markets=pitcher_strikeouts,batter_hits

Returns resolved prop outcomes with actual player stats. Pro tier only. Each outcome includes whether it won, lost, or pushed, plus the actual stat value.

Response:

{
  "id": "16",
  "sport_key": "baseball_mlb",
  "home_team": "Detroit Tigers",
  "away_team": "St. Louis Cardinals",
  "status": "final",
  "home_score": 3,
  "away_score": 5,
  "markets": [{
    "key": "pitcher_strikeouts",
    "description": "Total Strikeouts - Tarik Skubal (DET)",
    "outcomes": [
      {
        "name": "Over",
        "description": "Tarik Skubal (DET)",
        "price": -150,
        "point": 6.5,
        "resolution": "won",
        "actual_value": 7.0,
        "resolved_at": "2026-04-06T03:15:00Z"
      },
      {
        "name": "Under",
        "description": "Tarik Skubal (DET)",
        "price": 120,
        "point": 6.5,
        "resolution": "lost",
        "actual_value": 7.0,
        "resolved_at": "2026-04-06T03:15:00Z"
      }
    ]
  }]
}

Resolution values: won, lost, push, void (player scratched)

Player Stats

GET /v1/sports/{sport_key}/events/{event_id}/stats

Returns raw player and team stats from official box scores. This data is book-agnostic — use it to resolve props from any sportsbook, build your own models, or power research dashboards. Free tier.

Response:

{
  "id": "16",
  "sport_key": "baseball_mlb",
  "home_team": "Detroit Tigers",
  "away_team": "St. Louis Cardinals",
  "status": "final",
  "home_score": 3,
  "away_score": 5,
  "players": [
    {
      "name": "Tarik Skubal",
      "team": "Detroit Tigers",
      "stats": {
        "strikeouts": 7,
        "earned_runs": 2,
        "hits_allowed": 5,
        "innings_pitched": 6.0
      }
    },
    {
      "name": "Masyn Winn",
      "team": "St. Louis Cardinals",
      "stats": {
        "hits": 2,
        "home_runs": 1,
        "rbis": 3,
        "total_bases": 5
      }
    }
  ]
}

Stats are sourced from official league APIs (MLB, NBA, NHL, NCAAB, ESPN) and are available once a game reaches final status. Use this endpoint alongside odds from any sportsbook to build your own prop resolution engine.

Available Markets

Market KeyDescriptionSport
h2hMoneylineAll
spreadsPoint Spread / Run LineAll
totalsOver/Under (Game Total)All
pitcher_strikeoutsPitcher Total StrikeoutsMLB
pitcher_earned_runsPitcher Earned Runs AllowedMLB
pitcher_hits_allowedPitcher Hits AllowedMLB
batter_hitsBatter Total HitsMLB
batter_home_runsBatter Home RunsMLB
batter_rbisBatter RBIsMLB
batter_total_basesBatter Total BasesMLB
batter_stolen_basesBatter Stolen BasesMLB
batter_walksBatter WalksMLB
batter_singlesBatter SinglesMLB
batter_doublesBatter DoublesMLB
batter_runsBatter Runs ScoredMLB
player_pointsPlayer Total PointsNBA
player_reboundsPlayer ReboundsNBA
player_assistsPlayer AssistsNBA
player_threesPlayer Three-Pointers MadeNBA
player_stealsPlayer StealsNBA
player_blocksPlayer BlocksNBA
player_turnoversPlayer TurnoversNBA
player_points_rebounds_assistsPoints + Rebounds + AssistsNBA
player_double_doublePlayer Double-DoubleNBA
player_goalsPlayer GoalsNHL
player_shots_on_goalPlayer Shots on GoalNHL
goalie_savesGoalie SavesNHL
player_blocked_shotsPlayer Blocked ShotsNHL
anytime_goal_scorerAnytime Goal ScorerSoccer
first_goal_scorerFirst Goal ScorerSoccer
both_teams_to_scoreBoth Teams to ScoreSoccer
double_chanceDouble ChanceSoccer
draw_no_betDraw No BetSoccer
correct_scoreCorrect ScoreSoccer
total_cornersTotal CornersSoccer
total_cardsTotal CardsSoccer
total_roundsTotal RoundsUFC / Boxing
fight_distanceFight Goes the DistanceUFC / Boxing
round_bettingRound BettingUFC
fight_winnerFight WinnerBoxing
fight_outcomeFight Outcome (KO/TKO/Decision)Boxing

Error Codes

StatusDescription
401Missing or invalid API key
404Sport or event not found
429Rate limit exceeded
500Internal server error