Build With Tango: Reconstruct a program from its budget
Second in the budget endpoint series. Once you've found an account worth your attention (part one), the next question is who already holds the work, and the budget endpoint answers it in both directions.
The problem
You can find the prime on any single contract in USASpending. What's harder is seeing a whole program at once: which funding offices control the money, which primes share it, and how the pieces add up. That's normally a pivot-table exercise across hundreds of award records.
The query: account → recipients
Take NASA's Deep Space Exploration Systems account (080-0124), which obligated $7.83B in FY2024, 88% of it through contracts. Resolve the account id, then pull its recipients:
from tango import TangoClient
client = TangoClient()
acct = client.list_budget_accounts(
federal_account_symbol="080-0124", fiscal_year=2024, shape="id", limit=1
).results[0]
for r in client.get_budget_account_recipients(acct["id"], limit=6).results:
office = (r.get("funding_office") or {}).get("office_name")
name = (r.get("recipient") or {}).get("legal_business_name")
print(f"{name:38} <- {office:32} ${r.get('contract_obligated'):,.0f}")
What comes back
The Artemis program, decomposed from a single budget account:
| Recipient | Funding office | FY2024 contract obligated |
|---|---|---|
| The Boeing Company | NASA Marshall | $1.12B |
| SpaceX | NASA Marshall | $623M |
| Blue Origin | NASA Marshall | $483M |
| Lockheed Martin | NASA Johnson | $402M |
| Aerojet Rocketdyne | NASA Marshall | $367M |
Marshall runs the heavy-lift and propulsion money (SLS core stage, the two Human Landing System awards, engines); Johnson runs the Orion crew capsule through Lockheed. That's the shape of the program (funding center, prime, dollars) without opening a single award record.
The reverse: vendor → accounts
Now run it backwards. Given a vendor's UEI, budget-flows answers which federal accounts fund this company across years:
flows = client.get_entity_budget_flows("SML4NN2CT556") # The Boeing Company
for row in flows["results"][:6]:
acct = row.get("account", {})
print(row["fiscal_year"], acct.get("account_title"),
f"${row['contract_obligated']:,.0f}")
For Boeing's exploration work, the answer is the same account every year (080-0124), running ~$1.0–1.35B annually since FY2020. When one account funds a vendor that consistently, you've found a structural dependency: a recompete or a budget cut there lands directly on that company.
What you'd build with it
- An incumbency map for any account you track. Wire
recipients/into your CRM so each account shows who currently holds the work and which office controls the money. - An exposure check on a competitor or teammate.
budget-flowsturns "where does this company's federal money come from?" into one call, useful for diligence, teaming decisions, or sizing up an incumbent before a recompete. - A program brief on demand. Combine the two: an account's recipients plus each prime's other accounts gives you a one-page picture of a program and its players.
Field definitions are in the Budget API reference. The free tier is enough to run both directions on whichever account matters most to you, and the same endpoint is callable from the Tango MCP server at govcon.dev/mcp.
Ready to get started with Tango?
If you're working with federal procurement data, Tango provides a unified API that combines federal procurement data sets and improves on them with a developer-friendly approach. Skip the complexity of scraping and joining multiple government APIs yourself.