TX Government Contract Awards & Winners (ESBD) avatar

TX Government Contract Awards & Winners (ESBD)

Pricing

$6.00 / 1,000 award records

Go to Apify Store
TX Government Contract Awards & Winners (ESBD)

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

Wenhao Yang

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

3 days ago

Last modified

Categories

Features

Limited permissions

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

FilterWhat it does
nigpCodesAward records in one or more NIGP codes.
agenciesRestrict to one or more agencies.
publishedAfter / publishedBeforeDate window (YYYY-MM-DD; MM/DD/YYYY also accepted) - for chunking the corpus.
includeVptsAttach the VPTS performance grade (default on).
refreshVptsRe-pull the VPTS index instead of using the cached one.
pagesScan depth (24 records per page). Default 20; the corpus is ~2,522 pages today.
startPage1-based page to start from. Use it to continue past one run's 1,200-second scan budget (startPage = previous startPage + _meta.scannedPages).
maxResultsCap 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 goalActor
Find bids by keyword, NIGP, agency, statustx-esbd-search
Check one specific bid by its numbertx-esbd-get
Monitor new & changed solicitations on a scheduletx-esbd-changes
Who won state contracts, at what amountstx-esbd-awards - you are here
Find / vet a vendor - HUB, SDV, small business, NIGP capabilitytx-cmbl-vendors
Find disabled-veteran (DV) HUB vendorstx-hub-certified
Statewide contracts - who's on each SPD/TxSmartBuy contracttx-smartbuy-contracts
Pull the raw full corpus (query + monitor) - power userssled-tx-procurement
Company registration behind a winnertx-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 value blank on some award lines and records 0 on 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 CERTIFIED HUB 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 _meta row 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.