The federal contracting data layer

Searching Inside SAM.gov Attachments: The Requirements That Only Live in the Documents

When you search SAM.gov, you are searching notice metadata: the title, the agency, the NAICS code, a short synopsis. The parts of a solicitation that decide whether you bid, the award method, the clearance level, the period of performance, the incumbent, the compliance bars, are almost never in that metadata. They are inside the attached files: the solicitation PDF, the statement of work, the price schedule, the wage determination, the industry-day slide deck. A title that reads "Locksmith Services" does not mention that page 8 of the attached statement of work requires an active Secret clearance.

This is a technical account of what those attachments actually contain, measured across a full-text index of every document attached to a federal opportunity. All figures are as of July 16, 2026, and were produced by reading the extracted text, not by sampling.

TL;DR: We downloaded and extracted the text of 506,382 distinct documents attached to 209,095 opportunities, 31.4 billion characters. That includes 57,527 files pulled out of archives (ZIPs inside ZIPs, up to five levels deep) that never appear in SAM's own attachment list, and 41,764 scanned documents recovered with OCR. The requirements that decide a bid, LPTA, clearance, CMMC, FedRAMP, wage determinations, live in this text and nowhere in the notice fields. The opportunities search API exposes it as a content= filter.
506,382
distinct documents, full text
209,095
opportunities with searchable attachments
31.4B
characters of extracted text
57,527
files recovered from inside archives

The requirements that only live in the documents

A procurement fact is useful only if you can find every opportunity that carries it. The facts below decide whether a contract is worth your time, and none of them is a SAM notice field. Each count is the number of distinct opportunities whose attached documents contain that exact phrase, as of July 16, 2026.

Requirement (phrase in the documents)Opportunities
period of performance107,078
Buy American75,252
wage determination56,707
small business subcontracting plan56,342
best value39,791
lowest price technically acceptable (LPTA)24,154
security clearance22,790
FedRAMP9,872
Section 5088,708
incumbent contractor7,255
CMMC5,312
TS/SCI1,423

The award method is the clearest example. Whether a contract is awarded lowest-price-technically-acceptable or on best-value trade-off changes your entire bid strategy, and it is stated in the solicitation text, never in a structured field. 24,154 opportunities name LPTA in their documents; 39,791 name best value. A metadata search cannot separate them because the distinction was never captured as data.

The "boring title" problem. Search the phrase "active secret clearance" and you get 202 opportunities, and the titles are ordinary: Locksmith Services (State Department), FY26 Fire Suppression (Air Force), Fort Hood Alarm Monitoring Services (Army). The Locksmith Services requirement to hold an active Secret clearance is in the attached statement of work (19AQMM26R0244.pdf and Attachment B- Statement of Work.pdf), not in anything a title or keyword search reads. If you staff cleared personnel, these are your opportunities, and they are invisible to every search that stops at the notice.

Attachments inside attachments: archives nested five levels deep

SAM lists the files a notice attaches. It does not list what is inside them. A meaningful share of federal solicitations attach a ZIP, and that ZIP frequently contains more ZIPs. To index the actual documents, each archive has to be opened, and the archives it contains opened in turn, until only real files remain.

Doing that recovered 57,527 documents that do not appear in SAM's attachment list at all, distributed by nesting depth:

Nesting depthWhat it meansDocuments recovered
1a file inside an attached archive51,209
2a file inside an archive inside an archive5,451
3three archives deep622
4four archives deep169
5five archives deep76

The deepest are not contrived. One real five-level path, from a systems-engineering solicitation, runs:

(U) 02 iHub - ATS GRA.mdzip └ BINARY-0891ea1f-... └ stc-risk-tools-installer/22/stcRiskTools.rdzip └ (the extracted document)

The outer file is a MagicDraw systems model (.mdzip, itself a ZIP), which embeds binary payloads, one of which is a tool installer (.rdzip, also a ZIP), which contains the document. The "(U)" prefix is the Unclassified marking the contracting office applied to the file. A tool that reads only the top-level attachment list sees one .mdzip and stops. The requirements were three archives further down.

Why this matters for coverage. If extraction stops at the top-level attachment list, you are blind to tens of thousands of the substantive documents, and a .zip is often the entire solicitation package rather than a supplement. Depth is not an edge case to skip; it is where the full RFP frequently lives.

Scanned documents: 41,764 recovered by OCR

Not every attached PDF has a text layer. Contracting offices routinely scan a signed SF-1449, a wage determination, or a hand-annotated drawing and attach the image. To a normal text extractor those pages are blank. 41,764 documents in the index carried no extractable text and were read with optical character recognition instead.

These are not marginal files. A scanned wage determination sets the labor-cost floor for the bid. A scanned amendment can change the response date. Leaving them as images drops exactly the documents that carry binding terms. The recovered text is searchable alongside the rest, so a query for "wage determination" reaches the 56,707 opportunities that mention it whether the mention was typed or scanned.

What is actually attached: file types

The index covers every common document format a contracting office attaches, extracted with the right tool for each. The breakdown of the 506,382 documents as of July 16, 2026:

FormatDocuments
PDF (with a text layer)327,917
Word (.docx)92,875
Scanned pages (OCR)41,764
Excel (.xlsx)28,559
Plain text10,104
Legacy Word / Excel (.doc, .xls)3,931
PowerPoint (.pptx)880
Rich text (.rtf)352

Excel matters more than its count suggests: price schedules and CLIN structures live in spreadsheets, and PowerPoint is where industry-day briefings state requirements that never make it into the formal solicitation. Both are indexed cell-by-cell and slide-by-slide.

How to search it

The full text is queryable through the opportunities search API as a content= filter. It searches inside the documents; the existing keywords= filter searches the notice title, agency, and synopsis. They are different layers, and for bid-deciding requirements the document layer is the one that carries the answer.

Find Computer Systems Design opportunities whose documents require CMMC: curl -H "Authorization: Bearer YOUR_API_KEY" \ "https://govconapi.com/api/v1/opportunities/search?content=CMMC&naics=541512"

Multiple words match documents containing all of them (content=CMMC Level 2); a quoted string matches the exact phrase (content="active secret clearance"). The filter combines with every other search parameter, so you can scope a document search to a NAICS, an agency, a date range, or open notices only. Content search is a Pro-plan feature and runs at the standard 1,000 requests/hour, not a capped preview.

Full search-endpoint documentation →  |  Pricing →

What this index does and does not tell you

Related Guides

Community Feedback

Hit a data issue or a document type we did not cover? Press Ctrl+Enter to share, it helps the next developer.