Fanatics API endpoint
Returns Fanatics' full top-level navigation tree: leagues (NFL, MLB, NBA, NHL, Soccer, WWE, College, ...) and, where Fanatics exposes a team-level breakdown, each league's teams (College's several hundred schools included). Each league's or team's url is directly usable as fanatics_category's url input. Public data sourced from fanatics.com's own navigation data.
/fanatics/categoriesRequires the x-api-key header. No query or path parameters.
Notable response behavior:
url is directly usable as
GET /fanatics/category's url parameter.teams is populated for NFL, MLB, NBA, NHL, Soccer, WWE, and College.
Leagues without a team-level breakdown (currently WNBA, NASCAR, F1)
still have a usable top-level url, just no teams array.url
and an empty teams array rather than failing the whole request.name/url shape.| Field | Filled in, of 15 checked | Values in the sample |
|---|---|---|
| name | 15 | “Featured” and 14 other values |
| url | 11 | “/nfl/o-3572+z-953036859-1253393850” and 10 other values |
| teams | 6 | median 30 entries |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/fanatics/categories" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"source_url": "https://www.fanatics.com/content/nav/v1789467884/510005/en-US.json",
"fetched_at": "2026-09-16T04:00:00Z",
"leagues": [
{
"name": "NFL",
"url": "/nfl/o-3572+z-953036859-1253393850",
"teams": [
{
"name": "Indianapolis Colts",
"url": "/nfl/indianapolis-colts/o-2483+t-03378189+z-90650-4056854214",
"product_count": 6138
}
]
},
{
"name": "College",
"url": "/college/o-27+z-9314487535-1329600116",
"teams": [
{
"name": "Alabama Crimson Tide",
"url": "/college/alabama-crimson-tide/o-38+t-12809913+z-977646-2884991572"
}
]
}
]
}
}Request schema
No body schema
Response schema
#/definitions/fanatics.categoriesResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | fanatics.CategoriesResponse | No | ||||
| data.fetched_at | string | No | ||||
| data.leagues | array | No | ||||
| data.leagues[].name | string | No | NFL | |||
| data.leagues[].teams | array | No | ||||
| data.leagues[].teams[].name | string | No | Indianapolis Colts | |||
| data.leagues[].teams[].product_count | integer | No | 6138 | |||
| data.leagues[].teams[].url | string | No | /nfl/indianapolis-colts/o-2483+t-03378189+z-90650-4056854214 | |||
| data.leagues[].url | string | No | /nfl/o-3572+z-953036859-1253393850 | |||
| data.source_url | string | No | ||||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 500 | Internal Server Error | #/definitions/app.Response |
| 503 | Service Unavailable | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/fanatics/categories" \
-H "x-api-key: $CRAWLORA_API_KEY"