Opendorse APIopendorse.com ↗
Access Opendorse NIL data: team lists, athlete directories, social media reach, and brand deal pricing across college sports programs.
What is the Opendorse API?
The Opendorse API exposes 4 endpoints covering the Opendorse NIL marketplace — from paginated team and athlete listings to full athlete profiles with social media reach figures and service pricing. The get_athlete_profile endpoint returns per-platform follower counts for Instagram, Twitter, TikTok, and Facebook alongside biography, background demographics, and an itemized list of available brand deal services.
curl -X GET 'https://api.parse.bot/scraper/1214b568-9cb5-41d2-8c3b-6e23d202551f/get_all_teams?page=1' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace opendorse-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: Opendorse NIL Marketplace — browse teams, search athletes, view profiles."""
from parse_apis.opendorse_api import Opendorse, AthleteSort, PriceRange, AthleteNotFound
client = Opendorse()
# Browse the team directory (capped to 5 teams)
for team in client.teams.list(limit=5):
print(team.name, team.slug)
# Construct a team and fetch its branding metadata
alabama = client.team(slug="alabama-crimsontide")
meta = alabama.metadata()
print(meta.name, meta.available_sports)
# Search athletes on that team, sorted by price
for athlete in alabama.athletes.search(sort=AthleteSort.PRICE_HIGH_TO_LOW, limit=3):
print(athlete.full_name, athlete.sport, athlete.starting_price)
# Drill into the first athlete's full profile
top = alabama.athletes.search(price=PriceRange.FIFTY_TO_TWO_HUNDRED, limit=1).first()
if top:
profile = top.details()
print(profile.full_name, profile.position, profile.bio)
print(profile.social_media.instagram_reach, profile.social_media.tiktok_reach)
for svc in profile.pricing.services:
print(svc.category_type, svc.starting_price)
# Typed error handling for a missing athlete
try:
bad = client.team(slug="opendorse")
bad.athletes.search(term="zzz_nonexistent_zzz", limit=1).first()
except AthleteNotFound as exc:
print(f"Not found: {exc.profile_code}")
print("exercised: teams.list / team.metadata / athletes.search / athlete.details")
Retrieve a paginated directory of teams registered on the Opendorse NIL marketplace. Each page returns up to 40 teams. Teams are sorted alphabetically by name. Use the slug from a team entry to scope athlete searches or fetch team metadata.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination. |
{
"type": "object",
"fields": {
"teams": "array of team objects with id, slug, name, marketplaceType, and logo",
"pagination": "object with page, totalCount, and totalPages"
},
"sample": {
"data": {
"teams": [
{
"id": 164,
"logo": "https://marketplaces.opendorse.com/static/abilenechristian-wildcats/050ee5e2-7c59-47ba-9057-223228514819.svg",
"name": "Abilene Christian Wildcats",
"slug": "abilenechristian-wildcats",
"ordinal": null,
"marketplaceType": "Team"
}
],
"pagination": {
"page": 1,
"totalCount": 335,
"totalPages": 9
}
},
"status": "success"
}
}About the Opendorse API
Teams and Athlete Discovery
The get_all_teams endpoint returns up to 40 teams per page. Each team object includes an id, slug, name, marketplaceType, and logo URL, plus pagination metadata (page, totalCount, totalPages). Use the slug field as input to get_team_athletes or get_team_page_metadata. Pass opendorse as the team_slug to query the global marketplace instead of a single school.
get_team_athletes supports filtering by sport, price range (e.g. ZeroToFiftyDollars, FiftyToTwoHundredDollars), and a free-text term for name search. Sort options include DealsCompleted, PriceHighToLow, PriceLowToHigh, and Recommended. Each athlete object in the response includes full_name, sport, starting_price, profile_url, network_profile_code, and social_reach.
Athlete Profile Detail
get_athlete_profile takes the network_profile_code from athlete listing results and returns a full profile. The pricing object contains a services array and a brand_pricing array that itemize what deal types the athlete offers. The social_media object provides individual _reach and _url fields for Instagram, Twitter, TikTok, and Facebook. The background object includes age, gender, ethnicity, and languages. Team affiliations — current, previous, and leagues — are grouped under affiliations.
Team Metadata
get_team_page_metadata returns the team's display name, logo URL, URL slug, a colors map of role names (such as PrimaryColor, SecondaryColor) to hex values, and an available_sports array. This is useful for building filtered browsing UIs or matching a team's visual identity before rendering athlete cards.
The Opendorse API is a managed, monitored endpoint for opendorse.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when opendorse.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official opendorse.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Identify college athletes by sport and price range for NIL sponsorship outreach using get_team_athletes filters
- Aggregate social media reach across Instagram, TikTok, Twitter, and Facebook for athlete comparison using get_athlete_profile
- Build a team-branded athlete directory using logo, colors, and available_sports from get_team_page_metadata
- Rank athletes by completed deals or starting price using the sort parameter in get_team_athletes
- Pull athlete demographic data (age, gender, ethnicity, languages) from the background field for audience alignment research
- Search athletes by name across the full Opendorse marketplace by passing term with team_slug set to 'opendorse'
- Map current and previous team affiliations for an athlete using the affiliations object in get_athlete_profile
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.