OASIS, Alliant, T4NG: How to Research Government Vehicles with an API
If you work in federal procurement, you've heard of OASIS, Alliant, and T4NG. These are some of the largest contract vehicles in government, collectively worth hundreds of billions of dollars. But if you've ever tried to research them programmatically, you know how frustrating it can be. The data is spread across multiple systems, and most APIs only let you search for individual contracts.
The problem is that searching for contracts gives you the trees, not the forest. A single OASIS task order tells you that Company X won a $2M deal. But the interesting questions are bigger: Who are all the awardees on OASIS+ Small Business? How much has been obligated across the vehicle? Which companies are winning the most task orders?
Tango's /api/vehicles/ endpoint is designed for exactly these questions. In a previous post, we explained the conceptual relationship between contracts, IDVs, and vehicles. In this post, we'll get practical: here's how to actually use the API to research vehicles.
Finding a Vehicle
The vehicles endpoint supports full-text search. If you know the name of a vehicle, start there:
curl -G 'https://tango.makegov.com/api/vehicles/' \
-H "X-API-KEY: ${TANGO_API_KEY}" \
--data-urlencode "search=OASIS"
This returns all vehicles matching "OASIS," including the original OASIS SB and Unrestricted pools and the newer OASIS+ vehicles. Each result includes the solicitation identifier, agency, vehicle type, and aggregate statistics like the number of awardees and total obligations.
You can search for any vehicle by name. For example, to find Alliant vehicles:
curl -G 'https://tango.makegov.com/api/vehicles/' \
-H "X-API-KEY: ${TANGO_API_KEY}" \
--data-urlencode "search=Alliant"
This returns Alliant 2 Unrestricted, Alliant 2 Small Business, and Alliant 3 — each with awardee counts and obligation totals so you can immediately see the scale of each vehicle.
Who's on the Vehicle?
Once you have a vehicle UUID, the /api/vehicles/{uuid}/awardees/ endpoint shows you every IDV holder on that vehicle. Each awardee includes their IDV details, obligation totals, and task order count:
curl -G 'https://tango.makegov.com/api/vehicles/{uuid}/awardees/' \
-H "X-API-KEY: ${TANGO_API_KEY}" \
--data-urlencode "shape=piid,recipient(display_name,uei),idv_obligations,order_count"
This gives you a clean list: company name, UEI, how much they've been obligated, and how many task orders they've received.
You can also search within the awardees. If you want to know whether a specific company is on the vehicle, pass a search parameter on the detail endpoint:
curl -G 'https://tango.makegov.com/api/vehicles/{uuid}/' \
-H "X-API-KEY: ${TANGO_API_KEY}" \
--data-urlencode "search=Booz Allen" \
--data-urlencode "shape=solicitation_title,awardees(piid,recipient(display_name,uei))"
If Booz Allen holds an IDV on that vehicle, it'll show up in the awardees array. If not, you'll get an empty list — a quick way to check eligibility without scrolling through hundreds of awardees.
What Work Is Being Done?
The /api/vehicles/{uuid}/orders/ endpoint returns every task order (contract) issued under the vehicle. This endpoint works identically to /api/contracts/; it supports the same filters, shaping, and ordering but is scoped to a single vehicle:
curl -G 'https://tango.makegov.com/api/vehicles/{uuid}/orders/' \
-H "X-API-KEY: ${TANGO_API_KEY}" \
--data-urlencode "shape=piid,description,recipient(display_name),award_date,obligated" \
--data-urlencode "ordering=-award_date" \
--data-urlencode "page_size=10"
This returns the most recent task orders with their descriptions, recipients, and dollar values. You can further filter by date range, NAICS, PSC, awarding agency, or any other contract filter.
Want to see how much a specific company has been awarded under a vehicle? Combine the orders endpoint with a UEI filter:
curl -G 'https://tango.makegov.com/api/vehicles/{uuid}/orders/' \
-H "X-API-KEY: ${TANGO_API_KEY}" \
--data-urlencode "uei=JYBLAXNKT647" \
--data-urlencode "shape=piid,description,award_date,obligated,total_contract_value"
Putting It Together: A Real Research Workflow
Here's a concrete example. Say you're a small business trying to decide whether to pursue a spot on a recompeted vehicle. You want to understand the competitive landscape: how many awardees, how much work, and who's winning.
Step 1: Find the vehicle.
curl -G 'https://tango.makegov.com/api/vehicles/' \
-H "X-API-KEY: ${TANGO_API_KEY}" \
--data-urlencode "search=Alliant"
Step 2: Look at the awardee landscape. How many companies are on it? What's the distribution of obligations?
curl -G 'https://tango.makegov.com/api/vehicles/{uuid}/awardees/' \
-H "X-API-KEY: ${TANGO_API_KEY}" \
--data-urlencode "shape=piid,recipient(display_name,uei),idv_obligations,order_count"
Step 3: Look at recent task orders. What kind of work is being awarded? Is it the kind of work you do?
curl -G 'https://tango.makegov.com/api/vehicles/{uuid}/orders/' \
-H "X-API-KEY: ${TANGO_API_KEY}" \
--data-urlencode "shape=piid,description,recipient(display_name),awarding_office(office_name),award_date,obligated,naics(code,description)" \
--data-urlencode "ordering=-award_date" \
--data-urlencode "page_size=25"
Step 4: Spot the recompete. Check whether there's a solicitation on SAM for the follow-on vehicle:
curl -G 'https://tango.makegov.com/api/opportunities/' \
-H "X-API-KEY: ${TANGO_API_KEY}" \
--data-urlencode "search=Alliant 3" \
--data-urlencode "shape=title,response_deadline,first_notice_date,agency(name)"
In four API calls, you've gone from "I've heard of Alliant" to "here's the competitive landscape, here's the recent work, and here's whether the next solicitation is live." That's the kind of research that used to take days of manual digging across multiple government websites.
Response Shaping Makes It Practical
You'll notice that every example above uses the shape parameter. This isn't optional decoration. Vehicle responses can be large; a single vehicle might have hundreds of awardees, each with nested recipient details, office information, and transaction histories. Response shaping lets you request only the fields you need, which keeps payloads small and responses fast.
For more on how response shaping works, see our response shaping guide.
Try It Yourself
Want to run these examples interactively? We've published a companion notebook on Google Colab that walks through every query in this post — including a bonus side-by-side vehicle comparison. Just set your API key and run the cells.
Get Started
The vehicles endpoint is available on all Tango plans, including our free tier. If you're researching government vehicles, building competitive intelligence tools, or helping clients decide where to compete, give it a try.
Sign up at tango.makegov.com and start with a search for the vehicle you care about most.
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, improves on them, with a developer-friendly approach. Skip the complexity of scraping and joining multiple government APIs yourself.