> ## Documentation Index
> Fetch the complete documentation index at: https://docs.firecrawl.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Sports & Fantasy Data API

> Sports data API for AI agents: live scores, NFL injury reports, fantasy football projections and Sleeper league data from Firecrawl Alexandria on one API key

Firecrawl Alexandria is a catalogue of data tools from providers like ESPN, NFL.com, and Sleeper. Your AI agent calls them through Firecrawl, with the same API key it uses for search and scrape. Your agent finds a sports tool with a free search, then runs it with Firecrawl `/scrape` and gets JSON back.

The sports tools cover scores and schedules, official NFL injury reports, weekly fantasy projections and rankings, and public league data from Sleeper and Yahoo.

Use it as a sports data API for fantasy apps, sports chatbots, and research agents that answer "who should I start this week?" from this week's projections and injury reports.

## What sports data can your agent get?

Firecrawl Alexandria covers league data, fantasy projections, fantasy league data, pitch-level baseball data, and prediction markets. Each provider exposes capabilities your agent calls by name, and each provider has a public page that lists every capability.

| Data | Providers | Example capabilities |
| - | - | - |
| Scores, schedules, standings, box scores | [ESPN](https://www.firecrawl.dev/alexandria/espn-com), [NFL.com](https://www.firecrawl.dev/alexandria/nfl-com) | `sports-data/scoreboard`, `sports-data/boxscore`, `sports-league-data/schedule` |
| Injury and practice reports | [NFL.com](https://www.firecrawl.dev/alexandria/nfl-com), [ESPN](https://www.firecrawl.dev/alexandria/espn-com), [StartWho](https://www.firecrawl.dev/alexandria/startwho-com) | `sports-league-data/injury_report`, `sports-data/injuries` |
| Weekly fantasy projections and rankings | [StartWho](https://www.firecrawl.dev/alexandria/startwho-com), [CBS Sports](https://www.firecrawl.dev/alexandria/cbssports-com), [FFToday](https://www.firecrawl.dev/alexandria/fftoday-com), [FantasyData](https://www.firecrawl.dev/alexandria/fantasydata-com), [Draft Sharks](https://www.firecrawl.dev/alexandria/draftsharks-com), [Fantasy Football Calculator](https://www.firecrawl.dev/alexandria/fantasyfootballcalculator-com) | `fantasy-sports-rankings/projections`, `fantasy-sports-rankings/weekly_rankings`, `fantasy-sports-rankings/adp` |
| Fantasy league data | [Sleeper](https://www.firecrawl.dev/alexandria/sleeper-com), [Yahoo Fantasy Football](https://www.firecrawl.dev/alexandria/football-fantasysports-yahoo-com), [Yahoo Fantasy Basketball](https://www.firecrawl.dev/alexandria/basketball-fantasysports-yahoo-com) | `fantasy-football-leagues/league_rosters`, `fantasy-football-leagues/trending_players`, `fantasy-football-players/player_news` |
| MLB Statcast pitches and leaderboards | [MLB Baseball Savant](https://www.firecrawl.dev/alexandria/baseballsavant-mlb-com) | `baseball-statcast/search_statcast`, `baseball-statcast/get_leaderboard` |
| Prediction markets | [Polymarket](https://www.firecrawl.dev/alexandria/polymarket) | `sports/list`, `markets/list` |
| Table tennis results and rankings | [World Table Tennis](https://www.firecrawl.dev/alexandria/worldtabletennis-com) | `table-tennis/event_results`, `table-tennis/rankings` |

ESPN covers the NFL, NBA, WNBA, MLB, NHL, college sports, and soccer competitions including the Premier League and UEFA tournaments. Browse every provider on the [sports category page](https://www.firecrawl.dev/alexandria/categories/sports).

## How does Firecrawl Alexandria return sports data?

Each provider offers capabilities, which are the individual tools your agent calls by name, such as `sleeper-com` with `fantasy-football-leagues/trending_players`. Getting data takes three calls:

* A Firecrawl `/search` with `sources: ["alexandria"]` returns matching tools for free.
* Find Tools (`find_tools` in Python, `findTools` in Node) returns a tool's inputs and price for free.
* A Firecrawl `/scrape` with an `alexandria` body runs the tool and bills its listed credits.

**1. Find a tool**

Describe the data in plain words. Firecrawl Alexandria returns ranked tools, each with a provider, a capability, and a description.

**2. Check its inputs**

Read the tool's options and credit cost with `find_tools` / `findTools`. Inspection is free.

**3. Run it**

Call `scrape` with the provider, capability, and options. No page URL is needed.

The examples need the Python SDK 4.44.0 or later, or the Node SDK 4.41.0 or later. Firecrawl Alexandria needs an [API key](https://www.firecrawl.dev/app/api-keys); it doesn't run keyless.

### Find sports tools with a free search

```python Python theme={null}
import os
from firecrawl import Firecrawl

firecrawl = Firecrawl(api_key=os.environ.get("FIRECRAWL_API_KEY"))

result = firecrawl.search(
    "weekly fantasy football projections in PPR",
    sources=["alexandria"],
    limit=5,
)

for tool in result.tools:
    print(tool.provider, tool.capability)
```

```javascript JavaScript theme={null}
import { Firecrawl } from "firecrawl";

const firecrawl = new Firecrawl({ apiKey: process.env.FIRECRAWL_API_KEY });

const result = await firecrawl.search("weekly fantasy football projections in PPR", {
  sources: ["alexandria"],
  limit: 5,
});

for (const tool of result.tools ?? []) {
  console.log(tool.provider, tool.capability);
}
```

```bash cURL theme={null}
curl -s https://api.firecrawl.dev/v2/search \
  -H "Authorization: Bearer $FIRECRAWL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "query": "weekly fantasy football projections in PPR",
  "sources": ["alexandria"],
  "limit": 5
}'
```

The search returned these tools on October 26, 2026 (cURL response, first three results):

```json theme={null}
{
  "success": true,
  "data": {
    "tools": [
      {
        "provider": "cbssports-com",
        "capability": "fantasy-sports-rankings/projections",
        "description": "This week's or next week's projected points and stat lines for a football position, rest-of-season projections, or NBA fantasy basketball season and scoring-period projections."
      },
      {
        "provider": "startwho-com",
        "capability": "fantasy-sports-rankings/projections",
        "description": "Start/sit decisions from betting lines: this week's projected points and the props behind them."
      },
      {
        "provider": "fftoday-com",
        "capability": "fantasy-sports-rankings/weekly_projections",
        "description": "Projected points and stat lines for a position in one NFL week, in a specific league's scoring."
      }
    ]
  },
  "creditsUsed": 0
}
```

Pick a tool by its provider and capability, since the order of results can vary. If discovery returns `TOOL_DISCOVERY_UNAVAILABLE`, retry the request.

### Get this week's fantasy projections

This call asks StartWho for the top three quarterbacks in PPR scoring for the current NFL week. StartWho builds each projection from sportsbook player props and returns the props behind the number.

```python Python theme={null}
import os
from firecrawl import Firecrawl

firecrawl = Firecrawl(api_key=os.environ.get("FIRECRAWL_API_KEY"))

doc = firecrawl.scrape(
    alexandria={
        "provider": "startwho-com",
        "capability": "fantasy-sports-rankings/projections",
        "options": {"position": "QB", "scoring": "PPR", "limit": 3},
    },
)

result = doc.alexandria[0]
for player in result.data["players"]:
    print(player["name"], player["team"], player["opponent"], player["projected_points"])
```

```javascript JavaScript theme={null}
import { Firecrawl } from "firecrawl";

const firecrawl = new Firecrawl({ apiKey: process.env.FIRECRAWL_API_KEY });

const doc = await firecrawl.scrape({
  alexandria: {
    provider: "startwho-com",
    capability: "fantasy-sports-rankings/projections",
    options: { position: "QB", scoring: "PPR", limit: 3 },
  },
});

const result = doc.alexandria[0];
for (const p of result.data.players) {
  console.log(p.name, p.team, p.opponent, p.projected_points);
}
```

```bash cURL theme={null}
curl -s https://api.firecrawl.dev/v2/scrape \
  -H "Authorization: Bearer $FIRECRAWL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "alexandria": {
    "provider": "startwho-com",
    "capability": "fantasy-sports-rankings/projections",
    "options": { "position": "QB", "scoring": "PPR", "limit": 3 }
  }
}'
```

The Python and JavaScript versions printed this on October 26, 2026:

```text theme={null}
Jared Goff Detroit Lions vs GB 19.9
Jordan Love Green Bay Packers @ DET 19.2
Dak Prescott Dallas Cowboys @ PHI 18.2
```

The raw response (trimmed to the first player and one prop) shows the fields your agent can reason over:

```json theme={null}
{
  "success": true,
  "data": {
    "alexandria": [
      {
        "provider": "startwho-com",
        "capability": "fantasy-sports-rankings/projections",
        "creditsCost": 5,
        "data": {
          "week_label": "Week 7",
          "scoring": "PPR",
          "count": 3,
          "players": [
            {
              "name": "Jared Goff",
              "team": "Detroit Lions",
              "position": "QB",
              "opponent": "vs GB",
              "game_kickoff_at": "2026-10-25T20:00:00.000Z",
              "locked": false,
              "projected_points": 19.9,
              "props": [
                {
                  "prop_type": "passing_yds",
                  "line": 286.4,
                  "projected_points": 11.4,
                  "source": "vegas"
                }
              ]
            }
          ]
        }
      }
    ]
  }
}
```

Raw HTTP responses wrap the SDK result in `data`. A provider error arrives inside a successful response, so check each result's `error` field before you use its `data`.

### List a provider's tools and prices

Find Tools lists every capability a provider offers with its credit cost, for free. This example lists the Sleeper tools.

```python Python theme={null}
import os
from firecrawl import Firecrawl

firecrawl = Firecrawl(api_key=os.environ.get("FIRECRAWL_API_KEY"))

catalogue = firecrawl.find_tools(providers=["sleeper-com"], limit=10)

for tool in catalogue.items:
    print(tool["capability"], tool["creditsCost"])
```

```javascript JavaScript theme={null}
import { Firecrawl } from "firecrawl";

const firecrawl = new Firecrawl({ apiKey: process.env.FIRECRAWL_API_KEY });

const catalogue = await firecrawl.findTools({ providers: ["sleeper-com"], limit: 10 });

for (const tool of catalogue.items) {
  console.log(tool.capability, tool.creditsCost);
}
```

```bash cURL theme={null}
curl -s https://api.firecrawl.dev/v2/scrape \
  -H "Authorization: Bearer $FIRECRAWL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "alexandria": {
    "provider": "firecrawl",
    "capability": "find-tools",
    "options": { "providers": ["sleeper-com"], "limit": 10 }
  }
}'
```

Output from October 26, 2026:

```text theme={null}
fantasy-football-leagues/league 5
fantasy-football-leagues/league_rosters 5
fantasy-football-leagues/league_users 5
fantasy-football-leagues/matchups 5
fantasy-football-leagues/nfl_schedule 5
fantasy-football-leagues/nfl_state 5
fantasy-football-leagues/players 5
fantasy-football-leagues/transactions 5
fantasy-football-leagues/trending_players 5
```

Pass a capability from that list plus `expand: ["options", "response"]` to read its inputs and response fields. Each item's `next` field holds that request ready to send.

## How do you combine sports providers in one agent?

A waiver-wire assistant takes the players most added across Sleeper leagues and ranks them by their CBS Sports rest-of-season projection, using two providers on one API key.

```python Python theme={null}
import os
from firecrawl import Firecrawl

firecrawl = Firecrawl(api_key=os.environ.get("FIRECRAWL_API_KEY"))


def run(provider, capability, options):
    result = firecrawl.scrape(
        alexandria={"provider": provider, "capability": capability, "options": options}
    ).alexandria[0]
    if result.error:
        raise RuntimeError(f"{provider}/{capability}: {result.error}")
    return result.data


trending = run(
    "sleeper-com",
    "fantasy-football-leagues/trending_players",
    {"type": "add", "limit": 10},
)

projected = {}
for position in sorted({p["position"] for p in trending["players"]}):
    cbs = run(
        "cbssports-com",
        "fantasy-sports-rankings/projections",
        {"position": position, "type": "ros", "scoring": "PPR"},
    )
    for row in cbs["players"]:
        projected[row["name"]] = row["fantasy_points"]

ranked = sorted(trending["players"], key=lambda p: projected.get(p["name"], 0), reverse=True)

for player in ranked:
    points = projected.get(player["name"], "-")
    print(f'{player["name"]:<20} {player["position"]:<3} {player["count"]:>7} adds  ROS pts {points}')
```

```javascript JavaScript theme={null}
import { Firecrawl } from "firecrawl";

const firecrawl = new Firecrawl({ apiKey: process.env.FIRECRAWL_API_KEY });

async function run(provider, capability, options) {
  const doc = await firecrawl.scrape({ alexandria: { provider, capability, options } });
  const result = doc.alexandria[0];
  if (result.error) throw new Error(`${provider}/${capability}: ${JSON.stringify(result.error)}`);
  return result.data;
}

const trending = await run("sleeper-com", "fantasy-football-leagues/trending_players", {
  type: "add",
  limit: 10,
});

const projected = new Map();
for (const position of new Set(trending.players.map((p) => p.position))) {
  const cbs = await run("cbssports-com", "fantasy-sports-rankings/projections", {
    position,
    type: "ros",
    scoring: "PPR",
  });
  for (const row of cbs.players) projected.set(row.name, row.fantasy_points);
}

const ranked = [...trending.players].sort(
  (a, b) => (projected.get(b.name) ?? 0) - (projected.get(a.name) ?? 0),
);

for (const p of ranked) {
  console.log(p.name, p.position, `${p.count} adds`, `ROS pts ${projected.get(p.name) ?? "-"}`);
}
```

The Python version printed this on October 26, 2026:

```text theme={null}
Caleb Douglas        WR   286544 adds  ROS pts 111.9
Omar Cooper Jr.      WR   138072 adds  ROS pts 103.9
Tyler Higbee         TE   140067 adds  ROS pts 76.8
Emanuel Wilson       RB   160731 adds  ROS pts 73.8
Makai Lemon          WR   108340 adds  ROS pts 68.8
Justice Hill         RB   117468 adds  ROS pts 60.6
Darius Cooper        WR   644343 adds  ROS pts 50.3
Kaelon Black         RB   261842 adds  ROS pts 41.1
Seth McGowan         RB   371792 adds  ROS pts 6.9
KC Concepcion Jr.    WR   237150 adds  ROS pts -
```

The most-added player that day ranked seventh by rest-of-season projection, so the ranking changes which pickup to make. CBS Sports projects the top 100 players per position, and a dash means the player wasn't in that list. To check a pickup before a start, read the Sleeper player's `flags`, which mark players who are locked, out, on bye, or injured.

## How do you use sports data from the CLI or an MCP client?

The [Firecrawl CLI](https://docs.firecrawl.dev/sdks/cli.md) and the [MCP server](https://docs.firecrawl.dev/mcp-server.md) expose the same three steps, so coding agents and chat assistants can run them without code.

**Firecrawl CLI**

```bash theme={null}
# Find tools.
firecrawl search "weekly fantasy football projections in PPR" --sources alexandria --limit 5

# List a provider's tools and prices.
firecrawl find-tools --options '{"providers":["sleeper-com"],"level":"tools"}' --include-costs

# Run a tool.
firecrawl scrape --alexandria startwho-com/fantasy-sports-rankings/projections --options '{"position":"QB","scoring":"PPR","limit":3}'
```

Install with `npm install -g firecrawl-cli` and sign in with `firecrawl login`.

**MCP**

Ask your agent: "Use Firecrawl to find this week's PPR projections for my running backs, check the NFL.com injury report for each one, and tell me who to start."

The agent uses `firecrawl_search` to discover tools, `firecrawl_find_tools` to inspect them, and `firecrawl_scrape` to run them.

## What does sports data cost?

Discovery and Find Tools are free. Running a tool bills the credits listed in its `creditsCost` field, which Find Tools shows before you call it, and each result repeats `creditsCost` in the response. See [pricing and access](https://docs.firecrawl.dev/features/alexandria.md#pricing-and-access) for provider terms.

## How accurate is Firecrawl Alexandria on fantasy questions?

Firecrawl Alexandria was the most accurate of three setups on [Firecrawl's fantasy data benchmark](https://www.firecrawl.dev/benchmarks/fantasy), 8.8 points ahead of native web search. The benchmark asks 272 real fantasy questions from the 2026 NFL season and grades answers against nflverse stats and saved projections from 7 sites. Firecrawl Alexandria answered above 80% of them fully right, and the gap was widest on weekly projections. The [FantasyBench write-up](https://www.firecrawl.dev/blog/best-fantasy-data-tools-ai-agents) breaks the results down by question type.

## FAQs

> **Is there an API for fantasy football projections?**
>
> Yes. Firecrawl Alexandria returns weekly fantasy football projections and rankings from StartWho, CBS Sports, FFToday, FantasyData, Draft Sharks, and Fantasy Football Calculator through one Firecrawl API key. Scoring is standard, half-PPR, or PPR, depending on the source.

> **Can my agent read a Sleeper league?**
>
> Yes. The Sleeper capabilities read public league settings, rosters with starters, weekly matchups, transactions, and trending adds and drops. Pass the league ID to the league tools.

> **Does Firecrawl have the official NFL injury report?**
>
> Yes. The NFL.com injury report capability returns each listed player's practice participation by day and game status designation (OUT, DOUBTFUL, QUESTIONABLE), league-wide or for one club.

> **Which sports does Firecrawl Alexandria cover?**
>
> Fantasy tools focus on the NFL, with Yahoo and CBS Sports adding fantasy basketball. ESPN adds scores, rosters, and standings for the NBA, WNBA, MLB, NHL, college sports, and soccer, plus injury reports for the NFL, NBA, WNBA, MLB, NHL, and college football. Baseball Savant adds MLB Statcast data, and World Table Tennis adds table tennis results and rankings.

> **Do I need an account with each sports provider?**
>
> You don't need separate provider accounts or API keys. Every call runs on your Firecrawl API key and credits. Some providers require an org admin to accept their data terms first, and the response includes a link to do that.

> **Can I use sports data in ChatGPT or Claude?**
>
> Yes. Firecrawl Alexandria is live in Claude, ChatGPT, Codex, and other agent tools through the Firecrawl plugin and MCP server. Ask for the data in plain words and the agent finds and runs the right tool.

## Related

* [Firecrawl Alexandria](https://docs.firecrawl.dev/features/alexandria.md) - Discovery, Find Tools, and execution in full
* [Investment & Finance](https://docs.firecrawl.dev/use-cases/investment-finance.md) - Track companies and markets
* [Fantasy sports data is live in Firecrawl Alexandria](https://www.firecrawl.dev/blog/alexandria-fantasy-football) - The launch post and the free lineup tool


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.