Skip to content
FRC Article 18 min read

The Blue Alliance (TBA): How to Use FRC's Match & Team Database

The Blue Alliance (TBA) is FRC's free match and team database. Navigate team, event, and match pages, set up myTBA notifications, and use its read API.

to read
18 min

to read

words
2,627

words

sections
9

sections

If you have spent more than a weekend around FRC, someone has already told you to "check TBA." The Blue Alliance (thebluealliance.com, usually shortened to TBA) is the free, community-run database that nearly every team leans on to look up scores, scout opponents, plan for events, and pull match data into their own tools. It is not run by FIRST, it does not charge anything, and it has quietly become the shared memory of the entire competition.

This guide walks through what TBA is, how to actually navigate its team, event, and match pages, how to set up push notifications for your team's matches with myTBA, what the Insights pages are good for, and how to use the read API to feed a scouting app or spreadsheet. We will also line TBA up against Statbotics and the official FIRST site so you know which one to reach for, and cover the etiquette that keeps the API fast and free for everyone.

What The Blue Alliance actually is

The Blue Alliance is a free, open-source, volunteer-built website that archives and displays FIRST Robotics Competition data: teams, events, match results, rankings, awards, alliance selections, and match videos. It has been around since the mid-2000s and is maintained by a group of unpaid volunteers, not by FIRST itself. There is a website plus official iOS and Android apps, and everything on it is free to browse without an account.

The important mental model: TBA is not the source of match results. Scores are generated at events by the Field Management System (FMS) and flow to FIRST's official scoring platform. TBA ingests that data, largely through FIRST's official FRC Events API, plus field systems like Team 254's Cheesy Arena that can post results directly, and TBA's own Event Wizard for importing reports. TBA then cleans it up, links it together, layers on computed stats and match predictions, and presents it in a way that is far easier to browse than the raw official feed. So when people argue about whether a score is "official," the answer is that the official record lives with FIRST; TBA is the mirror almost everyone actually reads.

Quick vocabulary: a team key looks like frc254, an event key looks like 2026cala (year + event code), and a match key looks like 2026cala_qm42 (event key + match). You will see these all over the URLs and the API, so it is worth recognizing them.

Why nearly every team uses TBA

TBA solves the same problems for a rookie and for a world-championship contender. Before an event, you can see who else is attending, pull up each team's history, and get a feel for the field. During an event, you get live-ish scores, rankings, and the match schedule in one place. After an event, everything is archived permanently, so you can study any team going back years.

The reason it became a near-universal standard is network effects. Because everyone's data is in one consistent place with stable keys, a whole ecosystem of scouting apps, spreadsheets, Chrome extensions, and analytics sites is built on top of it. When your scouting lead says "I'll pull the schedule from the API," they mean TBA's API. That shared foundation is exactly why a strong scouting operation, which we cover in the FRC scouting guide, usually starts by wiring into TBA rather than re-typing data by hand.

Three page types cover ninety percent of what you will do on TBA. Learn their layout once and the rest of the site is intuitive.

Team pages

A team page (for example, the URL ends in /team/254) is a team's full record. At the top you get the team's name, location, rookie year, and website. Below that is a year selector: switch it to see that team's events, match record, awards, and media for any past season. Each event the team attended is listed with their qualification ranking, their win-loss-tie record, and any awards. This is your first stop when you want to understand who a team is and how they have performed historically, not just this weekend.

Event pages

An event page (the URL ends in something like /event/2026cala) is the hub for a single competition. The tabs you will use most:

  • Results / Matches — every qualification and playoff match with red/blue alliances and final scores. Completed matches link to their score breakdown and, when available, a video.
  • Rankings — the live standings, including ranking points and the tiebreaker columns for the current game.
  • Teams — the full team list for that event, each linking to its team page.
  • Alliances — once playoffs begin, the selected alliances and their bracket.
  • Insights / Awards — event-specific stats and the award winners.

Match pages

Click any match and you get the detail view: the two alliances, the final score, and a score breakdown that itemizes how each alliance earned its points under this year's game rules (auto, teleop, endgame, penalties, and so on). If a volunteer has uploaded it, the match video is embedded right there. Match pages are where you confirm why a score happened, which matters when you are scouting and a raw number does not tell the whole story. If the ranking-point and tiebreaker terminology on these pages is new to you, the mechanics are explained in how FRC competitions work.

myTBA: favorites and push notifications

Browsing is free and account-free, but making an account unlocks myTBA, which is where TBA turns from a reference site into something that actively pings you. You sign in with a Google account, and your settings then sync across the website and both mobile apps.

Favorites vs subscriptions

TBA splits personalization into two distinct ideas, and it is worth getting them straight:

  • Favorites are for quick access and personalized content. Favoriting your team (and rivals you follow) pins them so your dashboard and the apps surface their events and matches first. Favorites do not, by themselves, send you anything.
  • Subscriptions are what generate push notifications. You choose which notification types you want for a given team or event, and TBA pushes them to your devices.

The practical move: favorite the handful of teams you care about, then subscribe to the specific alerts you actually want so your phone is not buzzing for everything.

Setting up match notifications for your team

For most students, the single most useful setup is getting notified about your own team's matches during an event. On the app or website, go to your team, add it as a subscription, and enable the notification types you want. Typical options include upcoming-match alerts (so you know when you are on deck), match-score results, and event-level updates like the schedule being posted or alliance selection results.

Tip for drive teams and pit crews: turn on the "upcoming match" notification and treat it as a backup to the arena queue, not your primary cue. It is a safety net for "wait, are we up soon?" while you are heads-down fixing the robot, not a replacement for watching the field's queueing.

Insights and event breakdowns

Beyond raw results, TBA computes Insights that summarize a season or an event. The site publishes an annual Insights page for each year (for example, /insights/2026) that aggregates high-level trends across the whole season: things like high scores, record-setting matches, and how the year's specific scoring elements played out across all events. It is a fun and genuinely useful way to understand what a "good" score looks like in the current game before you set your own targets.

At the event level, TBA also surfaces per-event breakdowns and computed metrics. The most referenced of these are the component OPR-family stats (OPR, DPR, and CCWM), which estimate each team's contribution from alliance scores. They are powerful but easy to misread, so if you plan to lean on them, read OPR, DPR, and CCWM explained first so you know what those numbers do and do not tell you.

The read API: feeding a scouting app or spreadsheet

The feature that makes TBA a platform rather than just a website is its read API (v3). It exposes almost all of TBA's data as JSON, so your scouting app, a Google Sheet, or a quick script can pull teams, events, matches, rankings, and stats automatically instead of anyone copying them by hand.

Getting a read API key

Authentication is straightforward and free. Log into your TBA account, open your Account Dashboard, scroll to the Read API Keys section, add a short description (like "team scouting sheet"), and click add. That gives you a key string. This is the same read API the official apps and most community tools use; the key just identifies your app so TBA can manage traffic.

Making an authenticated request

Every request goes to the base URL https://www.thebluealliance.com/api/v3 and must include your key in the X-TBA-Auth-Key header. Here is a minimal example that fetches the events a given team is registered for in a season:

curl -H "X-TBA-Auth-Key: YOUR_READ_API_KEY" \
  "https://www.thebluealliance.com/api/v3/team/frc254/events/2026"

That returns a JSON array of event objects. The same pattern (base URL, path, your key in the header) works for the rest of the API: there are endpoints for a single team, a team's matches at an event, an event's full match list, rankings, and more. The official API docs list the exact paths and the shape of every response, so build against those rather than guessing at URLs.

Keep your key reasonably private. It is a read-only key, so the blast radius is small, but do not hard-code it into a public GitHub repo where it becomes someone else's free traffic under your name. An environment variable or a config file you keep out of version control is plenty.

Pulling data into a spreadsheet

You do not need to be a strong programmer to benefit. A common setup is a Google Sheet that uses Apps Script to call a TBA endpoint and drop the match schedule or team list into a tab, so scouts only fill in the qualitative columns. If you would rather start from a proven layout instead of the API, our scouting sheet template gives you a structure you can later wire up to TBA once your team is comfortable.

TBA vs Statbotics vs the official FIRST site

These three sources overlap, but each is best at something different. TBA is the browsable archive and the API everyone builds on. Statbotics is an analytics site that pulls match data from TBA and computes its EPA rating system plus match predictions. The official FIRST site is the authoritative source of record. Here is how they compare.

The Blue AllianceStatboticsOfficial FIRST (FRC Events)
Run byVolunteers (independent, open source)Independent developer/communityFIRST (the organization itself)
Best forBrowsing teams, events, matches; the API everyone builds onPredictive analytics and the EPA rating modelThe official, authoritative results and registration
Match dataYes, archived with videos and breakdownsDerived from TBA dataYes, the original source of record
Ratings/analyticsOPR/DPR/CCWM and InsightsEPA, win predictions, event simsRankings and official standings only
Free APIYes (read API v3, X-TBA-Auth-Key)Yes (Python library + REST)Yes (official FRC Events API, separate key)
Reach for it whenYou want to look something up or feed a toolYou want to compare teams or predict matchesYou need the definitive official record

In day-to-day practice: browse and integrate with TBA, compare and predict with Statbotics, and treat FIRST's own results as the tiebreaker if a number is ever disputed. A fuller tour of the analytics landscape lives in the scouting and strategy guides.

Etiquette, caching, and rate limits

TBA is free and volunteer-funded, so the community norm is: do not hammer it. The single most important habit is to respect TBA's HTTP caching, which the API is explicitly designed around.

Every API response comes back with Last-Modified and ETag headers plus a Cache-Control value that includes a max-age. Two things follow from that:

  • Cache locally for at least max-age seconds. If you already fetched an event's match list two minutes ago, do not fetch it again; reuse what you have. Match data does not change second-to-second.
  • Use conditional requests. Send the previous response's Last-Modified back as If-Modified-Since (and/or the ETag as If-None-Match). If nothing changed, TBA returns 304 Not Modified with an empty body, which is fast and cheap for both sides.

Following those two rules is the difference between a well-behaved scouting app and one that gets throttled. Practically: poll on a sane interval (something like every 30-60 seconds during a live event is plenty, not a tight loop), request only the endpoints you actually need, and prefer the specific endpoint over pulling everything and filtering client-side.

A tight while(true) loop with no caching is the classic rookie mistake. It makes your app slow, wastes a shared free resource, and is exactly the pattern that leads to your key getting rate-limited. Cache first, poll gently.

Frequently asked questions

Is The Blue Alliance official or run by FIRST?

No. TBA is an independent, volunteer-run, open-source project. It ingests data from FIRST's official systems (largely the FRC Events API) and other field systems, but it is not operated by FIRST. For the authoritative record, FIRST's own results are the source of truth.

Is The Blue Alliance free to use?

Yes, completely. Browsing the website and apps is free and requires no account, and the read API is free for the community. You only need a free account (and a free API key) if you want myTBA notifications or programmatic access.

How do I get push notifications for my team's matches?

Sign into myTBA with a Google account, add your team as a subscription (not just a favorite), and enable the notification types you want, such as upcoming-match and match-result alerts. Your subscriptions sync across the website and the iOS and Android apps.

What is the TBA API key and where do I get it?

It is a free read key that authenticates your requests. Log into your TBA account, open your Account Dashboard, find the Read API Keys section, add a description, and generate one. You then send it in the X-TBA-Auth-Key header on every request to https://www.thebluealliance.com/api/v3.

What is the difference between TBA and Statbotics?

TBA is the data archive and the API most tools are built on; it shows results, videos, and OPR-style stats. Statbotics is an analytics site that pulls match data from TBA and computes its EPA ratings and match predictions. Most teams use both together.

Are OPR and the other TBA stats reliable for scouting?

They are a useful starting signal, not a verdict. OPR, DPR, and CCWM are estimates derived from alliance scores and can be noisy, especially early in an event, so pair them with your own match observations rather than treating them as ground truth.

The fastest way to get comfortable with TBA is to open your own team's page, favorite it, subscribe to match notifications, and then click through an event you competed at to see how the results, rankings, and score breakdowns fit together. Once that clicks, generating a read API key and pulling a match schedule into a spreadsheet is a small next step, and from there most of the scouting tooling the community uses will start to make sense.

Spot an error or something out of date?Create a free account to suggest an edit

Keep reading

More from the pit

Start learning FRC — free

Structured lessons and quizzes across every department. Create a free account to save your progress, track your team, and earn a certificate.

394lessons
11departments
100%free