Sports API
Sports API
Section titled “Sports API”Access University of Houston athletics data including schedules, rosters, standings, and game details.
Base URL
Section titled “Base URL”https://api.coogcasa.com/sportsOr directly:
https://coog-sports-backend.coog-planner.workers.devSupported Sports
Section titled “Supported Sports”| Sport Key | Name |
|---|---|
mens-basketball | Men’s Basketball |
womens-basketball | Women’s Basketball |
football | Football |
baseball | Baseball |
softball | Softball |
Endpoints
Section titled “Endpoints”Get All Schedules
Section titled “Get All Schedules”Returns upcoming games across all sports.
GET /api/schedulesResponse:
{ "games": [ { "id": "401827646", "sport": "mens-basketball", "date": "2026-01-24T19:00Z", "name": "Houston Cougars at Texas Tech Red Raiders", "shortName": "HOU @ TTU", "status": "scheduled", "houston": { "score": 0, "record": "17-1", "ranking": 6, "isHome": false }, "opponent": { "id": "2641", "name": "Texas Tech Red Raiders", "abbreviation": "TTU", "logo": "https://..." }, "location": { "name": "United Supermarkets Arena", "city": "Lubbock, TX" } } ], "lastUpdated": "2026-01-24T06:00:00.000Z"}Get Sport Schedule
Section titled “Get Sport Schedule”Returns schedule and team info for a specific sport.
GET /api/schedules/sport?sport={sport}Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
sport | string | Yes | Sport key (e.g., mens-basketball) |
Response:
{ "sport": "mens-basketball", "team": { "id": "248", "name": "Houston Cougars", "abbreviation": "HOU", "logo": "https://...", "record": "17-1", "conferenceRecord": "4-0", "ranking": 6 }, "games": [...], "lastUpdated": "2026-01-24T06:00:00.000Z"}Get Roster
Section titled “Get Roster”Returns the team roster for a specific sport.
GET /api/roster?sport={sport}Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
sport | string | Yes | Sport key |
Response:
{ "sport": "mens-basketball", "team": { "id": "248", "name": "Houston Cougars" }, "athletes": [ { "id": "4433147", "name": "Emanuel Sharp", "firstName": "Emanuel", "lastName": "Sharp", "jersey": "21", "position": "Guard", "height": "6'4\"", "weight": "185 lbs", "class": "Junior", "hometown": "Houston, TX", "headshot": "https://..." } ], "coaches": [ { "name": "Kelvin Sampson", "title": "Head Coach" } ]}Get Standings
Section titled “Get Standings”Returns Big 12 Conference standings for a sport.
GET /api/standings?sport={sport}Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
sport | string | Yes | Sport key |
Response:
{ "sport": "mens-basketball", "conference": "Big 12", "standings": [ { "rank": 1, "team": { "id": "248", "name": "Houston", "abbreviation": "HOU", "logo": "https://..." }, "conferenceRecord": "4-0", "overallRecord": "17-1", "winPercentage": 0.944, "streak": "W5" } ], "lastUpdated": "2026-01-24T09:00:00.000Z"}Get Game Details
Section titled “Get Game Details”Returns detailed information about a specific game.
GET /api/game?id={gameId}Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
id | string | Yes | ESPN Game ID |
Response:
{ "id": "401827646", "sport": "mens-basketball", "date": "2026-01-24T19:00Z", "status": "in_progress", "period": 2, "clock": "8:45", "houston": { "score": 45, "record": "17-1" }, "opponent": { "score": 42, "name": "Texas Tech Red Raiders" }, "boxScore": { "houston": { "leaders": { "points": { "name": "Emanuel Sharp", "value": 18 }, "rebounds": { "name": "J'Wan Roberts", "value": 8 }, "assists": { "name": "Jamal Shead", "value": 6 } } } }}Get Team Info
Section titled “Get Team Info”Returns team information for a sport.
GET /api/team?sport={sport}Get Statistics
Section titled “Get Statistics”Returns system statistics and health info.
GET /api/statsResponse:
{ "requests": { "count": 42, "date": "Fri Jan 24 2026" }, "polling": { "activeGames": 1, "lastCheck": "2026-01-24T18:55:00.000Z" }, "schedules": { "totalGames": 156, "lastUpdated": "2026-01-24T06:00:00.000Z" }}Image Proxy
Section titled “Image Proxy”Proxies ESPN images through our CDN to protect referrer headers.
GET /api/image?url={encodedEspnUrl}Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
url | string | Yes | URL-encoded ESPN image URL |
Example:
/api/image?url=https%3A%2F%2Fa.espncdn.com%2Fi%2Fteamlogos%2Fncaa%2F500%2F248.pngReturns the image with proper caching headers. Only ESPN domains are allowed.
Error Responses
Section titled “Error Responses”400 Bad Request
Section titled “400 Bad Request”{ "error": "sport parameter required"}404 Not Found
Section titled “404 Not Found”{ "error": "Game not found"}500 Internal Server Error
Section titled “500 Internal Server Error”{ "error": "Internal server error", "message": "An error occurred"}Rate Limits
Section titled “Rate Limits”- Standard rate: 60 requests/minute per IP
- Handled by Cloudflare WAF
Caching
Section titled “Caching”| Endpoint | Cache Duration |
|---|---|
/api/schedules | 24 hours |
/api/roster | 24 hours |
/api/standings | 1 hour |
/api/game | Varies by status |
/api/image | 7 days |