SAM.gov · USAspending · DIBBS · documents · history · awards

The federal procurement API with the documents attached.

Search the text inside SAM.gov and DIBBS attachments, replay amendment history, and pull USAspending awards — one stable record model over REST and MCP.

Browse the live data
Live record artifactAPI v1
GET
/v1/opportunities
?source=sam_current&status=active
RESTMCP
Response map
200 OK
data[0].recordId
data[0].sourceName
data[0].summary
data[0].documents[].text
data[0].history.events[]
meta.nextCursor
Contract
recordId
Permanent source-scoped ID.
sourceName
The public source stays attached.
documents
Attachments, snippets, history where covered.
SAM.gov Exclusions
200 · data + meta

Browse full live records before you sign up.

The same current SAM.gov opportunities the API serves, in a public browser. Open a record, check its documents, history, and buyer context when available, then make the same call from your code.

Browse live opportunities
Stable API v1
REST and MCP
Source-linked
Documents and changes
Sandbox
No credit card
Product core · two durable records

The useful parts are documents and time.

A procurement record is not just a title and due date. The attachment text says what the work requires. The history shows what changed, when it changed, and which source record supports the current answer.

  • Document results include snippets, terms, and offsets.
  • History keeps events, snapshots, and related records tied together.
  • Stable recordId and threadKey values survive source revisions.
  • REST and MCP expose the same source-backed surfaces.

Search document text with evidence.

Search extracted attachment text across indexed opportunity documents. Results include the document, opportunity, snippet, matched terms, and character offsets.

260K+ documents with extracted text · 12.1M+ indexed chunks
/v1/documents/search/v1/opportunities/{recordId}/documents/search/v1/opportunities/{recordId}/documents/text

Replay the record, not just the current row.

Use change feed, history, snapshots, and stable thread keys to see what changed and which source record produced the current view.

/v1/changes/v1/opportunities/{recordId}/history/v1/opportunities/{recordId}/related
110.0M+
Records indexed
260K+
Documents with extracted text
12.1M+
Searchable text chunks
32
MCP tools · same key as REST
Record contract · sources, fields, routes

Public sources. One record shape. Same API.

Every source is normalized into a stable envelope with source identity, documents, history, and links where the upstream supports them.

Public sources

Procurement
SAM.gov opportunities · DIBBS RFQs
Spend
USAspending contract awards
Entities & programs
Registrations · hierarchy · assistance listings
Compliance
Exclusions · integrity records
Source catalog

Record envelope

{
  "recordId": "…",
  "threadKey": "…",
  "summary": { … },
  "documents": { … },
  "history": { … }
}

Permanent IDs, source names, documents, and replayable history use the same field groups across current and archive records.

Integration

  • REST
    GET /v1/opportunities/:id

    Versioned routes, cursor pagination.

  • Changes
    GET /v1/changes?since=cursor

    Incremental updates, no source polling.

  • MCP
    Streamable HTTP / JSON-RPC 2.0

    Same records through model-facing tools.

API reference

REST and MCP share the same contract.

Use versioned routes for applications and MCP tools for agents. The key, quota, records, and provenance stay the same.

Same record · two transports00000000-0000-4000-8000-000000000001
RESTfor apps & jobs

Dashboards, sync pipelines, alerts. Versioned /v1/* endpoints, bearer auth, cursor pagination where supported.

# From your backend script or notebook
curl https://api.boringdataplatform.com/v1/opportunities/00000000-0000-4000-8000-000000000001 \
  -H "Authorization: Bearer <YOUR_API_KEY>"
API reference
MCPfor agents · new

Claude Desktop, Cursor, Claude.ai, any agent. 32 specialized tools tuned for tool selection, JSON-RPC over streamable HTTP.

# Inside Claude Desktop, Cursor, or any MCP client
	https://mcp.boringdataplatform.com/mcp
	{ "recordId": "00000000-0000-4000-8000-000000000001" }
Setup guide
First callCreate an account → create an API key → run the curl above. One API key, one monthly quota, both transports.

One contract instead of three integrations.

Today, teams working with federal procurement data wire up three things: a notice feed, a document fetcher with OCR, and a diffing layer to reconstruct what changed. Each has its own auth, rate limits, and field drift. Boring Data Platform returns the current record, its supporting documents, its change history, and its source relationships against one contract.

Without
  • SAM.gov API for current records
  • Custom scraper + OCR pipeline for attachments
  • Nightly diff job to reconstruct amendment history
  • Per-source retry / backfill logic
With
  • GET /v1/opportunities/:recordId
  • GET /v1/documents/search
  • GET /v1/changes?since=cursor
  • Sync, retry, and backfill run inside the platform
Response envelope
data.recordId
Globally unique, source-scoped identifier.
data.threadKey
Stable key linking notice + opportunity revisions.
data.summary
Normalized title, agency, status, type, dates.
data.documents
PDFs, attachments, extracted text, and metadata where available.
data.history
Amendments, state transitions, and snapshots where coverage supports it.
data.analysis
Structured dimensions and feature flags for grouped questions.

Documents, history, and analysis fields are populated where the source and endpoint support them.

Need to slice rather than fetch-by-id? Hit /v1/opportunities/analysis for structured filters — NAICS, set-aside, contract type, and feature flags (hasExtractedText, hasPdf, hasTechnicalDocuments) — plus /analysis/rollups for aggregated facet counts.

Ask grouped questions, not just row lookups.

The public sources are useful alone. They become more useful when the API connects them: agency spend, opportunity features, vendor registration, source relationships, exclusions, and integrity signals.

Award market

Which agencies are buying this NAICS this fiscal year?

Group awards by agency, vendor, NAICS, or PSC without pulling the full awards feed into your own warehouse first.

/v1/awards/analysis/rollups?group_by=awarding_agency_code&fiscal_year=2025
Opportunity funnel

Which open opportunities have PDFs, tech packages, or awards?

Facet live opportunities by source, status, set-aside, NAICS, document availability, and derived features.

/v1/opportunities/analysis/rollups?hasPdf=true&naics=541512
Entity profile

What do we know about this UEI before we pursue or partner?

Connect SAM registration, recent awards, agency rollups, exclusions, and public integrity records in one call.

/v1/entities/{uei}/profile
Buyer profile

Who is the buyer and what has this office bought before?

Return contacts, office path, similar postings, and recent award/vendor signals from one opportunity record.

/v1/opportunities/{recordId}/buyer-profile

Live source coverage.

Each source lists its current records, document coverage, history, freshness, and status from the source catalog.

SourceRecordsDocumentsHistoryFreshnessStatus
SAM.gov current opportunitiesLive federal procurement notices from SAM.gov, with source attachments, extracted text, and document search indexed as part of the current pipeline.
6.4MAttachments + extracted textPer recordEvery 6hLive
SAM.gov archived opportunitiesHistorical SAM.gov notices for backtesting and research. Public API clients opt in with source=sam_archive.
14.2M snapshotsPer record8 yearsFrozenArchive
DIBBS RFQsDLA DIBBS request-for-quote postings with package pages, PDFs, technical-document metadata, and searchable extracted text where enrichment has run.
Measured liveMeasured livePer recordDailyLive
USAspending.gov Contract AwardsFederal prime contract award actions (FPDS-equivalent) sourced from USAspending.gov. Public v1 award rows currently exclude IDV records.
33M+FY2021–FY2025DailyLive
SAM.gov Entity RegistrationsFederal-government-facing entity registrations (UEI + CAGE + socioeconomic + address). Sourced from SAM.gov monthly public entity extracts; history accumulates as each monthly snapshot is preserved.
10.6M+Monthly snapshots (forward from first preserved extract)MonthlyLive
SAM.gov ExclusionsActive federal exclusion records from SAM.gov public Exclusions V2 extracts, preserving UEI/CAGE/NPI join keys and daily snapshot history.
170K+Daily snapshots from preserved SAM public extractsDailyLive
SAM.gov Responsibility & Integrity RecordsPublic Responsibility/Qualification and FAPIIS (Integrity Information) records sourced from SAM.gov DataBank static reports, preserving UEI/CAGE join keys with snapshot history.
3.7K+Snapshots accumulate from preserved DataBank XLSX reportsWeekly static-report checkLive
SAM.gov Federal Hierarchy PublicPublic SAM.gov Federal Hierarchy department/independent-agency and sub-tier organization reference data.
Department/Ind. Agency + Sub-Tier rows from the SAM.gov public Federal Hierarchy APISnapshots accumulate from public API pullsOn-demand public API snapshots; recurring refresh cadence pendingLive
SAM.gov Assistance ListingsPublic SAM.gov Assistance Listings / CFDA federal program reference data with agency codes and program descriptions.
SAM.gov Assistance Listings / CFDA program rows with Federal Hierarchy enrichmentSnapshots accumulate from preserved API pullsOn-demand public API snapshots; recurring refresh cadence pendingLive
Each source page lists the API and MCP families that serve it.Browse all sources

The boring part is the contract.

The most useful thing about your data platform should be how little it surprises you. What stays stable, what changes, and how you find out.

Stable — we don't break these
  • Response envelopeTop-level data, meta, errors shape is frozen per major version.
  • Field names & typesAdditive changes only. Renames ship as a new major with 12-month overlap.
  • Record identifiersrecordId and threadKey are permanent once issued.
  • Source materialOriginal source records, source URLs, hashes, and storage pointers stay attached where available.
  • Replay contextHistory and preserved snapshots stay tied to the record where source coverage supports it.
  • Auth & endpointsBearer tokens and route paths don't move within a major version.
Changes — with notice
  • New fieldsAdded as additive. Public changelog notes call out integration-visible changes.
  • New sourcesNew source= values ship behind a feature flag, then GA.
  • DeprecationsMinimum 6-month sunset window. Public changelog notice comes before removal.
  • Rate limitsRaised, never lowered, without a billing-cycle of notice.
Current versionv1 · stable
Uptime target99.9%
Change historychangelog
Incident historystatus page

Four ways to start.

No sales call required for self-serve plans.

Sandbox
$0/mo
  • 5,000 requests / month
  • 2 Pursuit Scout runs / month
  • 60 rpm rate limit
  • 1 API key
Start freeNo credit card.
Starter
$49/mo
  • 10,000 requests / month
  • 10 Pursuit Scout runs / month
  • 600 rpm rate limit
  • Unlimited API keys
Start StarterCancel anytime.
Growth
$99/mo
  • 100,000 requests / month
  • 40 Pursuit Scout runs / month
  • 600 rpm rate limit
  • Unlimited API keys
Start GrowthCancel anytime.
Developer
$299/mo
  • 500,000 requests / month
  • 150 Pursuit Scout runs / month
  • 600 rpm rate limit
  • Unlimited API keys
Get API keyCancel anytime.