SportsHustle

API reference

Base URL https://data.sportshustle.com. All endpoints are GET and return JSON, or CSV with ?format=csv.

Download Postman collection

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:

HeaderMeaning
X-RateLimit-LimitRequests allowed per minute
X-RateLimit-RemainingRequests left in the current window
X-RateLimit-ResetUnix time (seconds) the window resets
Retry-AfterOn 429 rate_limited: seconds to wait
X-Quota-LimitMonthly requests included in your plan
X-Quota-RemainingRequests left this period

Errors

StatusCodeMeaning
400invalid_parameterA query parameter or id is malformed.
401unauthorizedMissing, invalid, revoked or expired API key.
403plan_upgrade_requiredYour plan doesn't include this dataset.
403account_inactiveAccount suspended or canceled.
404not_foundNo record with that id.
429rate_limitedPer-minute limit hit. Wait Retry-After seconds.
429quota_exceededMonthly quota used up. Upgrade or wait for the next period.
500internal_errorOur fault. Safe to retry with backoff.
GET

/api/v1/sports

Sports

Every sport with its gender and positions. Not paginated.

ParameterInDescription
formatqueryjson (default) or csv — csv returns this page as a CSV file.
curl "$BASE/api/v1/sports" -H "Authorization: Bearer $KEY"
Try itOpen
GET /api/v1/sports
Sign in or add an API key above to send requests.
GET

/api/v1/colleges

Colleges

Search colleges by name, state, division or conference.

ParameterInDescription
qqueryCase-insensitive substring of the college name.
statequeryTwo-letter state.
divisionqueryExact match, e.g. "NCAA Division I (FBS)", "NAIA", "JUCO".
conference_idqueryConference id (from a college's conference object).
limitqueryResults per page. Default 25, max = your plan's page size.
offsetqueryResults to skip. Use with meta.total to page.
formatqueryjson (default) or csv — csv returns this page as a CSV file.
curl "$BASE/api/v1/colleges?state=TX" -H "Authorization: Bearer $KEY"
Try itOpen
GET /api/v1/colleges?state=TX
Sign in or add an API key above to send requests.
GET

/api/v1/colleges/{id}

Colleges

Full profile: conference, branding, links, and academics (GPA, SAT/ACT ranges, acceptance rate, cost, rankings).

ParameterInDescription
idpathCollege id from /colleges.
formatqueryjson (default) or csv — csv returns this page as a CSV file.
curl "$BASE/api/v1/colleges/6153" -H "Authorization: Bearer $KEY"
Try itOpen
GET /api/v1/colleges/6153
Sign in or add an API key above to send requests.
GET

/api/v1/events

Events

Public camps, showcases, combines, tryouts and tournaments. Upcoming only unless you pass from.

ParameterInDescription
qquerySearches title, organizer and description.
typequerycamp, showcase, combine, tournament, tryout, clinic, evaluation, private_workout, meeting, other.
sport_idqueryFrom /sports.
college_idqueryEvents organized by a college.
fromqueryISO date on the start date. Defaults to now.
toqueryISO date on the start date.
limitqueryResults per page. Default 25, max = your plan's page size.
offsetqueryResults to skip. Use with meta.total to page.
formatqueryjson (default) or csv — csv returns this page as a CSV file.
curl "$BASE/api/v1/events" -H "Authorization: Bearer $KEY"
Try itOpen
GET /api/v1/events
Sign in or add an API key above to send requests.
GET

/api/v1/events/{id}

Events

One event by UUID.

ParameterInDescription
idpathEvent UUID from /events.
formatqueryjson (default) or csv — csv returns this page as a CSV file.
curl "$BASE/api/v1/events/%7Bid%7D" -H "Authorization: Bearer $KEY"
Try itOpen
GET /api/v1/events/%7Bid%7D
Sign in or add an API key above to send requests.
GET

/api/v1/contacts

College contacts

College coaching staff with email, phone, socials and recruiting questionnaire links.

ParameterInDescription
college_idqueryFrom /colleges.
sport_idqueryFrom /sports.
statequeryThe college's two-letter state.
divisionqueryExact match, e.g. "NCAA Division I".
titlequerySubstring, e.g. "Head Coach" or "Recruiting".
qqueryFirst or last name.
limitqueryResults per page. Default 25, max 50 on every plan.
offsetqueryResults to skip. Use with meta.total to page.
formatqueryjson (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 itOpen
GET /api/v1/contacts?college_id=6153
Sign in or add an API key above to send requests.
GET

/api/v1/contacts/{id}

College contacts

One contact by UUID.

ParameterInDescription
idpathContact UUID from /contacts.
formatqueryjson (default) or csv — csv returns this page as a CSV file.
curl "$BASE/api/v1/contacts/%7Bid%7D" -H "Authorization: Bearer $KEY"
Try itOpen
GET /api/v1/contacts/%7Bid%7D
Sign in or add an API key above to send requests.