> A dated record of what changed in GovCon API: new datasets, endpoints, MCP tools, filters and plan changes, each entry as of its date.

Source: https://govconapi.com/changelog

# Changelog

What changed in GovCon API, and when.

Each entry describes the product on the day it was published. Counts, prices, plan names, limits and availability in an older entry are as of that date and may differ today.

For the product as it is today: plans, prices, limits and what each plan includes are on [Pricing](/pricing); what each capability is and which endpoints serve it are on [Capabilities](/capabilities); how each thing we build works is on [Workflows](/workflows); sources, coverage and freshness are on [Data](/data); the MCP tools are listed on [MCP tools](/mcp/tools).

## October 2026

### Every docs page in Markdown, for AI agents

22 Oct 2026


Add `.md` to any docs page URL and you get its Markdown source instead of HTML: `/changelog.md`, `/mcp/tools.md`, `/api-guide/keys-create.md`. An agent or a retrieval pipeline reads exactly what a person sees, with no navigation or scripts to strip, and each file names its canonical URL at the top. No key needed. [This page as Markdown](/changelog.md).

### Regenerating a key takes a code sent to your email

22 Oct 2026


Asking for a new key on an existing account sends a 6-digit code to the account's email, valid for 10 minutes. The new key is issued only when the code comes back, and the old key stops working at once. On govconapi.com the form asks for the code; on the API (which has required it since 5 October) you can prove ownership with your current key instead. [Key endpoint](/api-guide/keys-create).

### Connect ChatGPT, no install

8 Oct 2026


ChatGPT on the web connects to the same hosted MCP server as Claude, added as a custom MCP server. Paste `https://mcp.govconapi.com/mcp`, sign in with your email and a 6-digit code, and ask a federal contracting question. The six tools, plans and limits work exactly as with the Claude connector, and an email we have not seen before starts a free trial. [Connect ChatGPT](/mcp/tools#chatgpt).

### Faster search inside a solicitation's documents

7 Oct 2026


When your other filters are narrow, a solicitation or notice number for example, `content=` on `/opportunities/search` now checks only those notices' attachments instead of the whole corpus, with identical results. Measured on real calls before and after: the typical call went from 941 ms to 290 ms, and the slowest one in ten from 7.9 seconds to 0.3. `content=` is on Pro. [Search inside documents](/api-guide/search-endpoint).

### Connect Claude with no install, through six tools

1 Oct 2026


Claude on the web, desktop and mobile connects to GovCon API through a hosted MCP server: add the connector, sign in with your email, and ask. Six tools (resolve, search, get, market, price, contact) reach every dataset, under your plan's rules. The local package, `govconapi-mcp` 0.3.0, serves the same six, and the 53 single-purpose tools stay one setting away. [Connect Claude](/mcp/tools#claude-connector).

## September 2026

### Paid plans search every notice we hold

14 Sep 2026


On Developer and Pro, `/opportunities/search` and `/awards/search` now search every notice we hold, so an older solicitation turns up by its number and year-over-year comparisons span every year we have. The free trial keeps its 90-day window. Award search now returns the same `window` block as opportunity search. [Search window](/api-guide/guides/historical-window).

### A simpler plan model: CSV export retired, filters freed, trial allowance doubled

12 Sep 2026


Every search filter now works on every plan, including the free trial, and the free trial moves to 50 requests a day. `/export.csv` and `?format=csv` are retired; JSON is the API, and three accounts had used CSV in the product's lifetime. Price benchmarking moves to Pro, and its separate daily quota is gone. An over-large page size now returns the same error everywhere. [Pricing](/pricing).

## August 2026

### 53 tools for AI agents, with the source public

31 Aug 2026


The MCP server spans the full contracting lifecycle: market research, opportunity discovery, capture and teaming, bid and pricing, award and compliance. It reaches the attachment full-text index, so an agent searches inside solicitation documents rather than only the notice fields. MIT source on [GitHub](https://github.com/govconapi/govconapi-mcp), package on PyPI, listed in the official MCP registry. Works with Claude Desktop, Claude Code, Cursor, Zed, and any MCP client. [The 53 tools →](/mcp/tools)

### Which awards are being challenged, and when the freeze lifts

25 Aug 2026


`/api/v1/protests` returns GAO bid protests, **pending as well as decided**: protester, solicitation, agency, outcome, and the date GAO must decide by. **13,778 decided since October 2019, plus 219 still pending** (25 August 2026). A pending protest obliges the agency to suspend performance, so `?status=Open&sort=due` ranks contested awards by which unfreeze first. Every plan; the per-solicitation lookup is Pro. [Federal bid protests, explained →](/federal-bid-protests)

### Which certifications actually win a NAICS market, not just which work is set aside

23 Aug 2026


`/api/v1/naics/{code}/competition` now carries a `socioeconomic` block: the share of a market's obligations that went to firms holding each set-aside certification (8(a), SDVOSB, VOSB, WOSB, EDWOSB, HUBZone, small-disadvantaged), plus the small-business share overall. It is winner-based, so it counts a certified firm that won full-and-open work, not only work formally set aside, which is a different question from how a market's contracts were competed. Janitorial services (`561720`) sends about 36% of its dollars to small business, led by 8(a) at 16% and veteran-owned at 13%. It answers whether your certification actually wins share in a market before you invest in it. Facts only, no score. Included in every plan. [NAICS competition reference →](/api-guide/naics-competition)

### Which contracting offices buy your NAICS, and how each one buys

22 Aug 2026


`/api/v1/offices?naics=` returns the specific contracting offices that buy a NAICS, ranked, each with its own obligations, average number of offers, single-bidder share, and set-aside share; `/api/v1/offices/{office_code}` profiles one office, how it buys overall and the NAICS it actually buys. It resolves the buyer below the department, to the office you actually target, and reports competition per office rather than market-wide, because the market-wide average hides it: janitorial services (`561720`) reads 35% single-bidder market-wide, but by office it runs from 0% (effectively locked) to 100% set-aside and eleven bidders per award (wide open). Facts only, no score. Included in every plan. [Contracting Office Intelligence guide →](/contracting-office-intelligence)

### Is the incumbent beatable? A vulnerability read on any recompeting contract

22 Aug 2026


`/api/v1/recompetes/{piid}` returns one recompeting contract plus a `vulnerability` block on the incumbent, composed from their SBA-registered certifications and full FPDS obligation history. Three named, self-evidencing signals, no score: a **certification lapse** (the incumbent's set-aside certification expires before the contract even ends, so they may be ineligible to recompete under the same set-aside), **thin past performance** (few distinct federal prime contracts on record), and **single-buyer dependence** (obligations concentrated in one department, read as entrenchment when that department runs the recompete and as thin roots when it does not). Each reason carries its own evidence text; the conclusion is yours. Pro. [How these signals are built, and what we tried first →](/recompete-watchlist#method)

### Teaming partner search screens every recommended firm for active debarment

22 Aug 2026


`/api/v1/partners/search` carries an `excluded` flag on every firm it returns, checked against the active federal exclusion (debarment) list. A firm currently barred from federal awards comes back `excluded: true` with the details (exclusion type, excluding agency, activation date, FASCSA), so a debarred contractor is flagged rather than surfaced as a clean teaming candidate; `excluded: false` is a positive clearance, not an absence of data. The check counts only exclusions in force today, so a debarment since lifted or terminated does not flag. The screen runs inside the same call that ranks the shortlist. Pro. [Teaming Partner Finder →](/teaming-partner-api)

### SBA small-business status and verified certifications, on any company lookup

20 Aug 2026


`/api/v1/dsbs/{uei}` and an `sba_profile` block on entity and company lookups add the SBA layer SAM's self-reported flags don't carry: which NAICS a firm is actually small for (SBA's authoritative determination, exposed as the `naics_small` filter on entity search) and verified SBA-registered certifications (8(a), HUBZone, WOSB, EDWOSB, VOSB, SDVOSB) with entry and exit dates, so you can tell a current certification from a lapsed one. SAM carries only self-attested business types; this is the SBA-registered certification itself. Across the base, 79,290 firms carry an SBA-registered certification. Pro. [SBA profile reference →](/api-guide/dsbs-profile)

### The prevailing-wage floor for one occupation, in a single call

13 Aug 2026


`/api/v1/wage-determinations/rate-summary` returns the labor-cost floor for one occupation as a distribution: the base hourly wage at the 25th, 50th, and 75th percentiles (plus min and max) and the Health & Welfare fringe owed on top, aggregated across every wage determination that carries it. A federal Janitor (SCA `11150`) sets a base floor around `$16.78`/hour plus a `$5.55` fringe, across more than a thousand county determinations. On a Service Contract Act bid, that loaded-labor floor drives the price far more than the award ceiling does. The endpoint rolls the county determinations up for you. Key it by occupation code or name, filter by state, DBA or SCA. Included in every plan. [Prevailing-wage floor reference →](/api-guide/wage-determinations-rate-summary)

### How contested a NAICS market is, and whether a newcomer can break in

13 Aug 2026


`/api/v1/naics/{code}/competition` reads the award record for one NAICS and returns the four facts that decide whether a market is worth pursuing: how many bidders an award draws on average and the share that went to a single bidder, the states where the work is performed, the award volume by quarter, and how open the field is, the share of the last year's winners holding only one or two awards. Janitorial Services (`561720`) is contested but open: awards draw about eight bidders, roughly a third still go to a single bidder, and two thirds of winners hold one or two awards. Security Guard Services (`561612`) is the opposite shape, awards average under two bidders and most go to a single bidder. Facts only; you read whether a market is contested, concentrated, or open. Pairs with `/api/v1/naics/{code}` for the whole-market size and concentration. Included in every plan. [NAICS competition reference →](/api-guide/naics-competition)

### Slice opportunities by product-vs-service, PSC family, and several notice types at once

11 Aug 2026


`/api/v1/opportunities/search` gains three ways to scope a market without listing every code. `psc_type=supply` returns notices whose primary Product & Service Code is a numeric supply code, `psc_type=services` the letter-prefixed service codes, a first-pass supply-versus-services split. `psc` now also takes a trailing-`*` prefix (`psc=70*` for the whole 70-series, `psc=R*` for R-series services) and a comma-separated list. And `notice_type` accepts several values in one call (`notice_type=Solicitation,Presolicitation,Combined Synopsis/Solicitation`, matched as OR), so one request covers every biddable stage. Existing single-value queries are unchanged. Included in every plan. [Opportunities search reference →](/api-guide/search-endpoint)

### The language contracting officers use for a market, so your profile matches how they search

11 Aug 2026


`/api/v1/naics/{code}/positioning` reads the solicitation side of a NAICS over the last 24 months of SAM opportunities and returns three things: the phrase vocabulary contracting officers actually put in solicitation titles, the set-aside makeup as a share of notices, and the top soliciting agencies. For `541512` (computer systems design) across 1,900 recent notices, the language runs to `support services`, `information technology`, and `management system`; 57% post full-and-open and 11% as total small-business set-asides; the VA's Technology Acquisition Center solicits the most. Put those phrases in your SAM and DSBS profile and capability statement so the contracting team surfaces you during market research. Pairs with `/api/v1/naics/{code}` for the award side. Included in every plan. [NAICS positioning reference →](/api-guide/naics-positioning)

### Federal spending totals by agency, PSC, and set-aside, free

11 Aug 2026


Three free rollups summarize the last twelve months of federal prime contract obligations from FPDS. `/api/v1/spending/by-agency`, `/api/v1/spending/by-psc`, and `/api/v1/spending/by-set-aside` each return obligated dollars, action count, and distinct recipients per bucket, ranked. The Department of Defense obligated $352.75B across 2.8M actions to 36,569 recipients over the trailing year; small-business set-asides (SBA) moved $27.29B; medical managed-healthcare (PSC `Q201`) topped the code cut at $38.02B. Included in every plan. [Spending rollups reference →](/api-guide/spending)

### The full Product & Service Code catalog, with award volume, free

11 Aug 2026


Resolve or discover any Product & Service Code without an account. `/api/v1/psc/{code}` returns a code's name, full description, product-versus-service class, category hierarchy, and total federal award count: `D302` is IT and Telecom Systems Development, 5,661 awards. `/api/v1/psc/search?q=` finds codes by keyword: `janitorial` returns `S201` (Housekeeping, Custodial Janitorial), 29,265 awards, under Facility Related Services. Included in every plan. [PSC catalog reference →](/api-guide/psc-detail)

### Opportunity attachments now tell you what each file is, before you download it

7 Aug 2026


Every file in a solicitation's attachment list comes labelled. `/api/v1/opportunities/{notice_id}/attachments` returns a `files` array alongside the plain URLs, each entry carrying the filename, size in bytes, and file type. You can pick the solicitation out of a set, skip a 27 MB drawing package, or filter to the spreadsheets without opening a single file: a notice reads back `19SN1026R0005_Attachment 1_C-SCRM Questionnaire.xlsx` at 172,980 bytes next to the `Mobile Subscription.pdf`. The `resource_id` on each file is the same key that drives attachment full-text search, so you can target the exact document you want to read inside. The original URL array is unchanged. Included in every plan. [Attachments reference →](/api-guide/attachments)

### Wage rates: what each trade and occupation actually pays, not just which determination applies

6 Aug 2026


The wage determination tells you which floor governs a contract; now you can read the floor itself. `/api/v1/wage-determinations/rates` returns the classification-level rates inside the Davis-Bacon and Service Contract Act determinations, roughly 495,000 rate lines, each trade or occupation with its hourly base wage and fringe, queryable by occupation, state, or WD number. A San Francisco electrician reads $91.25 base plus $48.05 fringe; the same Service Contract Act janitor occupation runs from $9.65 to $22.38 by locality. Each determination's full schedule is also inline on its detail record as a `rates` block. Included in every plan. [SAM.gov wage determination API guide →](/sam-gov-wage-determination-api)

## July 2026

### GSA labor rates: what a role costs per hour, from the awarded record

23 Jul 2026


The labor half of should-cost. `/api/v1/pricing/labor-rates` returns the awarded ceiling-rate distribution for a labor category as percentiles, from about 262,000 GSA Schedule (CALC) rates, filterable by education, experience, NAICS, and vendor. It also returns the typical year-over-year escalation and a named competitor's rate card, and when a title pools variants it shows how they break down. A Program Manager runs about $183 an hour at the median. The should-cost / IGCE labor input, paired with the contract price benchmark for the full picture. Developer and Pro. [GSA labor rates →](/gsa-labor-rates)

### Contract price benchmarks: what a contract goes for, and where your bid ranks

23 Jul 2026


Price a federal bid against the record, not a guess. `/api/v1/pricing/benchmark` returns a NAICS's award-value distribution as percentiles, split by contract pricing type and scopable by set-aside and PSC, so firm-fixed-price and cost-plus never blend into one meaningless average. `/api/v1/pricing/position` takes your own number and returns its percentile rank plus the real comparable contracts nearest it, to judge whether that rank is justified. Computed from 9.8 million awards; for `541512` competed under 8(a), the median award runs about $4.6M. Developer and Pro. [Contract price benchmarks →](/federal-contract-pricing)

### Procurement forecasts: what agencies plan to buy, before the solicitation

22 Jul 2026


The forward-looking layer: an agency's own projection of a planned requirement, published months to years before a solicitation posts to SAM.gov. `/api/v1/forecasts/search` covers more than 12,000 forecasts from the GSA, DHS, and HHS feeds by NAICS, agency, set-aside, place of performance, award year, and value. On a recompete, a Pro `incumbent_award` block names who holds the contract today and when it expires; over 1,500 forecasts name one. The requirement owner is on every record; direct contact lines are Pro. [Federal procurement forecasts →](/federal-procurement-forecasts-api)

### Search inside the attached documents, not just the notice

16 Jul 2026


The requirements that decide a bid, the clearance level, the incumbent, compliance bars like FedRAMP or CMMC, usually live inside the attached solicitation, not the notice's own fields. Now you can search that text. Pass `content=` to `/api/v1/opportunities/search` to match the full text of attached documents (PDF, Word, Excel, PowerPoint, scanned pages read by OCR) across 511,539 files on 210,761 opportunities. It combines with every other filter, so `content="active secret clearance"` surfaces ordinary-looking contracts, a locksmith solicitation, a fire-suppression job, whose statement of work quietly requires a cleared workforce. Pro plan. [Searching inside SAM.gov attachments →](/sam-gov-attachment-search)

### Free CAGE and UEI lookup, no account

16 Jul 2026


Resolve one federal contractor identifier to its current SAM record in the browser, no key required. [/cage-code-lookup](/cage-code-lookup) takes a 5-character CAGE code, [/uei-lookup-api](/uei-lookup-api) takes a 12-character UEI, and both return the legal name, the crossed identifier, registration status and expiration, address, primary NAICS, and certifications. For example CAGE `53YC5` resolves to K & K Construction Supply Inc. Full NAICS/PSC arrays, batch resolution, and the Pro FPDS/FFATA activity are a step up to the [API](/api-guide).

### Wage determinations: the Davis-Bacon, SCA, and CBA rates a contract is bound to

16 Jul 2026


Federal construction and service contracts carry a legally binding wage floor: the Davis-Bacon, Service Contract Act, or collective-bargaining determination that sets minimum hourly and fringe rates by county and job type. `/api/v1/wage-determinations/search` queries all 90,033 of them by type, state, county, WD number, or construction type; `/api/v1/wage-determinations/by-location?state=CA&county=Alameda` returns every active determination covering a jurisdiction, the statewide ones included. Collective-bargaining determinations carry a `cba` block with contractor, union, and term, so a section 4(c) carryover is visible at a glance. Included in every plan. [SAM.gov wage determination API guide →](/sam-gov-wage-determination-api)

### Contract vehicles: the IDIQs, GWACs, and schedules behind the task orders

15 Jul 2026


Most federal services work is a task order placed against a vehicle the winner already holds. Now you can see those vehicles. `/api/v1/vehicles/search` finds the IDIQs, GWACs, FSS schedules, BPAs, and BOAs by holder, agency, NAICS, or type across 429,003 vehicles; `/api/v1/vehicles/{piid}/holders` shows who else holds a multiple-award vehicle; and `/api/v1/contracts/{piid}/vehicle` resolves any order to its parent, for example to SEWP V, NASA's $20B government-wide acquisition contract. Company profiles gain a `vehicles_held` view (Booz Allen holds 498). Base data in every plan; the holder list and portfolio are Pro. [Contract vehicles API reference →](/api-guide/vehicles-search)

### Market Pulse: federal market intelligence by NAICS

10 Jul 2026


See the shape of a federal market before you chase it. `/api/v1/naics/{code}` returns a market's obligated size, active competitor count, and set-aside flow; `/api/v1/naics/leaderboard/{board}` ranks markets by size, competition, or set-aside leverage. For example `541512` (Computer Systems Design) reads $29.2B obligated across 1,827 vendors, 10.2% set aside. Across 1,083 markets and $667.6B tracked, the biggest are commercial and institutional building construction ($56.0B) and aircraft manufacturing ($51.7B). Included in every plan. [Explore Market Pulse →](/market-pulse)

### Company contact resolver: the real decision-maker, registration agents filtered out

10 Jul 2026


Find the named decision-maker behind a vendor, not the third-party agent who filed their SAM registration. `/api/v1/company-contact/{uei}` returns the real contact (name, title, city, state) after filtering out the registration agents that fill the point-of-contact slots on a large share of entities. EBH Fitness returns Steve Howard, Owner. Where only an agent is on file it says so and names them: The Sherwin-Williams Company returns `status: agent_only` and flags John Rybicki, listed as the registration contact on 2,594 unrelated firms. SAM carries no email or phone, so names and titles only. Factual, deterministic. Pro plan.

## June 2026

### Agency concentration on company profiles

26 Jun 2026


`/api/v1/companies/{uei}` now returns `fpds_top_agency_share_pct`: the share of a company's prime-contract obligations (FY2025 onward, from FPDS) flowing to its single largest awarding department. The comprehensive read of single-customer dependence, where the existing `top_agency_share_pct` sees only the sparse subset of contracts that carry a SAM Award Notice. For example `GET /api/v1/companies/HNN4F9JZWDY8` (Palantir USG Inc) reads 94.5, nearly all of its FY2025+ obligations running through one department. Pro plan; silently omitted on non-Pro keys.

### Agency abbreviations in contact lookup

26 Jun 2026


`/api/v1/contacts/lookup` now resolves common agency abbreviations and codes in the `agency` filter to the agency name as stored, so `agency=DLA` returns Defense Logistics Agency contacts, `agency=VA` Veterans Affairs, and `agency=GSA` General Services Administration. Pro plan.

### Every data source on one page, and how current it is

26 Jun 2026


Every dataset we serve now has one page, [/data](/data), that lays out what each source is, its coverage window, the upstream system and its publishing cadence, and the exact current-as-of date, read live from `GET /api/v1/status` rather than hand-maintained. Where the most recent weeks of a source look thin, it notes that the upstream system has not reported those records yet, not that we are behind. The same numbers are available programmatically on `/api/v1/status`. [See the data sources →](/data)

### Recompete Watchlist API

19 Jun 2026


See the contracts in your market that must recompete before they hit SAM. `/api/v1/recompetes` takes a market (NAICS, agency, set-aside, geography, value) and a window you choose, and returns the contracts entering their recompete window with the bid/no-bid facts: the incumbent, the value, the option runway, whether it was genuinely competed, and named subcontractors. Plus a live feed of sources-sought and pre-solicitation notices with the contracting officer's contact, to get on the radar before the RFP. Factual, not scored. Pro plan. [Recompete Watchlist guide →](/recompete-watchlist)

### Teaming Partner Finder API

19 Jun 2026


Find federal contractors with proven past performance, not just who is registered. `/api/v1/partners/search` takes a NAICS, awarding agency, place-of-performance state, or set-aside and returns the firms that have actually won matching prime contracts, ranked by obligated dollars, each with its socioeconomic status, SAM registration, and named points of contact. The only contractor endpoint that filters by awarding agency and returns who to call. Factual, not scored. Pro plan. [Teaming Partner Finder guide →](/teaming-partner-api)

### Report a wrong response from the response

5 Jun 2026


Every response under `/api/v1/*` carries a top-level `_report_url`. Open it in a browser and you land on a single-textarea form pre-filled with the exact call you just made. Type what you expected versus what you got, hit Send, and it emails the team directly, no portal login. The link is bound to the calling customer and expires after 24 hours.

### Federal prime contracts (FPDS) API

1 Jun 2026


Every federal prime contract transaction as clean JSON: base award and every modification, from the federal procurement system of record (FPDS), contract types A, B, C, and D. Three endpoints: `/api/v1/contracts/search` (by recipient UEI, PIID, agency, NAICS, award type, action date, obligation), `/api/v1/contracts/{piid}` (latest action plus a roll-up across every action under the PIID), and `/api/v1/contracts/{piid}/modifications` (the full modification trail). Coverage is FY2025 + FY2026: 9 million+ transactions, 8 million+ distinct contracts, 100,000+ recipients, refreshed daily. [Contracts API guide →](/federal-contract-awards-api)

### FPDS contract context on the rest of the API

1 Jun 2026


On endpoints you're already calling, Pro responses now include FPDS prime contract context inline alongside the subaward enrichment shipped previously. Same pattern, parallel data layer. A few concrete examples from prod, same keys, same auth:

- `GET /api/v1/companies/CKV2L9GZKJK3` (Deloitte Consulting LLP) now returns `fpds_obligated_total` of $4.18B across `fpds_transaction_count` 2,808 transactions on `fpds_distinct_contracts` 908 prime contracts, plus `fpds_top_naics` and `fpds_top_agencies`. The full federal activity picture in one call, alongside the existing SAM Award Notice slice.
- `GET /api/v1/entities/{uei}` and `GET /api/v1/entities/by-cage/{cage}` gain the same `fpds_obligated_total` and date-bound activity fields on the entity response.
- `GET /api/v1/vendor-risk/{uei}` gains a `contract_exposure` block alongside the existing `subaward_exposure`: obligation flow, top awarding agencies, action-date bounds. Compliance teams read both sides of the supply-chain blast radius in one screen.
- `GET /api/v1/exclusions/{uei_sam}` gains a `recent_contract_actions` block: is this excluded UEI still receiving direct prime contract obligations? Combined with `recent_sub_payments`, the compliance question goes from "are they debarred?" to "is anyone in the federal supply chain still paying them, directly or indirectly?" in one call.

All blocks are silently omitted on non-Pro keys; existing integrations keep working unchanged. `_sources` composes the underlying sources whenever the enrichment fires. [Contracts API guide →](/federal-contract-awards-api)

### Dense subaward enrichment on contract detail

1 Jun 2026


`/api/v1/contracts/{piid}` returns a `subaward_rollup` block on Pro keys summarizing the FFATA subaward footprint flowing from this prime contract: sub count, total subcontracted, share of the prime obligation, distinct sub-vendors, first and last dates, and the top 5 named sub-vendors. The PIID join is dense: within FY2025+ roughly 88% of subaward filings match a prime row, and 98% of in-scope contracts with subaward activity get a populated block. `_sources` extends to `["usaspending_fpds", "usaspending_ffata"]` when the block fires.

### Source attribution on every response

1 Jun 2026


Every response under `/api/v1/*` now carries a top-level `_sources` array naming where the data came from: `sam_opportunities`, `sam_entities`, `sam_exclusions`, `usaspending_fpds`, `usaspending_ffata`, `derived_duns_uei_crosswalk`, `derived_vendor_risk`. Endpoints that compose multiple sources list each one. Customers reading `_sources` know exactly what to verify upstream when something looks off, without reading the per-endpoint documentation.

### Money filter aliases across the obligation-flow cluster

1 Jun 2026


`/contracts/search`, `/awards/search`, and `/subawards/search` accept both `amount_min` / `amount_max` and `value_min` / `value_max` as the same filter. `/opportunities/search` accepts both forms too. Cross-endpoint scripts no longer need to remember which name lives on which surface. Sending both forms at once returns a 400.

## May 2026

### Federal subaward (FFATA) data

31 May 2026


Every federal prime contractor over the FFATA threshold must report each sub-vendor they pay more than $30K under a federal contract. That public filing is now queryable as clean JSON: map any prime contractor's supply chain, see the real federal revenue of small businesses (sub income is often the larger half), or pull every sub on one prime contract. Four new endpoints: `/api/v1/subawards/search` (filter by prime UEI, sub UEI, prime PIID, agency, NAICS, sub name), `/api/v1/subawards/{report_id}`, `/api/v1/companies/{uei}/subawards` (subs paid by a prime, with summary leaderboard), `/api/v1/companies/{uei}/prime-relationships` (primes that paid a sub, with top-10 paying-primes leaderboard). Coverage today is FY2025 + FY2026 (October 2024 onward), refreshed daily from USAspending with ~2-day source lag. Pro plan. [Subawards guide →](/subawards-api)

### Subaward context on the rest of the API

31 May 2026


On endpoints you're already calling, Pro responses now include subaward context inline so you don't need a second round-trip. A few concrete examples from prod, same keys, same auth:

- `GET /api/v1/awards/N0001918C1037` (Navy IDIQ to Northrop Grumman, $49.67M) now returns a `subaward_rollup` showing 570 downstream sub-payments to 136 distinct sub-vendors totaling $226.7M, plus the named top 5 (Lockheed Martin $22.32M, Triumph Actuation $19.54M, …). One call instead of impossible.
- `GET /api/v1/companies/E7XWKERHVVD9` (TVAR Solutions, LLC) used to show $247K won as a prime. The same call now adds `sub_revenue_total` of $4.24B (Raytheon paid them $4.20B as a sub) and a `prime_revenue_share` of 0.0001. The prime-only view was missing 99.99% of their federal revenue. Common case for SMBs.
- `GET /api/v1/exclusions/SMFQMVEAJVM9` (HM 2 Mechanical, NASA Voluntary Exclusion since 2023-08-02) used to return just the exclusion record. The same call now adds `recent_sub_payments` showing $158K received from Amentum Spaceport LLC as recently as 2025-08-19, two years into the exclusion. The compliance question goes from "are they debarred?" to "are they still being paid?" in one call.
- `/vendor-risk/{uei}` gains a top-level `subaward_exposure` block (descriptive only, not part of triage) so compliance teams read supply-chain blast radius alongside the seven existing signals. `/entities/{uei}` and `/entities/by-cage/{cage}` gain `sub_revenue_total` + `top_paying_primes` so vendor onboarding sees federal scale alongside the SAM registration.

All blocks are silently omitted on non-Pro keys; existing integrations keep working unchanged. [Subawards guide →](/subawards-api)

### Search window visible in every response

26 May 2026


`/opportunities/search` returns a top-level `window` block on every response: the plan window in days, the earliest searchable date, a `clamped` flag, and a ready-to-display `reason` string. Surface "showing results from the last 24 months" directly in your UI without computing it client-side, and distinguish a request with no date from one whose date fell outside the window. `active_only` is echoed in `filters_applied` when set, so a client can confirm the filter applied.

### Consistent parameters across endpoints

26 May 2026


A round of cross-endpoint consistency to make it easier to share code across calls. `/awards/search` accepts `date_from` / `date_to`, mirroring opportunities. `/companies/{uei}/awards` accepts `sort_by` + `sort_order`, with ascending order supported. Company and entity name searches accept queries up to 250 characters for long pasted legal names. `value_min` and `value_max` on opportunities accept `0`, matching `amount_min` / `amount_max` on awards. List endpoints expose the row array under both `data` and `results`, so a single client can read every list endpoint with one code path. Invalid sort fields return a clear `400` with the list of valid options. `/api/v1/federal-hierarchy` accepts requests with or without the trailing slash.

### Clearer guidance on UEI exclusion checks

26 May 2026


The `404` body on `GET /api/v1/exclusions/{uei}` now spells out the FAR 9.404 screening gap: ~80% of SAM exclusions are individuals or entities with no UEI, so a clean UEI lookup is not a full screen. The body points callers at `/exclusions/search?name=<legal_name>` to complete the check. Same guidance as the docs, surfaced inline where the decision happens.

### Exact response deadlines and accurate posting dates

26 May 2026


Response deadlines now include the exact closing time, not just the day, whenever SAM provides one, so you can see and sort by when a solicitation actually closes. The field stays a full UTC timestamp (ISO 8601 with offset) you can convert to any timezone; notices that list only a date are returned as that date. Posting dates now match SAM.gov's official calendar date for every notice, including those published late in the day.

### Faster search at every plan tier

26 May 2026


To keep response times steady as the dataset grew, search endpoints (`/opportunities/search`, `/awards/search`, `/export.csv`) now operate within a per-plan window: Free 90 days, Developer 12 months, Pro 24 months. It's a guardrail against the handful of scripts pulling the full database, so normal workflows aren't affected. Older date filters quietly clamp to the window (no 400s, no breaking changes). Lookups by ID (single notice, full company award history, entity profiles) keep returning records at any age. Check your effective window in `GET /api/v1/me`. [Details →](/api-guide/guides/historical-window) Need a wider window? [Email us](mailto:support@govconapi.com).

### Expanded FY2025 coverage

18 May 2026


The opportunities index now spans FY2025 (October 2024) onward in full detail. 10,542 new federal contractor profiles with award history are available to [/companies](/companies-api) and [/vendor-risk](/vendor-risk-api) callers. The `/api/v1/stats` response now includes a `coverage` field documenting the temporal scope; the same is noted at the top of [/api-guide](/api-guide).

### Contacts API

15 May 2026


`GET /api/v1/contacts/lookup` resolves federal contracting officers by name, email, or agency. Up to 5 matches per query with role, current agency, location, and last-seen date. Pro tier. [Details →](/contacts-api)

### Free federal contractor search

15 May 2026


[/federal-contractor-search](/federal-contractor-search) opens the 873K SAM entity registry as a no-account public lookup. Search by name, filter by certifications, see registration status. Top 25 results per query, with a clean upgrade path to the full API.

### Search experience upgrades

15 May 2026


Six search and list endpoints now accept `?fields=` to return only the columns you need, dropping payload size 80-95% when you only care about a few columns. `?sort_by=relevance` ranks keyword hits by match quality. `?active_only=true` filters to currently-open notices in one parameter. Bad query parameters return `400` with valid alternatives instead of silently dropping. [Response shaping →](/api-guide/guides/response-shaping)

### Enterprise tier

9 May 2026


[/enterprise](/enterprise) for high-volume customers above Pro: bulk rate limits, SLA, dedicated support, custom contracts, and direct slack/email line. Form-based inquiry instead of self-serve checkout.

### LLM-ingestible documentation

9 May 2026


[/llms.txt](/llms.txt) and [/docs/all.md](/docs/all.md) publish the full API reference as single-file plain-text bundles for Claude Code, Cursor, ChatGPT, and any AI coding tool to ingest in one shot. Vendor your own copy in `.cursor/rules` or project context.

### Capabilities tour

1 May 2026


Single page covering all 12 capabilities the API exposes: opportunities, awards, 873K SAM entities, exclusions, vendor risk, contracting-officer contacts, MCP, attachments. Each capability shows the tier required, the endpoint, a working curl example, and concrete use cases. [Browse capabilities →](/capabilities)

### SAM entity registry

1 May 2026


Companies endpoint returns a profile for any of 873,000 SAM-registered firms: legal name, certifications, full NAICS list, registration expiration, address, POC, and (when applicable) award history in a single call. [Response shape →](/api-guide/companies-profile)

### Four new SAM entity endpoints

1 May 2026


`GET /api/v1/entities/{uei}` for single entity lookup, `GET /api/v1/entities/by-cage/{cage}` for the DoD legacy bridge, `GET /api/v1/entities/search` with NAICS × state × certification filters, `GET /api/v1/entities/expiring` for renewal radar.

## April 2026

### Full-length SOW descriptions

27 Apr 2026


Notice descriptions return uncapped, including SOWs and amendments that run tens of thousands of characters. Suitable as input to AI summarization, semantic search, or full-text indexing pipelines.

### Vendor Risk Intelligence

25 Apr 2026


Seven-signal screening per UEI: exclusion status, address-cluster, name-variant cluster, individual exclusions at address, coordinated-wave membership, last-award-to-debarment timing, and dual CAGE codes. Returns a triage verdict and the underlying signal records. Single GET and bulk POST (up to 100 UEIs per request). [How it works →](/vendor-risk-api)

### Pro Company Intelligence

23 Apr 2026


`/companies/{uei}` returns total awards, top agencies, top NAICS, and recent activity. `/peers` ranks similar firms by NAICS and agency overlap. `/search` by name with pagination.

### Notice attachments in the API

23 Apr 2026


SOWs, RFP documents, and amendments are indexed alongside the notice description. Filter `has_attachments=true` on `/opportunities/search` to focus on notices with docs.

### MCP for Claude, Cursor, and any MCP client

14 Apr 2026


Dedicated page documenting the MCP package for Claude Desktop, Claude Code, Cursor, and any other MCP-compatible client. Interactive agency name crosswalk at [/agency-crosswalk](/agency-crosswalk) with 1,397 mappings between agency name variants.

### Pro launched at $39/mo

11 Apr 2026


Includes everything in Developer plus Companies API, Federal Contractor Search, Vendor Risk Intelligence, Renewal Radar, and unlimited access to GovCon Contacts. [View pricing →](/pricing)

### Delta sync endpoint

6 Apr 2026


`GET /api/v1/opportunities/delta?since=YYYY-MM-DDTHH:MM:SSZ` returns only records created or modified since the given timestamp. Lets you keep an internal index in sync without re-downloading.

### Awards search endpoint

5 Apr 2026


`GET /api/v1/awards/search` and `GET /api/v1/awards/{award_number}`. Filter by NAICS, agency, amount, date, and place of performance. [Awards guide →](/federal-contract-awards-api)

## March 2026

### Responses compress on the wire

23 Mar 2026


Every JSON response under `/api/v1/*` is gzip-compressed when your client sends `Accept-Encoding: gzip`, which most HTTP libraries do by default. Large result sets are mostly repeated field names, so they compress hard, and a thousand-row page moves a small fraction of its raw size over the connection. Nothing changes in your code: the payload is decoded before your parser sees it. Responses under a kilobyte are sent uncompressed.

### Bracket a search by when the work closes

20 Mar 2026


`due_after=YYYY-MM-DD` puts a lower bound on the response deadline, alongside `due_before`. The pair brackets a bidding window: `due_after=2026-03-25&due_before=2026-04-15` returns only what closes inside those three weeks, which is the list a weekly pipeline review actually needs. Pair it with `active_only=true` to drop what is already archived, and with `naics` to hold it to your market. Both bounds are inclusive.

### Keyword search reads the whole notice, not just the title

11 Mar 2026


`keywords=` matches the notice title, the agency name, and the full description text as one full-text search. A solicitation titled `Base Operations Support` comes back for `keywords=fluorine-free foam` when the requirement sits in the body, which is where the specifics usually live. Hyphenated terms match as written. A solicitation number still resolves exactly through the same parameter, so one filter looks up a known number and explores a market.

## February 2026

### Federal exclusions: who is barred from award

20 Feb 2026


`/api/v1/exclusions/search` queries SAM's exclusion list by entity or person name, UEI, CAGE code, excluding agency, state, classification, or exclusion type, and `/api/v1/exclusions/{uei_sam}` returns a single record. `active_only` defaults to true, so you get the exclusions in force now. Most of the list is individuals, who carry no UEI, which makes name search the real screen. Included in every plan.

### Which federal buyers are accelerating

10 Feb 2026


[/agencies](/agencies) now carries the numbers that make a buyer list actionable: how many notices each agency posted in the last week against the last month, how many of its solicitations are open for bidding right now, the median award size, and the set-aside breakdown. Read top to bottom, it tells you which agencies are picking up pace and which route work through the set-asides you hold. Public page, no key.

### Tell us what a page is missing, from the page

6 Feb 2026


Press Ctrl+Enter (Cmd+Enter on a Mac) on pages across the site and a prompt opens for a note: what you came for, what is missing, what reads wrong. Any text you had selected travels with it, so a number that looks off or a thin parameter description arrives with its context attached. No account, no ticket queue, no portal login. It reaches the people who maintain the page.

## January 2026

### A 429 tells you which ceiling you hit

16 Jan 2026


When a key runs past its rate limit, the `429` body names the ceiling it hit and the window that ceiling covers. A free key reads back its daily allowance and the hourly limit a paid plan carries; a paid key reads back its hourly number. Your client can log the exact limit, back off against the right window, and show an accurate message to whoever is waiting on the call, without hardcoding our plan table.

## December 2025

### The data patterns that decide whether your filter works

29 Dec 2025


The API guide documents the shape of the source data, not just the parameter list. The `active` field reads `Yes` on every notice, so `response_deadline` is what tells you whether something is open. Award amount and awardee populate on Award Notice records only. Combined Synopsis/Solicitation is its own notice type and a large share of biddable work, so `notice_type=Solicitation` alone leaves it out. Amendments repeat a solicitation number under new notice ids.

### Pull one procurement by its solicitation number

3 Dec 2025


`solicitation_number=` on `/api/v1/opportunities/search` matches a solicitation number exactly, case-insensitively, so a number handed to you in an email or lifted off a SAM page resolves in one call. Because every stage and every amendment carries the same solicitation number under a different notice id, what comes back is the trail of that procurement, ordered by posting date, rather than one isolated record.

### Filter by Product and Service Code

1 Dec 2025


`psc=` filters `/api/v1/opportunities/search` by the Product and Service Code the buying office assigned, alongside `naics=`. The two answer different questions: NAICS is the industry a contractor sits in, PSC is what is being bought, and plenty of markets are only clean on one of them. Both codes come back on every row, so you can see which one a notice carries before you commit a filter to it.

## November 2025

### The full API reference, plus a spec your tools can read

22 Nov 2025


[/api-guide](/api-guide) documents every endpoint, parameter, and response field with curl examples you can paste. The same surface is published as a machine-readable OpenAPI document at [/openapi.json](/openapi.json) and an interactive explorer at [/docs](/docs), so you can generate a typed client or import the API into Postman or Insomnia instead of hand-writing request code. All three describe the same live API.

### Four guides to what SAM.gov's own API does

21 Nov 2025


Reference pages on the parts of SAM.gov that eat integration time: [the API as a whole](/sam-gov-api-complete-guide), [the request ceilings and how they are counted](/sam-gov-rate-limits-reality), [the field shapes and the codes behind them](/sam-gov-data-structure-nightmare), and [the distance between what the feed returns and what a bid team needs](/sam-gov-vs-real-world-needs). Public, no key.

### The notice text itself, on every record

12 Nov 2025


SAM's own API hands you a link to a notice description, not the description. Every record in the index carries `description_text` resolved: the notice body as published, or an explicit `NO_DESCRIPTION_AVAILABLE` marker where SAM publishes none. On 12 November 2025 that is 34,458 notices with real text across 52,491 records. Feed the field straight into a summarizer or a search index, with no per-notice round trip.

### Which federal buyers are posting, without a key

7 Nov 2025


[/agencies](/agencies) is a public page built from the live index: the federal buyers posting the most contract notices, what each posted over the last week and the last month, and how many of their solicitations are open. It is generated when you load it, so the numbers are what the index holds at that moment. No key, no account, and the page links through to the API for the same data as JSON.

## October 2025

### The day's federal contract activity, in public

23 Oct 2025


[/daily](/daily) publishes what the market did that day: notices posted, what is open to bid, the most active buying agencies, the largest awards with their winners, the notice type mix, and the small-business set-aside share. No key and no account. It reads from the same index the API serves, rendered for a browser, so someone who will never write a curl command can still see what moved.

### Scope a search the way you scope a market

17 Oct 2025


The search endpoint takes the filters a capture team actually works in, combinable in one call: `naics`, `agency`, `state`, `set_aside`, `notice_type`, and bounds on posted and due dates. `state` takes either the two-letter code or the full state name. `keywords` runs across title and agency and also matches a solicitation number, so tracking one procurement and scanning a market use the same parameter.

### Ask a key what it can do

11 Oct 2025


`GET /api/v1/me` returns the plan attached to the key you are calling with, and the account it was issued to. An internal tool or a dashboard can gate its own features off that response instead of hardcoding which key belongs to which tier, and a support question starts from what the key actually is rather than a guess about which one is in the config.

### The whole notice, not a summary of it

9 Oct 2025


Search and single-notice responses return the complete structured record: award number, winner, amount, and date where the notice is an award; primary and secondary contacts with titles, emails, and phones; set-aside type and description; the full place-of-performance address; solicitation number; and the archive and link fields. Nothing is held back for a follow-up call, so one search response is enough to route and score a notice.

### Keys arrive by email, on a 14 day trial

8 Oct 2025


The free trial is 14 days at 25 requests a day. Enter an address on the site and the key is issued immediately and sent to that inbox; the response itself carries no key, so a key never sits in a browser history or a screenshot.

## September 2025

### The API opens

25 Sep 2025


Email an address, get a key back, and search SAM.gov contract opportunities as JSON. No SAM.gov account, no entity registration, no approval queue between you and the data. Published with an OpenAPI spec on the first day, so a typed client or a Postman import needs no hand-written request code.

**Have a feature request or hit a missing piece?** We read every email sent to [support@govconapi.com](mailto:support@govconapi.com).
