TX ESBD Opportunity Search
Pricing
$20.00 / 1,000 solicitation records
TX ESBD Opportunity Search
Find Texas government contracts by keyword, NIGP code, agency or status over 59K+ solicitations. Best starting point for finding bids. AI-agent ready.
Pricing
$20.00 / 1,000 solicitation records
Rating
0.0
(0)
Developer
Wenhao Yang
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
a day ago
Last modified
Categories
Share
TX Government Contracts & Bids Search, NIGP (tx-esbd-search)
Search every Texas state & local government solicitation - the official Texas Electronic State Business Daily (ESBD) record - by keyword, NIGP commodity code, agency or status, and get back structured JSON with the NIGP codes already parsed apart.
This is the starting point of the Texas procurement family: you have a category or a set of keywords, and you want to know what the state is buying right now.
Low cost
From $0.02 per record - you are charged per matching record delivered, never for the query itself. A run that matches nothing costs nothing. The scan stops early once it has delivered limit matches, so the cost tracks what you actually receive rather than the depth of the corpus.
What you get
Every match is normalized with structured NIGP codes - not the raw "94828-Dental Services;" string the source emits:
{"platform": "tx-esbd","agency": "Parks & Wildlife Department - 802","agencyNumber": "802","title": "17ft Center Console Mud Boat Packages","bidNumber": "802-27-75102-BR","status": "Awarded","publishedDate": "7/24/2026","closeDate": "8/7/2026 2:00 PM","nigpCodes": [{ "code": "12021", "description": "Boats, 21 Feet And Under" },{ "code": "12063", "description": "Motors, Outboard, Gasoline" },{ "code": "12090", "description": "Trailers, Boat" }],"url": "https://www.txsmartbuy.gov/esbd/802-27-75102-BR","created": "7/24/2026 8:25 am","lastModified": "8/27/2026 4:10 pm"}
Fields: platform, agency, agencyNumber, title, bidNumber, status, publishedDate, closeDate, nigpCodes (structured), url, created, lastModified.
Statuses: Posted / Awarded / Addendum Posted / Closed / No Award
Filters
| Filter | What it does |
|---|---|
keywords | Matches the title and the NIGP descriptions - searching dental also finds solicitations classified under NIGP Dental Services even when the title never says "dental". This is the filter most existing scrapers get wrong. |
nigpCodes | Restrict to one or more NIGP codes. |
agencies | Restrict to one or more agencies. |
statuses | Any of the five lifecycle statuses above. |
publishedAfter / publishedBefore | Date window (YYYY-MM-DD) - for chunking the full corpus. |
pages | Scan depth from the newest record (24 records per page). Default 20. |
limit | Stop after this many matches. Default 50. |
Example inputs
What the state is buying in a category - keywords reaches the NIGP descriptions too, so one word finds solicitations whose title never uses it.
{ "keywords": ["dental"], "limit": 50 }
Open bids from one agency:
{ "agencies": ["529"], "statuses": ["Posted"], "limit": 100 }
Everything under one NIGP commodity code:
{ "nigpCodes": ["91054"], "statuses": ["Posted"] }
A date window over the full corpus - pair a deep scan with publishedAfter / publishedBefore to cover a quarter:
{ "pages": 2500, "publishedAfter": "2026-01-01", "publishedBefore": "2026-03-31" }
Why this is hard
The source is a live JSON service with no server-side search: the lines filter parameter is accepted and then ignored, so every query is a client-side pass over the corpus, and the corpus is ordered by last modified, not posted date. That means a shallow scan can miss an older solicitation that was touched this week - which is why the run reports the date range it actually covered, so you can tell a genuinely empty result from a scan that stopped too early.
Scanning the full corpus
pages is scan depth from the newest record, not a page offset: pages: 2500 walks every record (~59,000, ~40 min). Measured: 100 pages ~ 95 s, 200 pages ~ 3 min, 500 pages ~ 8 min.
To cover everything reliably, chunk by date window or NIGP code (the source's modified-date ordering is the reason date windows beat plain deep scans):
{"pages": 2500, "publishedAfter": "2026-01-01", "publishedBefore": "2026-03-31"}{"pages": 2500, "nigpCodes": ["90000"]}
A _meta record reports the scanned range, so you can confirm a chunk was fully covered.
Example output
{"keywords": ["painting"]} - one match, with the NIGP codes already parsed apart:
{"platform": "tx-esbd","agency": "Health & Human Services Commission - 529","agencyNumber": "529","title": "Dormitory Interior Painting San Antonio State Supported Living Center Building 674","bidNumber": "HHS0017699","status": "Posted","publishedDate": "9/21/2026","closeDate": "10/6/2026 10:30 AM","nigpCodes": [{"code": "91054","description": "Painting, Maintenance And Repair Services (Including Caulking)"},{"code": "91461","description": "Painting And Wallpapering"}],"url": "https://www.txsmartbuy.gov/esbd/HHS0017699","internalId": "561764","created": "9/21/2026 5:29 pm","lastModified": "9/21/2026 5:32 pm"}
A run also emits a _meta record reporting the date range the scan actually covered, so an empty result can be told apart from a scan that stopped too early.
The rest of the Texas family
One actor, one job - match your goal:
| Your goal | Actor |
|---|---|
| Find bids by keyword, NIGP, agency, status | tx-esbd-search - you are here |
| 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 |
| 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 |
Notes
- Data source: Texas Comptroller - ESBD. Public state records.
- No login, no anti-bot - uses the official public JSON API.
- Full corpus - ~59,000 solicitations (posted, awarded, closed & historical).
- Also available as a hosted MCP tool (
j0401--tx-esbd-search) for AI assistants.
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 solicitation data is public government information. We recommend verifying any opportunity on the official portal before acting.