Impact judges reward teams that measure themselves. One verifiable data source is The Blue Alliance (TBA), which exposes every team's events, awards, and history via a free REST API. This mini-project builds a script that fetches your team's award and event record automatically — useful for the 'goals and progress' and 'role models' summaries, and for tracking the teams you mentor.
Step 1 — Get a read key. Log in at thebluealliance.com, open your Account dashboard, and under Read API Keys generate a key. Every request must send it in the header X-TBA-Auth-Key.
Step 2 — Know the endpoint shape. The API v3 base URL is https://www.thebluealliance.com/api/v3. Team keys use the format frcNNNN (e.g. frc5985). Three endpoints you will use constantly:
/team/{team_key}/awards— every award the team has ever won/team/{team_key}/events/{year}— events for a given season/team/{team_key}/years_participated— list of seasons the team competed
Step 3 — Write the script.
import requests
TBA_KEY = "YOUR_READ_KEY" # from Account > Read API Keys
TEAM = "frc5985" # your team in frcNNNN form
BASE = "https://www.thebluealliance.com/api/v3"
HEADERS = {"X-TBA-Auth-Key": TBA_KEY}
def get(path):
r = requests.get(BASE + path, headers=HEADERS, timeout=15)
r.raise_for_status()
return r.json()
awards = get(f"/team/{TEAM}/awards")
for a in sorted(awards, key=lambda x: x["year"]):
print(a["year"], a["name"], "@", a["event_key"])
# Count Impact / Chairman's banners (award renamed in 2022)
impact = [a for a in awards
if "impact" in a["name"].lower()
or "chairman" in a["name"].lower()]
print(f"\nImpact/Chairman's awards: {len(impact)}")
raise_for_status() will surface a 401 immediately if your key is wrong — debug that before anything else.
Step 4 — Extend it for mentored teams. Keep a list of the teams you started or mentor and pull their first competition year to prove you launched them:
mentored = ["frc9999", "frc8888"]
for t in mentored:
yrs = get(f"/team/{t}/years_participated")
print(t, "rookie year:", min(yrs))
Now a claim like 'we started this team in 2023' is backed by years_participated data, not a guess.
Why this matters. Judges can verify everything on TBA. If your submission says you won three District Impact Awards, a script that prints them removes any doubt and any typo. It also forces honesty: the API is the ground truth. The official Definitions even warn that teams 'do not embellish or exaggerate' and should 'estimate on the low end' — anchoring numeric claims to TBA keeps you defensible in the interview.
Stretch goal: schedule the script (cron or GitHub Actions) to dump a CSV monthly into your Impact Tracker so your award history is always current heading into kickoff in January.
the part worth keeping
Key takeaways
- TBA API v3 is free, verifiable ground truth: base URL https://www.thebluealliance.com/api/v3, key format frcNNNN, auth via the X-TBA-Auth-Key header.
- The /team/{key}/awards and /team/{key}/years_participated endpoints let you prove award counts and the rookie years of teams you started or mentor.
- Anchor every numeric claim in your submission to a verifiable source so it survives judge scrutiny in the interview.
The Impact AwardWorked Examples & Mini-Projectslesson 2 of 5
Keep going
Take the quiz+10 XP with an accountwhere this came from
Sources and corrections
This lesson is AI-assisted: drafted from primary sources, then reviewed and edited by hand. Errors still get through. When one is reported we fix it and write down what changed, in public, in the corrections log.
sources and further reading
- thebluealliance.comThe Blue Alliance API v3 docs
- github.comtbapy — Python wrapper for the TBA API
- thebluealliance.comThe Blue Alliance developer APIs
clipped to this lesson
Articles that go further on this
The lesson gets you through the topic. These go wider on it, and they read in one sitting.
- 18 min readThe Blue Alliance (TBA): How to Use FRC's Match & Team DatabaseThe 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./blogread it
- 13 min readFRC Awards Explained: Every FIRST Robotics Competition Award (Impact, EI, Autonomous & More)A complete guide to every FIRST Robotics Competition award — Impact, Engineering Inspiration, Autonomous, Innovation in Control, Dean's List and more — with judged criteria and how to win./blogread it
- 20 min readBuilding an FRC Scouting App: Data Model, TBA/Statbotics APIs, and PicklistsBuild an FRC scouting app: match and pit scouting, a simple data model, pulling schedules and EPA from the TBA and Statbotics APIs, and building a picklist./blogread it
answer sheet
Lesson quiz
All 3 right completes the lesson. Miss one and only that question comes back, anything you already answered correctly stays banked.
0 of 3 answered
01What header and base URL must every request to The Blue Alliance Read API include?
02Which endpoint does the lesson use to prove the rookie year of a team you started or mentor?
03Why does anchoring numeric claims to The Blue Alliance matters for Impact judging?
Answer every question to submit.
All 30 lessons in The Impact Awardopenclose
01 / prerequisites
02 / understanding-the-impact-award
03 / building-the-written-submission
04 / presentation-interview-and-video
05 / building-a-program-worth-recognizing
06 / worked-examples-and-mini-projects
- Not read yet:Build a Living Impact Tracker (Spreadsheet Mini-Project)
- Not read yet:Automate Outreach Data with The Blue Alliance API
- Not read yet:Worked Example: Rewriting a 500-Character Executive Summary
- Not read yet:Mini-Project: An Outreach Event Playbook You Can Reuse
- Not read yet:Mini-Project: Assemble a Bulletproof Documentation Form
07 / common-mistakes-and-troubleshooting
08 / advanced-techniques-and-case-studies