Blog · 2026-09-21

SAM.gov vs USAspending: Which API Do You Need?

SAM.gov vs USAspending: Which API Do You Need?
Same contract, two systems, two moments in time.

SAM.gov and USAspending both hand you federal contract data for free. Pick the wrong one and you build against a wall.

SAM.gov and USAspending are two ends of the same federal contract lifecycle. SAM.gov lists open opportunities you can still bid on, and it needs an API key. USAspending reports awards already made and the money spent, and it's keyless. If you're chasing new work, you want SAM.gov. If you're researching who won and how much, you want USAspending. That one distinction decides almost every integration.

Key takeaway: SAM.gov and USAspending are two ends of one contract lifecycle. SAM.gov lists open opportunities you can still bid on and needs an API key; USAspending reports awards already made and the money spent, and is keyless. Chasing new work, use SAM.gov; researching who won and how much, use USAspending. If you need both, one normalized key covers each end.

What's the difference between SAM.gov and USAspending?

The difference is timing. SAM.gov publishes federal contract opportunities that are open right now, so you can find and bid on them. USAspending reports awards the government has already made and the dollars spent under them. Both cover federal actions over $25,000, but SAM.gov is the front of the pipeline and USAspending is the back.

Here's the whole comparison in one place.

SAM.govUSAspending
Question it answersWhat can I bid on?Who won, and how much?
DataOpen opportunities (solicitations, notices)Awards made (contracts, grants, loans) + spending
Point in timeNow and upcomingPast, back to FY2008
API keyRequired (free account)None
Request styleGET + api_key + query paramsPOST with a JSON filter body
Best forFinding and bidding on workResearch, incumbents, market sizing

Think of one contract's life. It starts as a solicitation on SAM.gov, open for bids.

Once it's awarded and money moves, it shows up on USAspending as a completed award with real dollars attached.

Same contract, two systems, two moments in time.

Should you use SAM.gov or USAspending?

Use SAM.gov when you're looking for work, and USAspending when you're doing research. SAM.gov is the authoritative source for open federal solicitations, so any bid-finding or opportunity-alert tool runs on it. USAspending is the record of completed awards and spending, so anything about who won, which agencies buy what, or how big a market is runs on that. For a specific job they're never interchangeable.

So match the tool to the question.

Building an alert that pings your team when a relevant RFP drops? That's SAM.gov. The opportunity has to be live and biddable, and only SAM.gov carries that.

Sizing a market, or checking a competitor's federal revenue? That's USAspending. You want history and dollar totals, which SAM.gov's opportunity feed doesn't give you.

Most serious GovCon tools end up using both. But they use each for the half of the problem it actually solves.

One quick test settles it. Ask whether the thing you're fetching has already happened.

If it hasn't, like a contract still open for bids, it's an opportunity, and only SAM.gov carries it. If it has, like money already awarded, it's a record, and USAspending carries it for free.

Budget for access matters too. If SAM's key wait or its 10-a-day personal cap would stall you and you only need award history, USAspending gets you moving today with no gatekeeping at all.

The one time the honest answer is both is when you research a live opportunity against its past, which is common enough to get its own section below.

Do you need an API key for SAM.gov or USAspending?

SAM.gov requires a free account and an API key; USAspending requires nothing. SAM's system-to-system keys have historically taken up to 10 business days to issue, and personal keys are throttled to roughly 10 requests a day. USAspending has no key, no account, and no published rate limit. That auth gap alone decides a lot of quick projects, because one API you can call in five minutes and the other you wait on.

The wait is the real friction with SAM.gov.

You register an account, request a key, and for a system-level key you can sit for up to two weeks before it's issued. A personal key comes faster but caps you at about 10 calls a day, which is fine for testing and useless in production.

USAspending skips all of it. You send a request and get JSON back, from a browser or a server, with no header auth at all.

If you need federal data working today and it's award or spending data, USAspending wins on access alone. If you need open opportunities, there's no way around SAM.gov's key.

How do the two APIs actually work?

They differ in shape, not just data. SAM's Get Opportunities API is a GET to api.sam.gov with your api_key and filters in the URL, capped at a one-year window and 1,000 per page. USAspending's search is a POST to spending_by_award with a nested filter body and a required sort and order.

Here's a SAM.gov opportunities call.

curl "https://api.sam.gov/opportunities/v2/search?api_key=YOUR_KEY&postedFrom=01/01/2026&postedTo=03/01/2026&limit=10"

Query string, your key, a required posted-date window. Simple GET.

Here's the USAspending equivalent for awards.

curl -X POST "https://api.usaspending.gov/api/v2/search/spending_by_award/" \
  -H "Content-Type: application/json" \
  -d '{"filters":{"award_type_codes":["A","B","C","D"]},"fields":["Award ID","Recipient Name","Award Amount"],"sort":"Award Amount","order":"desc","limit":10}'

No key, but a nested filter body and a mandatory sort. Leave the sort out and it 400s.

The ceilings differ too. USAspending caps a search at 10,000 records, so a big pull moves to its bulk download endpoint, while SAM caps a page at 1,000 and a query at a one-year window.

So even once you know which data you want, the two APIs ask you to write very different client code.

What does each API actually return?

Their payloads reflect their jobs. A SAM.gov opportunity gives you the notice: a notice ID, title, solicitation number, NAICS and set-aside codes, the response deadline, a point of contact, and links to the full documents. A USAspending award gives you the outcome: recipient, award amount, awarding agency, start and end dates, and place of performance. One describes a chance to bid; the other describes a deal that closed.

Notice the shape of each.

SAM.gov is built for action. Its fields tell a bidder what the work is, whether they qualify through the set-aside, and when the clock runs out.

USAspending is built for accounting. Its fields tell an analyst who got paid, how much, and by which agency.

If your app needs a deadline and a contact, that's SAM.gov, and USAspending simply doesn't carry it. If your app needs a dollar amount and a recipient, that's USAspending, and a live SAM opportunity may not have an award attached yet.

Match your fields to the source before you design the schema, not after.

Does USAspending get its data from SAM.gov?

Yes, mostly. USAspending pulls federal contract data from the procurement system behind SAM.gov (FPDS-NG) on a daily cycle, so its award records are downstream of SAM by design. That's why USAspending is strong for trends but lacks SAM's field-level contract detail, and why a brand-new award appears on SAM first and on USAspending a little later.

This lineage got more important in 2026.

The standalone FPDS.gov public search site was decommissioned on February 24, 2026. Contract award records, subcontracting reports, and the old ezSearch all moved into SAM.gov, which is now the authoritative home for federal contract award records.

The underlying data system, FPDS-NG, still runs behind the scenes and still feeds USAspending daily. So the plumbing didn't change, only the public front door did.

For a developer, the takeaway is simple. SAM.gov is now both the opportunities source and the authoritative award-record source, while USAspending remains the free, keyless, analysis-friendly copy of the award data.

Which source has fresher data?

SAM.gov is fresher, USAspending lags by design. SAM posts solicitations in real time and, since the 2026 FPDS move, holds award records first. USAspending pulls those award records from FPDS-NG on a daily cycle, and a fully reconciled award can take a couple of weeks to surface. If freshness is critical, read SAM.gov; if daily-current is enough, USAspending is fine.

This matters more for some apps than others.

An opportunity-alert tool lives or dies on freshness. A solicitation that shows up a day late is a bid you missed, so that tool has to read SAM.gov directly.

A market-analysis dashboard doesn't care about a day. Yesterday's spending totals are as useful as this morning's, so USAspending's daily cadence is plenty.

Know which camp your product is in. If a few hours of lag would break it, you're on SAM.gov whether you like the key wait or not.

When should you use both SAM.gov and USAspending together?

You use both when you're sizing up a specific opportunity. Find the open solicitation on SAM.gov, then look up the incumbent and past awards for that kind of work on USAspending to see who you're up against and what it paid. Opportunity plus history is the real GovCon workflow, and it's exactly why teams integrate both APIs instead of picking one.

Recompete research is the clearest example.

A contract you want is up for rebid. SAM.gov tells you it's open and when responses are due.

USAspending tells you who holds it now, how much they've been paid, and which agency signs the checks. That's your competitive picture before you write a word of the proposal.

One API finds the door. The other tells you who's already inside. You need both to walk in prepared.

Where does Grants.gov fit in?

Grants.gov is the third sibling. It lists federal grant opportunities the way SAM.gov lists contract opportunities, so if you're after funding rather than contracts, Grants.gov is your front door, and USAspending still holds the awarded-grant records afterward. The full picture is two opportunity sources, SAM.gov for contracts and Grants.gov for grants, feeding one award record on USAspending.

People conflate all three constantly.

SAM.gov and Grants.gov are both opportunity feeds, just for different money. SAM is contracts you deliver work for; Grants.gov is grants you apply for.

USAspending sits downstream of both. Contracts and grants alike land there as awards once the money is committed.

So "which federal API" isn't always SAM.gov vs USAspending. If your users chase grant funding, the real front door is Grants.gov, and USAspending is still the history.

How do I get SAM.gov and USAspending as one clean JSON feed?

You put both behind one key with a normalized wrapper. Edgrapi's /v1/opportunities reads SAM.gov and /v1/awards reads USAspending, both as flat JSON over a plain GET on a single Edgrapi key. Edgrapi holds the SAM key server-side, so you skip SAM's signup and the 10-day wait, and you skip USAspending's POST-body plumbing, hitting both ends of the lifecycle with one integration.

Here's both, on the same key.

# open opportunities (SAM.gov, no SAM key needed)
curl "https://api.edgrapi.com/v1/opportunities?naics=541512&limit=10" \
  -H "Authorization: Bearer YOUR_EDGRAPI_KEY"

# past awards (USAspending)
curl "https://api.edgrapi.com/v1/awards?category=contracts&recipient=Booz+Allen&limit=10" \
  -H "Authorization: Bearer YOUR_EDGRAPI_KEY"

Same key, same flat JSON shape, both ends of the pipeline. There are matching MCP tools, get_opportunities and get_awards, so an agent can pull a solicitation and its award history in one session.

Be clear about the trade. Edgrapi is a paid, credit-metered API, not a free government endpoint, and the data is the same public-domain SAM.gov and USAspending data at the same freshness (USAspending is still the daily-downstream copy). What you pay for is one key across both, one schema, and not maintaining two very different integrations. One request pattern, whichever end of the pipeline you're standing on.

Pick by the question you're asking

Don't choose SAM.gov vs USAspending by which is more popular. Choose by the question in front of you. Chasing open work you can bid on, use SAM.gov and get its key. Researching who won and how the money moved, use USAspending and skip the signup entirely.

If your product needs both, and most real GovCon tools do, you have two choices. Integrate and maintain two very different APIs, one keyed GET with a 10-day wait and one keyless POST with a filter language, or hit both through a single normalized key. Either way, the winning move is knowing which end of the contract lifecycle you're standing on before you write the first request.

Frequently asked questions

What's the difference between SAM.gov and USAspending?

SAM.gov lists open federal contract opportunities you can still bid on, and requires an API key. USAspending reports awards the government already made and the money spent, and is keyless. Both cover federal actions over $25,000, but SAM.gov is the front of the contract lifecycle (solicitations) and USAspending is the back (completed awards and outlays). Use SAM.gov to find work, USAspending to research it.

Should I use the SAM.gov API or the USAspending API?

Use the SAM.gov API when you need open, biddable opportunities, like an RFP-alert tool, since it's the authoritative source for live solicitations. Use the USAspending API when you need past awards or spending analysis, like market sizing or incumbent research, since it's the free record of completed awards. Many GovCon tools use both, one for finding work and one for researching it.

Does USAspending pull its data from SAM.gov?

Yes. USAspending pulls federal contract data from FPDS-NG, the procurement system behind SAM.gov, on a daily cycle, so its award records are downstream of SAM. That makes USAspending good for trends and totals but lighter on SAM's field-level contract detail, and it means a new award shows on SAM.gov first and on USAspending a little later.

Do I need an API key for SAM.gov and USAspending?

You need a key for SAM.gov but not for USAspending. SAM.gov requires a free account plus an API key, and system-level keys can take up to 10 business days to issue. USAspending needs no account, no key, and has no published rate limit, so you can call it immediately. That access gap often decides which one a quick project starts with.

Is SAM.gov the same as FPDS now?

Effectively, for public searching, yes. The standalone FPDS.gov public site was decommissioned on February 24, 2026, and contract award records moved into SAM.gov, which is now the authoritative place to search federal contract awards. The underlying FPDS-NG data system still runs behind SAM.gov and still feeds USAspending daily, so only the public front end changed.

How do I get SAM.gov and USAspending data together as JSON?

Either integrate both APIs yourself (a keyed GET for SAM.gov, a keyless POST for USAspending) or use a normalized wrapper. Edgrapi's /v1/opportunities reads SAM.gov and /v1/awards reads USAspending, both as flat JSON over a plain GET on one key, with the SAM key held server-side. It's credit-metered rather than free, but it's one schema and one integration for both ends of the lifecycle.

Get a free API key