Home / APIs / Federal contracts
Federal contracts

SAM.gov API: federal contract opportunities as JSON, no 10 calls a day limit

Every open federal contract opportunity on SAM.gov as JSON, refreshed daily: search by keyword, NAICS, set-aside, state and deadline, with daily alerts.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/sam/opportunities?naics=541512&setAside=SBA&size=2&description=false"
import os, requests

r = requests.get(
    "https://secfeedapi.com/v1/sam/opportunities",
    params={'naics': '541512', 'setAside': 'SBA', 'size': '2', 'description': 'false'},
    headers={"Authorization": f"Bearer {os.environ['SECFEED_KEY']}"},
)
print(r.json())
{
  "total": {
    "value": 57,
    "relation": "eq"
  },
  "opportunities": [
    {
      "noticeId": "91d23c14cbd34e3bac2d094052af945a",
      "title": "Polaris GWAC Small Business Pool",
      "solicitationNumber": "47QTCB22R0001",
      "department": "GENERAL SERVICES ADMINISTRATION",
      "cgac": "047",
      "subTier": "FEDERAL ACQUISITION SERVICE",
      "fpdsCode": "4732",
      "office": "GSA/FAS ITC OFFICE OF ACQUISITION OPERATIONS, INTERAGENCY CONTRACTS",
      "aacCode": "47QTCB",
      "postedDate": "2026-10-16 14:40:29",
      "type": "Solicitation",
      "baseType": "Solicitation",
      "archiveType": "autocustom",
      "archiveDate": "2027-12-31",
      "setAsideCode": "SBA",
      "setAside": "Small Business Set Aside - Total",
      "responseDeadline": "2022-10-07T16:00:00-04:00",
      "naicsCode": "541512",
      "classificationCode": "DA01",
      "awardNumber": null,
      "awardDate": null,
      "awardAmount": null,
      "awardee": null,
      "organizationType": "OFFICE",
      "additionalInfoLink": null,
      "samUrl": "https://sam.gov/workspace/contract/opp/91d23c14cbd34e3bac2d094052af945a/view",
      "lastSeen": "2026-10-28",
      "firstSeen": "2026-10-28T00:00:00Z",
      "active": true,
      "placeOfPerformance": {
        "street": null,
        "city": null,
        "state": null,
        "zip": null,
        "country": null
      },
      "officeAddress": {
        "city": "WASHINGTON",
        "state": "DC",
        "zip": "20405",
        "country": "USA"
      },
      "contacts": [
        {
          "role": "primary",
          "title": null,
          "fullname": "Lisa Yimbo, Contracting Officer",
          "email": "Polaris@gsa.gov",
          "phone": null,
          "fax": null
        }
      ]
    },
    {
      "noticeId": "cf5b4f8a7340414486f8b96f97927c8b",
      "title": "Polaris GWAC Small Business Pool",
      "solicitationNumber": "47QTCB22R0001",
      "department": "GENERAL SERVICES ADMINISTRATION",
      "cgac": "047",
      "subTier": "FEDERAL ACQUISITION SERVICE",
      "fpdsCode": "4732",
      "office": "GSA/FAS ITC OFFICE OF ACQUISITION OPERATIONS, INTERAGENCY CONTRACTS",
      "aacCode": "47QTCB",
  ...

Overview

SAM.gov is where federal agencies post what they want to buy: solicitations, presolicitations, sources sought and award notices. Its own API needs a key that expires every 90 days, and a personal key without an entity role gets 10 requests a day, which runs out after a few pages of one search.

SecFeed loads SAM.gov's public daily extract of every open notice into its own database, so searches are not rationed. Filter by keyword, NAICS code or prefix, set-aside type, place of performance, agency and response deadline, or save a search and receive new matching notices at your webhook after each daily refresh.

What you get

Built for developers who would rather not parse EDGAR.

No daily call ration

Searches run on SecFeed's copy of the daily extract, not on a 10 calls a day personal key.

Full text search

Keywords match title and description, with word* for prefixes.

Set-aside and NAICS filters

SBA, SDVOSB, 8(a), WOSB and HUBZone codes; a NAICS prefix like 5415 covers every code under it.

Alerts

Save a search once; new notices that match arrive at your https webhook every morning.

Endpoints

Authenticate with Authorization: Bearer YOUR_KEY. Responses are JSON.

GET/v1/sam/opportunitiesReference →

Open federal contract opportunities from SAM.gov, refreshed daily: solicitations, presolicitations, sources sought and award notices.

Parameters: q, naics (6 digits or a prefix), setAside, state, type, psc, solicitationNumber, department, awardee, postedFrom, postedTo, deadlineFrom, deadlineTo, firstSeenFrom, active, sort=deadline, description=false, from, size (max 100)

GET/v1/sam/opportunityReference →

One SAM.gov notice with contacts, place of performance and full description.

Parameters: noticeId

GET/v1/sam/alertsReference →

Your saved SAM.gov alerts with when each last sent and its status.

Response fields

The main fields in every result. The raw filing data is always one level down.

FieldMeaning
noticeId, solicitationNumber, title, typeThe notice, its solicitation number and notice type.
department, subTier, officeThe buying agency down to the contracting office.
naicsCode, classificationCode, setAsideCodeIndustry code, product or service code and set-aside type.
postedDate, responseDeadline, firstSeenWhen it was posted, when responses are due and when SecFeed first saw it.
placeOfPerformance, contacts[]Where the work happens and the contracting officers to contact.
awardNumber, awardAmount, awardeeFilled in on award notices.

Use cases

Guides

FAQ

Do I need my own SAM.gov API key?

No. SecFeed loads the public daily extract that SAM.gov publishes, so your SecFeed key is the only key you need.

How fresh is the data?

SAM.gov publishes its extract once a day, around 03:30 UTC. SecFeed loads it at 04:15 UTC and checks again at 10:15 UTC.

Does it include closed or archived notices?

The extract holds open notices. SecFeed keeps every notice it has loaded, so history builds up from October 2026 onward.

Try the SAM.gov Opportunities API free

Free key, no card, no sales call.

Get free API key →