# SAM.gov Federal Contract Opportunities Tracker (No API Key) (`intenal_builds/federal-contract-opportunities-tracker`) Actor

Search active U.S. federal contract opportunities from SAM.gov's official public data extract. Filter by NAICS, set-aside, agency, state, keywords, dates, deadline and award value. No API key needed.

- **URL**: https://apify.com/intenal_builds/federal-contract-opportunities-tracker.md
- **Developed by:** [Jaydan Eaton](https://apify.com/intenal_builds) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## SAM.gov Federal Contract Opportunities Tracker (No API Key)

Find U.S. federal government contract opportunities and awards from **SAM.gov** without registering for an API key and without the API's rate limits. Filter more than 70,000 active notices by **NAICS, set-aside, agency, state, keywords, posting date, open deadline and award value**. You get clean JSON, CSV or Excel ready for your CRM, Slack alerts or bid pipeline.

### Why this actor

- **Official, ToS-safe source.** It reads SAM.gov's public *Contract Opportunities* full data extract, which the government publishes for data.gov reuse. It doesn't scrape the website, bypass anything or need logins or keys.
- **Reliable.** Downloads retry with exponential backoff and the file is checked for completeness. Mixed-encoding text is decoded correctly, and duplicate notice IDs are removed (only the latest version is kept).
- **Fast.** It scans the entire active notice set in seconds and outputs results newest first.
- **Clean schema.** Field names are consistent, award amounts are numbers, deadlines are in ISO 8601, and set-asides are normalized into a list.

### Who uses it

- Small businesses and GovCon BD teams looking for bids that match their NAICS and set-aside status (8(a), SDVOSB, WOSB, HUBZone, Total Small Business).
- Consultants and proposal writers building daily lead lists.
- Market researchers tracking award winners, values and agencies.
- AI agents and MCP workflows that need structured federal procurement data.

### Example inputs

**Open small-business IT solicitations:**

```json
{"naicsCodes":["5415"],"setAsideCodes":["SBA"],"openOnly":true,"keywords":["software","cloud","cyber"],"postedFrom":"2026-09-01"}
```

**VA awards in Texas over $100k:**

```json
{"noticeTypes":["Award Notice"],"agencies":["VETERANS"],"states":["TX"],"minAwardUsd":100000,"requireAwardValue":true}
```

### Filters

| Filter | What it does |
|---|---|
| `keywords` / `excludeKeywords` | Matches any listed term in the title or description |
| `naicsCodes` | Prefix match: `5415` covers all computer services |
| `setAsideCodes` | SBA, 8A, SDVOSBC, WOSB, EDWOSB, HZC, SBP, or NONE |
| `noticeTypes` | Solicitation, Combined Synopsis/Solicitation, Presolicitation, Sources Sought, Award Notice, and others |
| `agencies` | Substring match on department, sub-tier or office |
| `states` | Place-of-performance state |
| `postedFrom` / `postedTo` | Posted-date window (defaults to the last 7 days) |
| `openOnly` | Only notices whose response deadline is still in the future |
| `minAwardUsd` / `maxAwardUsd` / `requireAwardValue` | Award value filters |
| `includeDescription` / `descriptionMaxChars` | Controls the description text |
| `maxResults` | Caps the output and your cost |

### Output fields

- Notice ID, title, solicitation number and notice type.
- Agency, sub-tier and office.
- Posted date, response deadline and archive date.
- NAICS and PSC codes.
- Set-aside codes and set-aside name.
- Place of performance and office location.
- Award number, date, amount and awardee.
- Primary and secondary contacts.
- SAM.gov URL, additional-info link and an optional description.

Each run also saves a `RUN_SUMMARY` record in its key-value store.

### Pricing (pay per event)

- **`result`: $0.002 per notice ($2 per 1,000)**, plus Apify's default actor-start fee.
- You pay only for the notices you receive, and `maxResults` caps your spend.

### Data freshness and notes

- SAM.gov refreshes the public extract daily, so results lag the live site by up to about a day.
- The extract contains *active* notices only. Archived history isn't included.
- Data comes from the U.S. Government. Always confirm details on SAM.gov before bidding.
- This actor is not affiliated with GSA or SAM.gov.

# Actor input Schema

## `keywords` (type: `array`):

Match notices whose title or description contains ANY of these words/phrases (case-insensitive). Leave empty for all.

## `excludeKeywords` (type: `array`):

Drop notices whose title or description contains any of these words/phrases.

## `naicsCodes` (type: `array`):

Match NAICS codes by prefix, e.g. '5415' matches 541511, 541512. Leave empty for all industries.

## `setAsideCodes` (type: `array`):

SAM.gov set-aside codes, e.g. SBA (Total Small Business), 8A, SDVOSBC, WOSB, EDWOSB, HZC, SBP. Use NONE for no set-aside.

## `noticeTypes` (type: `array`):

e.g. Solicitation, Combined Synopsis/Solicitation, Presolicitation, Sources Sought, Special Notice, Award Notice. Leave empty for all.

## `agencies` (type: `array`):

Case-insensitive match against department, sub-tier or office name, e.g. 'VETERANS AFFAIRS', 'ARMY', 'FOREST SERVICE'.

## `states` (type: `array`):

Two-letter state codes for place of performance, e.g. TX, CA. Leave empty for all.

## `postedFrom` (type: `string`):

YYYY-MM-DD. Defaults to 7 days ago. Use a far past date for all active notices.

## `postedTo` (type: `string`):

YYYY-MM-DD. Defaults to no upper bound.

## `openOnly` (type: `boolean`):

If true, keep only notices whose response deadline is in the future (notices with no deadline are dropped).

## `minAwardUsd` (type: `integer`):

Only for Award Notices: keep awards at or above this dollar value. Non-award notices pass unaffected unless 'Require award value' is set.

## `maxAwardUsd` (type: `integer`):

Only for Award Notices: keep awards at or below this dollar value.

## `requireAwardValue` (type: `boolean`):

If true, drop notices that have no award amount (useful for award-intelligence use cases).

## `includeDescription` (type: `boolean`):

Include the notice description (can be long).

## `descriptionMaxChars` (type: `integer`):

Truncate descriptions to this length. 0 = no limit.

## `maxResults` (type: `integer`):

Maximum notices to output (you are charged per result). Sorted newest first.

## Actor input object example

```json
{
  "keywords": [],
  "excludeKeywords": [],
  "naicsCodes": [],
  "setAsideCodes": [],
  "noticeTypes": [],
  "agencies": [],
  "states": [],
  "openOnly": false,
  "requireAwardValue": false,
  "includeDescription": true,
  "descriptionMaxChars": 2000,
  "maxResults": 200
}
```

# Actor output Schema

## `results` (type: `string`):

Federal contract notices matching your filters, one item per notice.

## `runSummary` (type: `string`):

Counts of notices scanned, matched and output.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {};

// Run the Actor and wait for it to finish
const run = await client.actor("intenal_builds/federal-contract-opportunities-tracker").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {}

# Run the Actor and wait for it to finish
run = client.actor("intenal_builds/federal-contract-opportunities-tracker").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{}' |
apify call intenal_builds/federal-contract-opportunities-tracker --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,intenal_builds/federal-contract-opportunities-tracker"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/CACzOXzIvnDYRxfFJ/builds/2eEe3ci5oclKgKX6y/openapi.json
