Dated data on how US state and local public bids are posted, collected and timed. Every figure has its date, sample size and what was left out. Every file is yours to download.
By Colton HeilRelease Snapshot taken November 1, 2026
Release of November 1, 2026
This release is a snapshot taken November 1, 2026. It counts 23,973 cleared bids due August 3 to November 1, 2026, out of 103,851 rows in that window. The rest were left out by the rules below, and each step is counted on the pages that use the window. It corrects release 2026-11-01; what changed is listed below.
Each bar is the share of bids whose due date fell that many weeks after the posting date.
Under 1 week4.8%630 bids
1 to 2 weeks11.9%1,559 bids
2 to 3 weeks23.0%3,015 bids
3 to 4 weeks19.3%2,536 bids
4 to 5 weeks21.5%2,815 bids
5 to 6 weeks9.0%1,181 bids
6 to 7 weeks4.7%610 bids
7 to 8 weeks2.3%307 bids
8 to 9 weeks1.3%174 bids
9 to 10 weeks0.6%84 bids
10 weeks or more1.6%205 bids
Bars run from 0% to 25%, just above the largest share.
Date
bids due August 3 to November 1, 2026
Sample
13,116 cleared bids with a usable source posting date
Left out
79,878 of 103,851 rows in the window were left out by the release rules. 10,857 of 23,973 cleared bids have no usable posting date and are not in this measure
Type
Observed
Embed this chart
Paste this into any page. It reads the latest release, so it updates when we publish one. You do not need to link back to us. The framed chart runs no analytics, advertising or attribution code. The chart carries its own date and sample size, so keep it whole.
<iframe src="https://www.velocitybids.ai/data/embed/window-histogram" title="How long cleared bids gave to respond" width="100%" height="1654" loading="lazy" style="border:0;max-width:760px"></iframe>
An estimate from a random sample of 400 cleared rows, each judged by a model from its posted title only, not a count of every row. The 95% interval is 83.6 to 90.2; the precision file has the sample, the unclear rows and the spot-check.
Cohort: cleared US state and local bids.
87.2% of the 400 sampled rows were true solicitations, with a 95% interval of 83.6% to 90.2%. 33 were unclear from the title alone and 18 were not solicitations, such as headings, grant programs and award notices. Leave the unclear ones out and the share is 95.1%.
Verdicts read from posted titles by Claude Sonnet 5.5. Spot-check: a second pass by Claude Opus 5.5, a different model, with the first verdicts hidden, on 133 of 400 general labels on November 1, 2026. All 133 had a first verdict of solicitation, so the check tests false positives only; labels first judged unclear or not a solicitation were not rechecked. 4 verdicts differed and 4 labels changed; where the passes differed, the verdict that is not a solicitation stood. It is a model check, not a human one.
Rules every number follows
A source is cleared only if no named exclusion applies and its listing host's robots.txt permits its listing URL. A row is cleared only if its source is cleared and its own posting URL is permitted. Unknown means excluded.
Left out by name: resellers and aggregators; portals whose terms limit how we can use their data; a foreign notice feed; SAM.gov (federal, reported separately); portals behind a login; hosts we have not cleared for republication.
Only bids with a verified United States location are counted. 11,687 rows that passed every other test were left out because their country could not be verified.
A state, platform or trade figure needs at least 150 rows. Below that it is not published.
Counts of the whole source base say so, and are not trends. Observed counts and estimates are never mixed on one line.
We estimate we hold 45% to 70% of state and local bids, medium-low confidence, as of October 29, 2026. That was measured separately from this release. How we count.
Published figures are never edited by hand. A wrong figure gets a new release and a dated correction note.
latest.json always names the newest release. The pages show only the newest. Older releases stay at their addresses so a figure you cited can still be checked.
Corrections
Release 2026-11-01-r2, November 1, 2026
Release 2026-11-01-r2 corrects release 2026-11-01, on November 1, 2026. Release 2026-11-01 stays published as it was. Use this release where the two differ.
Time from posting to first sighting. Release 2026-11-01 timed a bid when its posting date was on or before our first sighting. That kept 1,326 bids dated within a day of first sighting, whose dates may have been inferred from when we found the bid, and DATA-RELEASE-RULES allows a date-based figure only on a date from the source. This release times a bid only when its posting date is more than a day before first sighting, the rule the response window uses: 8,502 bids, median 5.2 days, 21.4% seen within 2 days and 63.7% within 7 days, against 9,828 bids, median 4.1 days, 32.0% and 68.6% before. The earlier basis is published as the labelled sensitivity in freshness.json.
Bids not timed. The reasons published for cleared bids left out of the timing figures did not add up to the bids left out. They now do: 15,471 of 23,973 cleared bids are not timed, and timing.notTimed gives each reason, including 353 bids dated after we first saw them.
Platform concentration by state. The share published as topPlatformShare for a state is the share of its largest raw platform label, and in 10 of 32 states that label is the one for sources on no platform we track, which stands for many separate sites. This release publishes the largest platform by name for each state, the share of bids on no tracked platform, and the largest tracked platform with its share of the bids on tracked platforms. A platform the clearance rules do not allow us to name shows as unnamed.
Platform concentration overall. Release 2026-11-01 published top5PlatformShare, 67.5% of cleared bids on the five largest platform groups, and its headline called them the five largest platform groups. Two of those five groups are catch-alls and not platforms: sources on no platform we track (25.0% of cleared bids) and the shared Other portals label. This release publishes top5NamedPlatformShare, the five largest groups that are one named platform each: 42.5% of cleared bids. The share with the two catch-alls is kept as top5GroupShareIncludingCatchAlls (67.5%, the figure published before as top5PlatformShare) and the headline no longer uses it.
Precision. The share of cleared rows that are true solicitations is now marked estimated, because it comes from a random sample of 400 rows judged by a model from the posted title, with a 95% interval of 83.6 to 90.2.
Source base. sourceBase.json now gives the exact difference between the 12,373 active sources on no tracked platform and the 12,296 in the platform list: 77 are resellers or are not listed by platform.
Wording. The figure for the share of cleared bids with a posting date now says usable posting date, because more cleared bids have a posting date than have a usable one. Its value is unchanged.
New tables. freshness-by-state.csv, response-window-by-state.csv and response-window-histogram.csv publish the state and histogram figures that the pages show.
Every other figure, including the response window, weekly counts, document access and trades, is unchanged. The changed figures are listed below, and the files that did not change are named in unchangedFiles.
Every changed figure (42)
Figures that differ between release 2026-11-01 and release 2026-11-01-r2
File
Figure
In 2026-11-01
In 2026-11-01-r2
freshness.json
byState[AZ].medianLagDays
4.4
5.3
freshness.json
byState[AZ].n
182
158
freshness.json
byState[CA].medianLagDays
5
5.7
freshness.json
byState[CA].n
743
666
freshness.json
byState[CO].medianLagDays
2.7
4.7
freshness.json
byState[CO].n
295
216
freshness.json
byState[FL].medianLagDays
3.8
5.1
freshness.json
byState[FL].n
1,319
1,141
freshness.json
byState[HI].medianLagDays
4.7
5.1
freshness.json
byState[HI].n
391
370
freshness.json
byState[IL].medianLagDays
2
5.3
freshness.json
byState[IL].n
282
188
freshness.json
byState[KY].medianLagDays
6
6.4
freshness.json
byState[KY].n
229
217
freshness.json
byState[LA].medianLagDays
7
8
freshness.json
byState[LA].n
255
229
freshness.json
byState[MI].medianLagDays
3.7
4.3
freshness.json
byState[MI].n
499
453
freshness.json
byState[MO].medianLagDays
2.9
3.4
freshness.json
byState[MO].n
414
360
freshness.json
byState[NC].medianLagDays
8.1
9
freshness.json
byState[NC].n
695
668
freshness.json
byState[NJ].medianLagDays
5.3
7.3
freshness.json
byState[NJ].n
346
287
freshness.json
byState[NY].medianLagDays
3.3
4.3
freshness.json
byState[NY].n
200
169
freshness.json
byState[OH].medianLagDays
4.2
5.5
freshness.json
byState[OH].n
214
171
freshness.json
byState[SC].medianLagDays
3.7
3.9
freshness.json
byState[SC].n
1,324
1,150
freshness.json
byState[TN].medianLagDays
4.4
5
freshness.json
byState[TN].n
217
199
freshness.json
byState[TX].medianLagDays
3.9
5.4
freshness.json
byState[TX].n
371
316
freshness.json
byState[VA].medianLagDays
4.8
5.1
freshness.json
byState[VA].n
269
249
freshness.json
lagMedianDays
4.1
5.2
freshness.json
lagP75Days
8.6
9.5
freshness.json
lagP90Days
14.6
15.6
freshness.json
lagRows
9,828
8,502
freshness.json
seenWithin2Days
32
21.4
freshness.json
seenWithin7Days
68.6
63.7
Also new: freshness-by-state.csv, response-window-by-state.csv, response-window-histogram.csv. Fields added: 35. Fields removed: 5. Wording changed in 4 fields. Files with no change: biasTests.json, clearance.json, document-access-by-platform.csv, document-access-by-state.csv, documentAccess.json, exclusions.json, geography.json, platforms.csv, portal-directory.csv, portalDirectory.json, precision.json, reconciliation.json, responseWindow.json, trades.csv, trades.json, weekly-due.csv, weekly.json. manifest.json lists all of these field by field.
All files in release 2026-11-01-r2
These files are the release these figures come from. They are plain CSV and JSON, they sit at fixed addresses, and each one is listed with its size and a hash in manifest.json, so you can check that what you hold is what we published.
Days to first sighting, with every bid not timed counted under a reason, the looser rule as a labelled sensitivity, source recency and the state breakdown
manifest.json holds these hashes, so it is not hashed in itself.
Use and cite this data
You can copy a table, embed a chart or build on the files without asking and without linking back. Keep the date and sample size with the figure, because a number without them can be read the wrong way.
Cite as: VelocityBids, Public Bid Access Observatory, release 2026-11-01-r2, November 1, 2026. https://www.velocitybids.ai/data
If a figure is wrong, we publish a new release with a dated correction note and leave the old one at its address. To report one, write to hello@velocitybids.ai.
2,951 cleared sources posted bids due August 3 to November 1, 2026, and the five largest named platforms held 42.5% of those bids; 25.0% sat on no tracked platform.
The median bid was first seen 5.2 days after posting, across 8,502 bids due August 3 to November 1, 2026 with a posting date more than a day before first sighting.