API reference
Base URL https://data.sportshustle.com. All endpoints are GET and return JSON, or CSV with ?format=csv.
Requests run from your browser against the live API and count toward your plan. A key you enter is kept only in this tab.
Authentication
Create a key in the dashboard and send it in the Authorization header. Keep keys server-side — never ship them in browser or mobile code.
export BASE=https://data.sportshustle.com export KEY=sk_live_… curl $BASE/api/v1/sports -H "Authorization: Bearer $KEY"
Responses
Success responses wrap results in data; lists add meta for paging. Errors always use the same shape.
// 200
{ "data": [ … ], "meta": { "total": 104, "limit": 25, "offset": 0 } }
// 4xx / 5xx
{ "error": { "code": "invalid_parameter", "message": "state must be a 2-letter abbreviation" } }CSV downloads
Add format=csv to any endpoint to get the same page of results as a CSV file. Nested fields become dotted columns (conference.division.name) and lists are joined with semicolons. Paging, limits and quotas work exactly as for JSON, and errors are still returned as JSON. Prefer a UI? The Data Downloads page lets you build a search with every filter and download the results.
curl "$BASE/api/v1/colleges?state=TX&limit=100&format=csv" \ -H "Authorization: Bearer $KEY" -o colleges.csv
Postman
Download the collection, then in Postman choose Import and select the file. Open the collection's Variables tab and set apiKey to one of your keys — every request already uses it as a Bearer token.
Rate limits & quotas
Each plan has a per-minute rate limit and a monthly request quota, shared by all keys on your account. Every response tells you where you stand:
| Header | Meaning |
|---|---|
| X-RateLimit-Limit | Requests allowed per minute |
| X-RateLimit-Remaining | Requests left in the current window |
| X-RateLimit-Reset | Unix time (seconds) the window resets |
| Retry-After | On 429 rate_limited: seconds to wait |
| X-Quota-Limit | Monthly requests included in your plan |
| X-Quota-Remaining | Requests left this period |
Errors
| Status | Code | Meaning |
|---|---|---|
| 400 | invalid_parameter | A query parameter or id is malformed. |
| 401 | unauthorized | Missing, invalid, revoked or expired API key. |
| 403 | plan_upgrade_required | Your plan doesn't include this dataset. |
| 403 | account_inactive | Account suspended or canceled. |
| 404 | not_found | No record with that id. |
| 429 | rate_limited | Per-minute limit hit. Wait Retry-After seconds. |
| 429 | quota_exceeded | Monthly quota used up. Upgrade or wait for the next period. |
| 500 | internal_error | Our fault. Safe to retry with backoff. |
/api/v1/sports
SportsEvery sport with its gender and positions. Not paginated.
| Parameter | In | Description |
|---|---|---|
| format | query | json (default) or csv — csv returns this page as a CSV file. |
curl "$BASE/api/v1/sports" -H "Authorization: Bearer $KEY"
Try itOpenClose
GET /api/v1/sports/api/v1/colleges
CollegesSearch colleges by name, state, division or conference.
| Parameter | In | Description |
|---|---|---|
| q | query | Case-insensitive substring of the college name. |
| state | query | Two-letter state. |
| division | query | Exact match, e.g. "NCAA Division I (FBS)", "NAIA", "JUCO". |
| conference_id | query | Conference id (from a college's conference object). |
| limit | query | Results per page. Default 25, max = your plan's page size. |
| offset | query | Results to skip. Use with meta.total to page. |
| format | query | json (default) or csv — csv returns this page as a CSV file. |
curl "$BASE/api/v1/colleges?state=TX" -H "Authorization: Bearer $KEY"
Try itOpenClose
GET /api/v1/colleges?state=TX/api/v1/colleges/{id}
CollegesFull profile: conference, branding, links, and academics (GPA, SAT/ACT ranges, acceptance rate, cost, rankings).
| Parameter | In | Description |
|---|---|---|
| id | path | College id from /colleges. |
| format | query | json (default) or csv — csv returns this page as a CSV file. |
curl "$BASE/api/v1/colleges/6153" -H "Authorization: Bearer $KEY"
Try itOpenClose
GET /api/v1/colleges/6153/api/v1/events
EventsPublic camps, showcases, combines, tryouts and tournaments. Upcoming only unless you pass from.
| Parameter | In | Description |
|---|---|---|
| q | query | Searches title, organizer and description. |
| type | query | camp, showcase, combine, tournament, tryout, clinic, evaluation, private_workout, meeting, other. |
| sport_id | query | From /sports. |
| college_id | query | Events organized by a college. |
| from | query | ISO date on the start date. Defaults to now. |
| to | query | ISO date on the start date. |
| limit | query | Results per page. Default 25, max = your plan's page size. |
| offset | query | Results to skip. Use with meta.total to page. |
| format | query | json (default) or csv — csv returns this page as a CSV file. |
curl "$BASE/api/v1/events" -H "Authorization: Bearer $KEY"
Try itOpenClose
GET /api/v1/events/api/v1/events/{id}
EventsOne event by UUID.
| Parameter | In | Description |
|---|---|---|
| id | path | Event UUID from /events. |
| format | query | json (default) or csv — csv returns this page as a CSV file. |
curl "$BASE/api/v1/events/%7Bid%7D" -H "Authorization: Bearer $KEY"
Try itOpenClose
GET /api/v1/events/%7Bid%7D/api/v1/contacts
College contactsCollege coaching staff with email, phone, socials and recruiting questionnaire links.
| Parameter | In | Description |
|---|---|---|
| college_id | query | From /colleges. |
| sport_id | query | From /sports. |
| state | query | The college's two-letter state. |
| division | query | Exact match, e.g. "NCAA Division I". |
| title | query | Substring, e.g. "Head Coach" or "Recruiting". |
| q | query | First or last name. |
| limit | query | Results per page. Default 25, max 50 on every plan. |
| offset | query | Results to skip. Use with meta.total to page. |
| format | query | json (default) or csv — csv returns this page as a CSV file. |
curl "$BASE/api/v1/contacts?college_id=6153" -H "Authorization: Bearer $KEY"
Contact data is licensed for your own recruiting outreach; access is logged per key. Bulk export or resale is not permitted.
Try itOpenClose
GET /api/v1/contacts?college_id=6153/api/v1/contacts/{id}
College contactsOne contact by UUID.
| Parameter | In | Description |
|---|---|---|
| id | path | Contact UUID from /contacts. |
| format | query | json (default) or csv — csv returns this page as a CSV file. |
curl "$BASE/api/v1/contacts/%7Bid%7D" -H "Authorization: Bearer $KEY"
Try itOpenClose
GET /api/v1/contacts/%7Bid%7D