Search contract vehicles
Search federal contract vehicles: the IDIQs, GWACs, FSS schedules, BPAs, and BOAs that task orders are placed against. Sourced from FPDS via USAspending.
Most federal services work is not bought as a standalone contract. It is a task order placed against a vehicle the winner already holds, so the actionable question is often not "who won this" but "what would I have needed to hold to bid at all." /contracts/* carries the orders; this endpoint carries the vehicles they hang off.
One row per vehicle
A vehicle's base award and each of its modifications are separate rows in FPDS. This endpoint collapses them: you get one row per vehicle, carrying its latest transaction, and pagination.total counts distinct vehicles. Searching idv_type=GWAC returns the GWACs, not the thousands of modification records behind them.
That is the opposite of /contracts/search, where a transaction is the unit of interest because each one is a distinct obligation.
Parameters
At least one of uei, parent_uei, piid, agency, naics, or idv_type is required. Unknown parameters return 400.
| Parameter | Type | Description |
|---|---|---|
uei |
string | Vehicle holder's UEI, exactly 12 characters |
parent_uei |
string | Holder's parent UEI (corporate roll-up) |
piid |
string | Vehicle PIID (exact) |
agency |
string | Awarding agency name, acronym, or CGAC code (Navy, Department of Defense, 1700) |
naics |
string | NAICS, exactly 6 digits |
idv_type |
string | IDC, FSS, BPA, GWAC, or BOA |
active_only |
boolean | Only vehicles whose ordering period has not closed |
date_from, date_to |
date | YYYY-MM-DD, filters action_date (the award date) |
ceiling_min, ceiling_max |
number | Vehicle ceiling (potential_total_value_of_award) |
sort_by |
string | action_date (default), potential_total_value_of_award, ordering_period_end_date, recipient_name |
sort_order |
string | asc or desc (default desc) |
limit, offset |
integer | Page size (default 100; maximum 100 on the free trial, 1,000 on paid plans) and start |
fields |
string | lean (default), expanded, full, or a comma-separated column list |
Vehicle types
| Code | What it is |
|---|---|
IDC |
Indefinite Delivery Contract, the IDIQ family. The largest group by far. |
FSS |
Federal Supply Schedule, the GSA schedules. |
BPA |
Blanket Purchase Agreement. |
GWAC |
Government-Wide Acquisition Contract (SEWP, Alliant, and similar). |
BOA |
Basic Ordering Agreement. |
Which columns carry a vehicle's money and dates
FPDS populates different columns on a vehicle than on an order, and the ones that look right on a vehicle are usually the order's columns, left empty:
- The ceiling is
potential_total_value_of_award.base_and_all_options_valueis populated on a minority of vehicles andcurrent_total_value_of_awardis never populated on one, so neither is a usable filter or sort key. A $7.7 billion Navy IDIQ reads0.0inbase_and_all_options_value. - The end date is
ordering_period_end_date, the day the ordering period closes. Theperiod_of_performance_*_end_datepair is not populated on vehicles, and is excluded from the default projection rather than returned as a column that is always null.active_onlyreads the ordering period.
ceiling_min / ceiling_max and the ceiling sort key all target potential_total_value_of_award.
Example
curl -H "Authorization: Bearer $GOVCON_API_KEY" \
"https://govconapi.com/api/v1/vehicles/search?idv_type=GWAC&sort_by=potential_total_value_of_award&limit=1"
{
"data": [
{
"award_id_piid": "47QTCB26D0001",
"contract_award_unique_key": "CONT_IDV_47QTCB26D0001_4732",
"idv_type": "GWAC",
"idv_type_code": "A",
"prime_award_base_transaction_description": "THE GSA ALLIANT 3 GWAC PROVIDES IT SERVICES-BASED SOLUTIONS THROUGH PERFORMANCE OF A BROAD RANGE OF IT SERVICES THROUGH FLEXIBLE TASK ORDER CONTRACTING TO ELIGIBLE FEDERAL AGENCIES IN ACCORDANCE WITH GSA ORDER OGP 4800.2I.",
"action_date": "2026-05-06",
"period_of_performance_start_date": "2026-02-25",
"ordering_period_end_date": "2036-03-09",
"potential_total_value_of_award": 999999999999.99,
"awarding_agency_name": "General Services Administration",
"awarding_sub_agency_name": "Federal Acquisition Service",
"recipient_uei": "JCBMLGPE6Z71",
"recipient_name": "BOOZ ALLEN HAMILTON INC",
"naics_code": "541512",
"naics_description": "COMPUTER SYSTEMS DESIGN SERVICES",
"multiple_or_single_award_idv": "MULTIPLE AWARD",
"usaspending_permalink": "https://www.usaspending.gov/award/CONT_IDV_47QTCB26D0001_4732/"
}
],
"pagination": { "limit": 1, "offset": 0, "total": 3016, "total_is_estimate": false, "has_next": true },
"filters_applied": { "idv_type": "GWAC", "sort_by": "potential_total_value_of_award", "sort_order": "desc" },
"window": { "plan_window_days": null, "earliest_searchable": "1982-05-15", "clamped": false },
"_sources": ["usaspending_fpds"]
}
The 999999999999.99 ceiling above is real FPDS data. A thin tail of vehicles carries placeholder ceilings (all-nines values, and GSA schedules recorded in the trillions). These are the source's values and are passed through unchanged rather than rewritten.
Coverage
Vehicles are long-lived, so this data is not date-windowed the way /contracts/* is: a GWAC awarded in 2015 is still the thing you must hold in 2026, and its award date says nothing about its relevance. The full vehicle history we carry is searchable on every plan, back to 1982. Use active_only=true to restrict to vehicles whose ordering period is still open.
Errors
| Status | When |
|---|---|
400 |
No required filter given (uei, parent_uei, piid, agency, naics, or idv_type); an unknown query parameter; a malformed naics (not 6 digits); an unrecognized idv_type; or a non-ISO date |
401 |
Missing or invalid API key |
429 |
Rate limit exceeded (see Retry-After) |
Related
/vehicles/{piid}, a single vehicle plus what has been ordered through it/vehicles/{piid}/holders, who holds it and who is earning on it (Pro)/contracts/{piid}/vehicle, resolve an order to the vehicle it rides