One API call. Pass a UEI, get the contractor's full federal-award profile: total contracts won, total dollars, top agencies, NAICS spread, recent activity, and a list of similar companies by NAICS + agency overlap. The aggregations happen server-side, so you don't write the SQL.
Each one is supported by the API today. None are guaranteed to fit your situation; they're meant to ground the value of the endpoint in concrete jobs to be done.
Job: back-fill federal-contracting context (total awards, top agencies, last-award-date, recent activity) onto every contractor record in your CRM, refreshed on a schedule.
How: one GET /api/v1/companies/{uei} per record returns the structured rollup. Server-side latency is fast enough for batch enrichment (p50 ~30ms, p95 under a second), so thousands of UEIs in a few minutes is reasonable.
Job: for any known competitor, find similar companies competing in the same NAICS + agencies. Useful for "who else is in this lane?" discovery.
How: GET /api/v1/companies/{uei}/peers returns the top N companies ranked by a NAICS-overlap + agency-overlap similarity score, with the underlying overlap counts so you can re-rank if you want.
Job: a candidate sub or teaming partner says they have federal experience. You want a quick, structured second-look at whether they've actually won contracts, with whom, in what NAICS, and how recently.
How: GET /api/v1/companies/{uei} for the profile, /awards for line items if you need them. Pair with Vendor Risk Intelligence in the same call for exclusion status, address clusters, and name-variant clusters.
Job: build a target list of contractors active in your space (specific NAICS, specific agencies) and segment by recent activity (e.g., who has been quiet for 12 months and might be vulnerable on a recompete).
How: two-step, since the search endpoint takes a name (not a NAICS+agency combo). First call GET /api/v1/opportunities/search?naics=541512&agency=HHS¬ice_type=Award+Notice&date_from=... to find recent awardees. Collect the unique award_uei_sam values. Then call /api/v1/companies/{uei} per UEI to get the rollup, and filter client-side on awards_last_12mo.
Job: for an investor evaluating a federal-services company, confirm how much of the company's claimed federal revenue is visible in the public award-notice record.
How: profile endpoint returns total_value across observable award notices since Q4 2024. Use /awards for line-item detail. Cross-reference against the company's claimed numbers. (Caveat: subcontract revenue, modifications, and pre-2024 history aren't in this number; see Limits.)
One GET /api/v1/companies/{uei} call returns:
| Field | What it is | Source |
|---|---|---|
uei | 12-char SAM Unique Entity Identifier (echoed back) | request |
name | Most-common spelling of the awardee name across their awards | MODE() WITHIN GROUP over awardee_name |
total_awards | Number of distinct award notices | opportunity-table count |
total_value | Sum of all award_amount values | SUM(award_amount) |
avg_value | Mean per-award amount | AVG(award_amount) |
first_award_date | Earliest award date we have | MIN(award_date) |
last_award_date | Most-recent award date | MAX(award_date) |
awards_last_12mo | Recent activity signal: count in trailing 365 days | filtered count |
awards_last_90d | Even fresher activity signal: trailing 90 days | filtered count |
top_naics | Their top 10 NAICS codes by count + value | unnested NAICS array, grouped |
top_agencies | Their top departments (top-level of agency path) by count + value | grouped on split_part(agency, '.', 1) |
primary_state | Most-common awardee_state_code | MODE |
primary_city | Most-common awardee_city_name | MODE |
Plus the /awards endpoint gives you the underlying line items (paginated), and /peers gives you the similarity-ranked alternatives.
All four require a Pro Bundle key. Auth: Authorization: Bearer gca_.... Non-Pro keys get 402 (Payment Required); unauth gets 403.
import requests, os
KEY = os.environ["GOVCONAPI_KEY"]
H = {"Authorization": f"Bearer {KEY}"}
BASE = "https://govconapi.com/api/v1"
# Start from a name in your CRM
search = requests.get(f"{BASE}/companies/search",
params={"q": "Booz Allen Hamilton", "limit": 5}, headers=H).json()
uei = search["results"][0]["uei"] # JCBMLGPE6Z71
# Pull the aggregated profile (one call)
profile = requests.get(f"{BASE}/companies/{uei}", headers=H).json()
print(f"{profile['name']}")
print(f" Total: {profile['total_awards']} awards / ${profile['total_value']:,.0f}")
print(f" Last 12 months: {profile['awards_last_12mo']} awards")
print(f" Top agency: {profile['top_agencies'][0]}")
print(f" Top NAICS: {profile['top_naics'][0]}")
# Award line items (for a sub-table in your CRM)
awards = requests.get(f"{BASE}/companies/{uei}/awards", headers=H, params={"page": 1}).json()
# Peers (for competitive view)
peers = requests.get(f"{BASE}/companies/{uei}/peers", headers=H, params={"limit": 10}).json()
for p in peers["peers"]:
print(f" similar: {p['name']:35} similarity={p['similarity_score']}")
JCBMLGPE6Z71) — large prime9 award notices since launch, total $1.6B, average $179M per award, last award 2026-03-30. Top agency: Department of Defense ($200M, 2 awards). Top NAICS: 541512 (Computer Systems Design Services).
Use case: a financial-research analyst evaluating a portfolio company that competes with Booz Allen wants the spread of agencies + NAICS to model overlap. One API call replaces an afternoon of SAM.gov clicking.
XX2WFHJEFB45) — high-volume small biz848 award notices, total $226M. Their pattern is opposite of Booz Allen: many small awards, not few large ones. Useful for understanding which contracting vehicle a vendor lives on.
ZJ5TDRYAP9P8) — mid-size services firm4 awards, total $10M, average $2.5M per award. Indicates a teaming-partner profile (mid-size deal flow, specific NAICS niche). Compare side-by-side to a different small biz via the /peers endpoint.
| Approach | Setup time | Per-call latency | Aggregations | Maintenance |
|---|---|---|---|---|
| SAM.gov UI | None | Manual, several seconds per record | None (you do it in your head) | None, but doesn't scale |
| SAM.gov API direct | ~2 weeks to register for the 1,000/day rate | Variable, plus daily-limit + hourly-throttle behavior | You write the SQL on raw data | Throttling can interrupt batch runs |
| USASpending bulk download | ~Days (build the CSV ingest pipeline) | Fast once loaded | You write the SQL | Multi-GB CSV refresh on a schedule you maintain |
| This API | Sign up + paste API key | p50 ~30ms, p95 under 1s server-side (measured from api_usage_log; end-to-end depends on your network) | Server-side, returned ready | None |
The honest case: if you're going to query 50 UEIs across your career, do it manually on SAM.gov. If you're enriching a CRM with thousands of records, building competitive intelligence, or running this query as part of a procurement workflow, you want the aggregations server-side.
total_value here is what their public award notices add up to. It is not their total federal revenue (which can include subcontracts, modifications, and intra-agency work not visible in award notices)./awards and aggregate the set_aside_type field client-side.The Companies API is part of the Pro Bundle ($39/mo), which also includes:
How fresh is the data?
Award notices are kept in sync with SAM.gov on a sub-daily cadence. Profile aggregations are computed at request time, so they reflect the latest available data the moment you call the endpoint.
Can I get the underlying award rows for accounting / audit?
Yes, GET /api/v1/companies/{uei}/awards?page=N returns paginated rows with notice_id, solicitation_number, award_date, award_amount, agency, naics, and place-of-performance fields. From there you can join back to /api/v1/opportunities/{notice_id} for the full notice (description, attachments, contact info).
What's the difference between this and Vendor Risk?
This endpoint is about past performance: who they've contracted with and how much. Vendor Risk is about fraud-pattern signals: are they on the exclusion list, do they share an address with debarred entities, were they part of a coordinated enforcement action. Different jobs to be done. Both included in Pro Bundle. Both can be called for the same UEI.
How does the peers endpoint compute "similar"?
A composite similarity score based on NAICS overlap + agency overlap. NAICS match counts more than agency match (NAICS is the harder constraint). The endpoint returns the top N peers ranked by score, with the underlying overlap counts so you can re-rank if you want.
Can I use this without the API, just looking at the page?
The free public Vendor Risk lookup handles one-off vendor-screening questions without an API key. There isn't currently a free public Companies lookup; if you want one, email and let us know.
What if my contractor isn't in your data?
We have data on 11,275 unique award winners (UEIs that have appeared on at least one Award Notice since our ingest started in Q4 2024). If a contractor has only won contracts before 2024, or has registered in SAM but never won an award, they won't show up in /companies/*. They will show up in /exclusions/* if debarred. Use sam.gov entity search to verify any UEI exists.
Is the data accurate?
We mirror SAM.gov award notices. If SAM publishes the data, we have it. If SAM has an upstream data quality issue (mistyped agency name, missing award amount, etc.), so do we. We do apply some normalization and filtering on top of the raw SAM feed to avoid known SAM data-quality artifacts (records that SAM's own UI shows as inactive but their export still lists as active, for example). Garbage-in-garbage-out is mitigated where we can; we don't pretend to fix what SAM publishes.
How do I cancel?
Stripe Customer Portal. One click. No retention dance.
Last updated: April 2026 · API reference · Vendor Risk API · Research a federal contractor · Pricing · Questions