What the SAM.gov opportunities API returns, what it leaves to you, and how much of a contracting workflow you can build on it alone.
| Requirement | SAM.gov Provides | Notes |
|---|---|---|
| Rate limits | 10-1,000/day | 1,000/day requires entity registration |
| Descriptions | Via document download | Requires additional API calls |
| Setup time | Up to 10 business days | For entity registration (public access is instant) |
Four jobs a contracting workflow has to do, and what each one costs against the API's own limits.
Monitoring means one query per combination you care about. The API filters a search by NAICS, state, set-aside and posting window, but each distinct combination is its own request, and the basic tier allows 10 requests per day in total. The budget is not measured in notices returned, it is measured in how many separate questions you ask.
The SAM.gov API returns notice metadata (title, agency, dates, NAICS) but not the actual requirement description. To make a bid/no-bid decision, you need the full text. SAM.gov provides a URL to the description, but fetching it is a separate step for each opportunity. If you're reviewing 20 opportunities a day, that's 20 additional requests just for descriptions.
Contractors want to know who won similar work, at what price, and when. SAM.gov publishes Award Notices with this data (awardee name, amount, date), but they're separate records from the original solicitation. Connecting a solicitation to its award means searching by solicitation number and filtering by notice_type=Award Notice.
Before teaming with another company or hiring a subcontractor, you're required to check SAM.gov's exclusions list (FAR 9.405). The exclusions data is on a completely separate API endpoint with a different schema. If your workflow needs both opportunities and exclusions, you're integrating two different APIs.
SAM.gov uses notice_type to indicate where a notice is in its lifecycle. This matters because different types mean different things for your business:
| Notice Type | What It Means | Can You Bid? |
|---|---|---|
| Presolicitation | Agency plans to issue a solicitation. Early signal. | Not yet. Watch for the solicitation. |
| Sources Sought | Agency is doing market research. Wants to know who can do the work. | No, but respond to show interest. |
| Solicitation | Formal request for proposals/quotes. | Yes, before the response deadline. |
| Combined Synopsis/Solicitation | Combined notice and solicitation (most common type). | Yes, before the response deadline. |
| Award Notice | Contract has been awarded. Shows winner and amount. | No. Contract is awarded. |
| Special Notice | Announcements outside the solicitation sequence: industry days, draft documents for comment, program news, cancellations. | No. Read it for the event or document it points to. |
notice_type=Solicitation or notice_type=Combined Synopsis/Solicitation where the response_deadline is in the future. Don't rely on the active field. SAM.gov sets it to "Yes" on every record we index, so it does not separate open from closed.
| What you need | SAM.gov API | Notes |
|---|---|---|
| Notice metadata (title, agency, dates) | Yes | Returned inline on every notice. No second call. |
| Full requirement descriptions | Not in the API response | API returns a URL. You fetch it separately. |
| Contact info (contracting officer) | Yes, when provided | Whatever the posting agency put on that notice. Scoped to the notice, not to the office or the person deciding. |
| Award data (winner, amount) | Yes, on Award Notices | Separate record from the solicitation. |
| Exclusions (debarred entities) | Separate API | Different endpoint, different schema. |
| Attachments (SOWs, RFP docs) | Via resource links | URLs provided, you download separately. |
| Historical data (older notices) | Limited | API surfaces recent/modified notices. Long-running vehicles from prior years may not appear. |
The description and contact rows are the two that cost the most to close yourself. Our index carries the full notice description for every notice since October 2024, alongside the notice records, and GovCon Contacts carries 37,000+ contracting officers and buyers with verified email and phone.
Start here. Register for an API key, run your real queries against it, and see whether 10 requests a day covers them. If it does not, entity registration is free and raises the ceiling to 1,000/day. What each tier allows.
A key issued at signup, 1,000 / hour instead of 10 a day, and the fields SAM.gov leaves out of the notice response already joined in. GovCon API from $19/mo, against the pipeline you would otherwise build and keep running.
Web dashboards and analyst services built on the same public data. A different purchase from an API key: you are buying screens and support rather than a query surface, so the comparison is which of the two your workflow needs.
Help improve this guide for fellow developers. Press Ctrl+Enter to share issues you encountered, missing information, or suggestions.