DEV Community

Rowcraft
Rowcraft

Posted on

Get US federal contract opportunities as clean JSON, without a SAM.gov API key

If you sell to the US government, you probably watch SAM.gov for new solicitations. The website is fine for browsing, but if you want the notices in a spreadsheet, a CRM or an alert script, you hit two walls: the official API needs a registered key with strict rate limits, and the daily extract is a 200 MB CSV with columns you have to decode.

I built a small tool that reads the official GSA Contract Opportunities extract (the one published on open.gsa.gov) and returns only the notices you filter for, as JSON or CSV. Disclosure: I made it and it is a paid tool on the Apify Store, 2 USD per 1,000 notices on the free plan, and the free monthly credit covers your first test runs.

What you can filter by: keywords (and keywords to exclude), NAICS and PSC codes, set-asides (small business, 8(a), HUBZone, SDVOSB and others), notice types, agencies, states, posting date, open notices only, award date and amount.

Example: open IT solicitations posted in the last 14 days.

{
  "naics": ["5415"],
  "noticeTypes": ["solicitation", "combined-synopsis-solicitation"],
  "openOnly": true,
  "publishedAfter": "14 days",
  "maxItems": 100
}
Enter fullscreen mode Exit fullscreen mode

Each row has the title, notice type, agency, NAICS, set-aside, response deadline, posted date, place of performance, description and the link to the notice on SAM.gov. The first rows of a real run are on the example page, you can open it without an account.

What it does not do, on purpose: it does not return contact names, e-mails or phone numbers (the contact columns are never read, and e-mails and phones inside the description text are removed). It is for finding opportunities, not for building a contact list.

Try the example: https://apify.com/rowcraft/sam-gov-contract-opportunities-scraper/examples/open-it-solicitations-last-14-days
Tool page: https://apify.com/rowcraft/sam-gov-contract-opportunities-scraper

If a filter you need is missing, tell me in the comments or in the tool's Issues tab and I will look at it.

Top comments (0)