Finding a free NFL depth chart API is honestly a nightmare. You’d think with the explosion of fantasy football and sports betting, this data would be everywhere. It isn't. Most of the "big boys" like Sportradar or Genius Sports will charge you five figures a year for a commercial license. If you're just a dev building a side project or a fantasy nut trying to automate your waiver wire, that's a non-starter.
The truth is that depth charts are surprisingly fluid. They aren't static lists. They change after Tuesday practices, Friday injury reports, and late-breaking pre-game scratches. Because they require manual curation by data teams, companies don't like giving that effort away for nothing.
But don't give up yet. You've got options if you're willing to be a little scrappy.
The "hidden" ESPN API trick
Most people don't realize that the major sports networks use their own internal APIs to power their websites. These aren't "official" developer products, but they're often public-facing and unauthenticated.
You can actually hit ESPN’s internal endpoints to grab depth chart data. It’s basically a JSON goldmine. If you look at their site’s network traffic, you’ll see calls to site.web.api.espn.com. It’s fast. It’s free. It’s what powers their own app.
The catch? There’s no documentation. You have to reverse-engineer the URL parameters. Usually, you’ll need a team ID or an event ID to get the specific roster order. Also, since it’s unofficial, they could change the schema tomorrow and break your code. It’s the "Wild West" of sports data, but for a free project, it’s arguably the most reliable source of truth.
Sleeper: The developer's best friend
If you want something official that won't cost you a dime, look at Sleeper.
Sleeper has become a massive player in the fantasy space, and their API is refreshingly open. They offer a players endpoint that returns a massive JSON object of every active NFL player.
While it doesn't always give you a "1st string, 2nd string" numbered list in a single dedicated depth chart endpoint, it provides enough metadata to build one. You can see who is starting in their system, their projected status, and their team role.
- Pros: Totally free, no API key required for most calls, very high rate limits.
- Cons: You might have to do some data munging to get a traditional "depth chart" view.
Why RapidAPI is a bit of a trap
You've probably seen a dozen "NFL APIs" on RapidAPI promising everything for $0/month. Be careful.
Most of those "free" tiers allow something like 10 or 20 requests per month. That's basically enough for two minutes of testing before you're hit with a "429 Too Many Requests" error. These are usually wrappers around other data sources. If you're building a real app, 20 requests won't even get you through a single Sunday morning of updates.
✨ Don't miss: Cheerleaders Philadelphia Philadelphia PA: What It Really Takes to Make the Squad
However, some providers like API-SPORTS do offer slightly more generous daily limits (often around 100 calls). It’s enough for a hobbyist, but you’ll need to cache your data aggressively. Don't hit the API every time a user refreshes your page. Store the result in a local database and only refresh it once every few hours.
The manual (but smart) scraping route
Sometimes an API isn't the answer. If you just need the data once a week for a spreadsheet, scraping is your best bet.
Websites like Ourlads have been the industry standard for depth charts for decades. They are often more accurate than the "official" team sites because they account for how teams actually use players (like sub-packages) rather than just the PR-friendly list the team releases.
You can use a simple Python script with BeautifulSoup or Pandas to read their tables.
import pandas as pd
url = "https://www.ourlads.com/nfldepthcharts/depthchart/KC"
tables = pd.read_html(url)
That’s it. One line of code and you have the Kansas City Chiefs depth chart in a dataframe. It’s not a "live" API, but for many use cases, it’s actually better data.
Important things to watch out for
Data latency is the silent killer. A "free" API might only update once every 24 hours. In the NFL, that's an eternity. If a starting RB goes down in a Wednesday practice, a 24-hour delay means your app is showing "fake news" for a full day.
Also, watch the licensing. If you ever plan to put ads on your site or charge for your app, using "hidden" APIs or scraping could get you a "Cease and Desist" faster than a Tyreek Hill sprint. Most of these free methods are for personal use only.
Actionable Next Steps
- Check Sleeper first: Visit
https://api.sleeper.app/v1/players/nflto see if their player data satisfies your needs. It’s the easiest official path. - Inspect ESPN: Open your browser's developer tools on an ESPN team page and look for "api" in the network tab to find the raw JSON endpoints.
- Build a Cache: Regardless of the source, set up a Redis or SQL cache. NFL depth charts don't change every second—don't waste your limited free requests.
- Verify via Ourlads: Use a scraper on Ourlads if you need the "scout's eye" view of who is actually starting versus who the team claims is starting.