TX Government Contract Awards & Winners (ESBD)
Pricing
$6.00 / 1,000 award records
TX Government Contract Awards & Winners (ESBD)
Who won Texas state contracts? Award winners, amounts, HUB status and VPTS grades - outcome data for competitive intelligence. Search by NIGP or agency.
Pricing
$6.00 / 1,000 award records
Rating
0.0
(0)
Developer
Wenhao Yang
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
3 days ago
Last modified
Categories
Features
Share
TX Government Contract Awards & Winners, ESBD (tx-esbd-awards)
Who actually won the contract. This actor returns the award record behind a Texas state solicitation - the winning vendors, the amounts, their HUB status, and their VPTS vendor performance grade where a match exists.
It answers the question the opportunity feed can't: not what is being bought, but who got it, for how much, and how they performed.
Low cost
From $0.006 per award record - you are charged per award record delivered, never for the query itself. A run's cost is simply award records the per-record price, so a default scan (~118 awards) costs about $0.71.
You can bound a run with the standard maxTotalChargeUsd run option; the smallest cap the platform accepts for this Actor is $5 (about 830 award records). If a cap stops output, the dataset ends with an uncounted _meta row carrying chargeLimitReached=true.
A minority of solicitations carry several winner lines (measured 2026-11-02: ~3-9% of Awarded solicitations); each distinct award line is billed as one record (the dedupe key is the award's identifying fields: contractor, amount, date, address, status and HUB status). Repeated identical award lines in the source are collapsed, so you are not charged twice for the same award - you pay for the winners you receive rather than for the solicitations scanned. Cancelled award lines are dropped.
What you get
{"platform": "tx-esbd","bidNumber": "HHS0018075","title": "Boiler Installation / Demolition at Austin State Hospital (ASH)","agency": "Health & Human Services Commission - 529","agencyNumber": "529","status": "Awarded","nigpCodes": [{ "code": "94125", "description": "Boiler Maintenance And Repair, Steam (Including Testing Services)" }],"publishedDate": "10/9/2026","closeDate": "11/2/2026 10:30 AM","url": "https://www.txsmartbuy.gov/esbd/HHS0018075","internalId": "566674","contractor": {"name": "JM Engineering LLC","address": "1314 Hillridge Dr, Round Rock, TX 78665-1186","value": 54399.0,"hubStatus": "2","hubStatusText": "NOT CERTIFIED","awardDate": "11/6/2026","awardStatus": "Full Award","vpts": null}}
Fields: platform, bidNumber, title, agency, nigpCodes (structured), contractor.name, contractor.value, contractor.hubStatus, contractor.awardDate, contractor.vpts.vendorId, contractor.vpts.grade.
Filters
| Filter | What it does |
|---|---|
nigpCodes | Award records in one or more NIGP codes. |
agencies | Restrict to one or more agencies. |
publishedAfter / publishedBefore | Date window (YYYY-MM-DD; MM/DD/YYYY also accepted) - for chunking the corpus. |
includeVpts | Attach the VPTS performance grade (default on). |
refreshVpts | Re-pull the VPTS index instead of using the cached one. |
pages | Scan depth (24 records per page). Default 20; the corpus is ~2,522 pages today. |
startPage | 1-based page to start from. Use it to continue past one run's 1,200-second scan budget (startPage = previous startPage + _meta.scannedPages). |
maxResults | Cap the number of output records. |
Example inputs
Who won in a commodity code - nigpCodes matches the structured code; widen pages to reach further back:
{ "nigpCodes": ["96145"], "pages": 250 }
Awards handed out by one agency:
{ "agencies": ["529"], "pages": 100 }
Awards inside one date window - pages sets the scan depth from the newest record:
{ "pages": 50, "publishedAfter": "2026-01-01", "publishedBefore": "2026-12-31", "maxResults": 50 }
Continue a deep scan - one run stops at a 1,200-second scan budget; resume where it stopped (read _meta.scannedPages from the first run):
{ "pages": 250, "startPage": 1201, "includeVpts": false, "maxResults": 50 }
Skip the performance lookup for a lighter, faster scan:
{ "pages": 20, "includeVpts": false, "maxResults": 50 }
Read the VPTS grade correctly
contractor.vpts is attached by matching the winner's name against the VPTS performance register. The ESBD award record carries no vendor ID, so this can only ever be a name match - measured across recent runs, 24-27% of award winners find a confident VPTS record (26.6% = 83 of 312; a later sample 23.7% = 28 of 118), and the rest come back as "vpts": null. A null is "no confident match", never a guessed grade.
For exact, ID-linked vendor performance, use the CMBL actor instead - there the join is on the vendor's ID, so it is exact rather than probabilistic.
Why this is hard
Two separate sources have to be reconciled: the solicitation record (which knows what was bought and by whom, by name only) and the VPTS performance register (which knows how vendors performed, keyed by a vendor ID the award record doesn't carry). Bridging them with a name match is the only option the data allows - so the honest engineering move is to report when a match was found rather than to silently attach the nearest name.
The award detail also lives behind a second API call per solicitation - which is why the scan depth and per-run cost behave differently here than in the plain search actor.
Example output
{"nigpCodes": ["94125"], "maxResults": 5} - one award record from the newest 20 pages: the solicitation, its winning contractor, and the VPTS line attached where a match exists:
{"platform": "tx-esbd","bidNumber": "HHS0018075","title": "Boiler Installation / Demolition at Austin State Hospital (ASH)","agency": "Health & Human Services Commission - 529","agencyNumber": "529","status": "Awarded","nigpCodes": [{"code": "94125","description": "Boiler Maintenance And Repair, Steam (Including Testing Services)"}],"publishedDate": "10/9/2026","closeDate": "11/2/2026 10:30 AM","url": "https://www.txsmartbuy.gov/esbd/HHS0018075","internalId": "566674","contractor": {"name": "JM Engineering LLC","address": "1314 Hillridge Dr, Round Rock, TX 78665-1186","value": 54399.0,"hubStatus": "2","hubStatusText": "NOT CERTIFIED","awardDate": "11/6/2026","awardStatus": "Full Award","vpts": null}}
A winner with no confident VPTS match comes back as "vpts": null - never a guessed grade.
The rest of the Texas family
| Your goal | Actor |
|---|---|
| Find bids by keyword, NIGP, agency, status | tx-esbd-search |
| Check one specific bid by its number | tx-esbd-get |
| Monitor new & changed solicitations on a schedule | tx-esbd-changes |
| Who won state contracts, at what amounts | tx-esbd-awards - you are here |
| Find / vet a vendor - HUB, SDV, small business, NIGP capability | tx-cmbl-vendors |
| Find disabled-veteran (DV) HUB vendors | tx-hub-certified |
| Statewide contracts - who's on each SPD/TxSmartBuy contract | tx-smartbuy-contracts |
| Pull the raw full corpus (query + monitor) - power users | sled-tx-procurement |
| Company registration behind a winner | tx-business-entities |
Typical questions
- "Who won contracts in NIGP 12021 this year, and for how much?"
- "Which agencies award to HUB vendors in my category?"
- "What is the average award size in my commodity code?"
- "Is my competitor winning - and what is their VPTS performance grade?"
Notes
- Data source: Texas Comptroller - ESBD awards + TxSmartBuy Vendor Performance Tracking System (VPTS). Public state records.
- No login, no anti-bot - uses the official public JSON API.
- Amounts can be null or zero - the source leaves
valueblank on some award lines and records0on cooperative/directory contracts; a leading$in the source is normalized to a number. The corpus is ~60,500 solicitation records (2026-11-09), about 2,522 pages. - Recent awards often carry
NOT CERTIFIEDHUB status - the source leaves HUB unfilled on many recent award lines (measured 2026-11-02: 95 of the newest 95; a small minority were CERTIFIED further back (7.3% in a 259-line sample)). Treat a blank HUB flag on a recent award as unrecorded, not as proof the winner is not a HUB vendor. - A
_metarow appears only on a notable run - detail-fetch failures, no matches, the run-level charge cap, or the scan budget being reached. Normal full runs contain award records only.
License
MIT - see ./LICENSE.
Disclaimer
This product is an independent data service and is not affiliated with, endorsed by, or sponsored by the State of Texas or any government agency. All award data is public government information.