GovCon API

Changelog

New endpoints, expanded coverage, and product launches. What shipped, when.

July 2026

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

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 →

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

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 →

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

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 →

Search inside the attached documents, not just the notice

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 →

Free CAGE and UEI lookup, no account

Resolve one federal contractor identifier to its current SAM record in the browser, no key required. /cage-code-lookup takes a 5-character CAGE code, /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.

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

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 →

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

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 →

Market Pulse: federal market intelligence by NAICS

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 →

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

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

/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

/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. Previously the value had to match the stored full agency name exactly, so the abbreviation everyone actually types returned nothing. Pro plan.

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

Every dataset we serve now has one page, /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 →

Recompete Watchlist API

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 →

Teaming Partner Finder API

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 →

Report a wrong response from the response

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 signed link is valid for 24 hours and bound to the customer who generated it, so don't paste a response containing this field into a public Slack or issue tracker.

Federal prime contracts (FPDS) API

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 →

FPDS contract context on the rest of the API

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 →

Dense subaward enrichment on contract detail

/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

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

/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

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 →

Subaward context on the rest of the API

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 →

Search window visible in every response

/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

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

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

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

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 → Need a wider window? Email us.

Expanded FY2025 coverage

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 and /vendor-risk 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.

Enterprise tier

/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.

Contacts API

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 →

LLM-ingestible documentation

/llms.txt and /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.

Free 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

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 →

Capabilities tour

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 →

Late April 2026

SAM entity registry

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 →

Four new SAM entity endpoints

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.

Vendor Risk Intelligence

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 →

Pro Company Intelligence

/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

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

Full-length SOW descriptions

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.

Mid April 2026

MCP for Claude, Cursor, and any MCP client

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

Pro launched at $39/mo

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

Early April 2026

Delta sync endpoint

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

GET /api/v1/awards/search and GET /api/v1/awards/{award_number}. Filter by NAICS, agency, amount, date, and place of performance. Awards guide →

Have a feature request or hit a missing piece?

We read every email.

Email [email protected]