# SAM.gov Contract Opportunities: Open Federal Bids, No API Key (`pandadad0214/sam-gov-opportunities`) Actor

Use this to find open federal contract opportunities from the official SAM.gov public data extract, no API key: solicitations, sources sought, award notices. Filter by NAICS, PSC, set-aside, agency, state, deadline. Contacts, Excel.

- **URL**: https://apify.com/pandadad0214/sam-gov-opportunities.md
- **Developed by:** [Panda Federation](https://apify.com/pandadad0214) (community)
- **Categories:** Lead generation, Automation
- **Features:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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 Contract Opportunities: Open Federal Bids, No API Key

**Use this to find open US federal contract opportunities from the official SAM.gov public data extract, with no SAM.gov API key.** Each row has the **title, solicitation number, notice type, posted date, response deadline and days left, department / sub-tier / office, NAICS and PSC codes, set-aside, place of performance, contracting officer name, email and phone**, and for award notices the **awardee and amount**. Filter by **keyword, NAICS, PSC, set-aside, notice type, agency, state and days to deadline**. **$0.0015 per notice.**

**No scraping of the SAM.gov search site and no API key: the data comes from GSA's public "Contract Opportunities" data extract on SAM.gov Data Services (also listed on data.gov), refreshed daily.** The file is sorted newest first, so a 7-day run reads only the newest slice and finishes in seconds.

- 🏛️ **Solicitations, combined synopsis/solicitations, presolicitations, sources sought, special notices and award notices**
- ⏰ **Deadline and days left** on every row, plus a **By deadline** sheet (soonest first); open-only by default
- 🎯 **NAICS and PSC prefix filters**, **set-asides** (SBA, 8(a), HUBZone, SDVOSB, WOSB, EDWOSB...), agency, state and keyword filters
- 👤 **Contracting officer contacts** (name, email, phone) as published on the notice
- 🏆 **Award notices with awardee and amount**: teaming and subcontracting leads, and who is winning in your NAICS
- 💸 **$0.0015 per notice**; runs with no matches are free

### Who it's for

- **Small businesses and GovCon BD teams:** a daily list of new bids in your NAICS codes and set-aside categories
- **Proposal writers, GovCon consultants and Fiverr / Upwork researchers:** client-ready opportunity reports in minutes
- **Subcontractors and suppliers:** award notices show which primes just won work you can support
- **Market researchers:** what agencies are buying, by NAICS, PSC, set-aside and state

### How to use it

1. Click **Try for free**.
2. Set **Posted in the last N days** (or a date range).
3. Add **NAICS codes**, **PSC codes**, **set-asides**, **notice types**, **agencies**, **states** or **keywords**.
4. Click **Start**. Download **SAM_XLSX** or **SAM_CSV** from **Storage → Key-value store**.

#### Input example

```json
{
  "daysBack": 7,
  "naicsCodes": ["5415"],
  "setAsides": ["SBA", "SDVOSBC", "8A"],
  "noticeTypes": ["Solicitation", "Combined Synopsis/Solicitation", "Sources Sought"],
  "minDaysToDeadline": 5
}
```

### Task examples

- **Daily IT bids for small businesses:** `{"daysBack": 1, "naicsCodes": ["5415"], "setAsides": ["SBA"]}` on a daily schedule
- **Janitorial and facilities work in Arizona:** `{"daysBack": 14, "naicsCodes": ["561720", "561210"], "states": ["AZ"]}`
- **Sources sought to shape requirements early:** `{"daysBack": 14, "noticeTypes": ["Sources Sought"], "keywords": ["cybersecurity", "zero trust"]}`
- **VA SDVOSB set-asides:** `{"daysBack": 7, "agencies": ["veterans affairs"], "setAsides": ["SDVOSBC", "VSA"]}`
- **Who won construction awards this week:** `{"daysBack": 7, "noticeTypes": ["Award Notice"], "naicsCodes": ["2362", "2382"]}`

### Output example

```json
{
  "noticeId": "1f94236c982c498ab6f090876fb3fdb7",
  "title": "Post Quantum Cryptography (PQC) Readiness and Validation Status",
  "solicitationNumber": "1106202612072026",
  "noticeType": "Sources Sought",
  "postedDate": "2026-11-09",
  "responseDeadline": "2026-12-07T23:59:00-05:00",
  "daysToDeadline": 27.6,
  "department": "GENERAL SERVICES ADMINISTRATION",
  "subTier": "FEDERAL ACQUISITION SERVICE",
  "office": "FC ACQUISITION SOLUTIONS DEV/IDV ACQ MANAGEMENT",
  "naicsCode": "541519",
  "setAsideCode": null,
  "popCity": "Washington",
  "popState": "DC",
  "contactName": "Vivian Panagakis",
  "contactEmail": "innovationiwm@gsa.gov",
  "samUrl": "https://sam.gov/opp/1f94236c982c498ab6f090876fb3fdb7/view",
  "agentSummary": "Post Quantum Cryptography (PQC) Readiness and Validation Status [1106202612072026]: Sources Sought; posted 2026-11-09; FEDERAL ACQUISITION SERVICE; NAICS 541519; place Washington, DC; due 2026-12-07 (27.6 days left); contact Vivian Panagakis <innovationiwm@gsa.gov>."
}
```

This notice is a real public SAM.gov record from the public Contract Opportunities extract, retrieved 2026-11-10 (some fields left out here for length).

### For AI agents

Use this Actor to answer "which open federal bids match NAICS X / set-aside Y / state Z, and when are they due?". Minimal input: `{"daysBack": 3, "naicsCodes": ["5415"]}`. Read `agentSummary` per notice (title, solicitation number, type, agency, NAICS, set-aside, deadline and days left or awardee and amount, contact) or the SUMMARY `takeaway` (counts by type, how many are due within 7 days, set-asides, top agencies).

- **MCP:** add this Actor to Claude, Cursor, Copilot or any MCP client through the [Apify MCP server](https://mcp.apify.com): `https://mcp.apify.com/?actors=pandadad0214/sam-gov-opportunities`, then ask in plain English.
- **API:** `POST https://api.apify.com/v2/acts/pandadad0214~sam-gov-opportunities/run-sync-get-dataset-items?token=YOUR_TOKEN` with the input JSON.
- Every row has an **`agentSummary`** line, and the **SUMMARY** record has a one-line **`takeaway`** plus `nextSteps`, so an agent can answer without parsing every field.
- Schedule it daily and connect Zapier, Make, n8n, Slack, Google Sheets or a webhook to the dataset for bid alerts.

### Pricing

**$0.0015 per notice returned** (pay per event) plus Apify's tiny Actor-start fee of $0.00005. A daily alert with 20 matching notices costs $0.03; 1,000 notices cost $1.50. Runs that return nothing cost nothing, and failed source downloads are never charged. Set **Maximum results** or Apify's *maximum charge per run* to cap any run; the Actor stops at your limit.

**Apify paid-plan discounts:** Bronze members pay 10% less, Silver 20% less and Gold 30% less per notice; the discount applies automatically. Apify's free plan includes monthly credit to try it.

### FAQ

**Where does the data come from?** GSA publishes the full list of active SAM.gov Contract Opportunities as a public CSV extract on SAM.gov Data Services (Contract Opportunities → datagov, also linked from data.gov), refreshed daily. The Actor streams that file; it does not log in to SAM.gov or call the key-gated Opportunities API.

**How fresh is it?** The extract is rebuilt once a day (overnight US time). Notices posted today usually appear the next morning. The SUMMARY shows the file's `fileUpdated` time.

**Do I get attachments?** No. Use the `samUrl` link to open the notice and download the solicitation documents on SAM.gov. Always confirm deadlines there before you bid.

**What does Open only do?** It drops notices whose response deadline has already passed. Notices without a deadline (award notices, many special notices) stay in the results; use **At least N days to deadline** to keep only biddable notices.

**How is this different from Federal Contract Finder?** [Federal Contract Finder](https://apify.com/pandadad0214/federal-contract-finder) searches **past awards** on USAspending (incumbents, values, recompete dates). This Actor lists **current SAM.gov notices** you can respond to. Use both: find the recompete there, watch for the solicitation here.

**Can I contact the people listed?** These are the contracting officers named on public notices for questions about that notice. Follow each notice's instructions and the usual rules for business email.

### More Panda Federation tools

- [Federal Contract Finder](https://apify.com/pandadad0214/federal-contract-finder): USAspending awards, incumbents and recompete radar
- [SBIR/STTR Topic Radar](https://apify.com/pandadad0214/sbir-sttr-topic-radar): open SBIR/STTR topics to bid
- [Grants Finder](https://apify.com/pandadad0214/grants-finder): Grants.gov opportunities plus NIH and NSF awards
- [EU TED Tenders](https://apify.com/pandadad0214/eu-ted-tenders): European public procurement notices
- [Company Website Enricher](https://apify.com/pandadad0214/company-website-enricher): emails and phones for teaming partners
- Full catalog and MCP server: [Panda Federation Tools on GitHub](https://github.com/pandadad0214/panda-federation-tools)

*Built by Panda Federation. Questions or a custom version? Open an issue on the Actor's Issues tab.*

### Changelog

- **2026-11-10:** First release (0.1.0): SAM.gov public Contract Opportunities extract (no API key), posted-date window streamed newest first, keyword / NAICS / PSC / set-aside / notice type / agency / state / deadline filters, open-only default, contracting contacts, award notices with awardee and amount, Excel and CSV (`SAM_XLSX` / `SAM_CSV`) with By deadline and Award notices sheets, `agentSummary` and SUMMARY `takeaway`, pay-per-event pricing with Bronze/Silver/Gold discounts.

# Actor input Schema

## `daysBack` (type: `integer`):

Default 7. Matches the SAM.gov posted date. Use 1 or 2 on a daily schedule. The source file is newest first, so short windows are fast.

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

Optional YYYY-MM-DD; overrides days back.

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

Optional YYYY-MM-DD.

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

Keep notices whose title or description contains any of these words or phrases (case-insensitive), e.g. janitorial, cybersecurity, HVAC.

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

Drop notices containing any of these words, e.g. brand name only.

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

Starts-with match, e.g. 5415 (IT services), 541330 (engineering), 236220 (commercial building), 561720 (janitorial).

## `pscCodes` (type: `array`):

Product/service code starts-with, e.g. D3 (IT), R4 (professional services), Z2 (building repair), S2 (housekeeping).

## `setAsides` (type: `array`):

Empty = any. NONE keeps notices with no set-aside (full and open).

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

Empty = all. Award Notice rows carry the awardee and amount (teaming and subcontracting leads).

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

Match department, sub-tier or office (case-insensitive), e.g. veterans affairs, army, GSA, NASA.

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

Two-letter codes matched on the place of performance or the contracting office state, e.g. AZ, TX, VA.

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

Default on. Drops notices whose response deadline has passed. Notices with no deadline (award notices, many special notices) are kept.

## `minDaysToDeadline` (type: `integer`):

Optional. Keep notices with at least this many days left to respond (drops notices with no deadline).

## `requireContactEmail` (type: `boolean`):

Keep notices that list a primary point-of-contact email.

## `activeOnly` (type: `boolean`):

Default on (SAM.gov Active = Yes).

## `descriptionChars` (type: `integer`):

Characters of the notice description to include. Default 600; 0 = none.

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

You pay per notice returned, so this also caps the cost. Default 500; hard max 10000.

## Actor input object example

```json
{
  "daysBack": 7,
  "keywords": [
    "cybersecurity"
  ],
  "openOnly": true,
  "requireContactEmail": false,
  "activeOnly": true,
  "descriptionChars": 600,
  "maxResults": 500
}
```

# Actor output Schema

## `table` (type: `string`):

No description

## `xlsx` (type: `string`):

No description

## `csv` (type: `string`):

No description

## `summary` (type: `string`):

Agent-friendly keys: `takeaway` (one-line result), counts, `nextStep` and `nextSteps`.

# 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 = {
    "keywords": [
        "cybersecurity"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("pandadad0214/sam-gov-opportunities").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 = { "keywords": ["cybersecurity"] }

# Run the Actor and wait for it to finish
run = client.actor("pandadad0214/sam-gov-opportunities").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 '{
  "keywords": [
    "cybersecurity"
  ]
}' |
apify call pandadad0214/sam-gov-opportunities --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,pandadad0214/sam-gov-opportunities"
        }
    }
}
```

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/Xc3fEWRGsMe32AiIQ/builds/t8hMH0FA6bzwRIfn5/openapi.json
