US Government RFP Monitor - SAM.gov + State Portals
Get alerted to every new US government RFP that matches your business. Monitors SAM.gov (official API) plus 5 state portals (VA, TX, FL, GA, NY); filters...
Get alerted to every new US government RFP that matches your business. Monitors SAM.gov (official API) plus 5 state portals (VA, TX, FL, GA, NY); filters by keywords, NAICS/PSC, agency and set-aside; alerts only on never-seen opportunities. Clean output, no officer contact data.
$3.00 / 1,000 · 94.6% success over 56 public runs in the last 30 days.
Run it on Apify → Free to try - runs bill per result on your own account.
What you give it
Every field is optional unless marked; sensible defaults do the rest.
| Field | Type | What it does | Default |
|---|---|---|---|
keywords |
array | Alert on opportunities whose title, description or commodity-code labels contain ANY of these words (case-insensitive). Example: ["cybersecurity", "penetration testing", "SOC"]. Leave empty to match everything and filter by codes or agencies instead. | ["cybersecurity", "network security"] |
samApiKey |
string | Your personal SAM.gov API key (starts with SAM-), required only for the SAM.gov federal source. Free: sam.gov account (via login.gov) > Account Details > re-enter password > copy the Public API Key. Valid 90 days, renewal is copy-paste. Without it the actor still monitors the state portals and skips SAM.gov with a warning. Stored encrypted, never logged. See the README for the step-by-step. | - |
sources |
array | Which procurement sources to monitor. SAM.gov covers all US federal opportunities (needs your free API key); the six keyless state portals cover Virginia, Texas, Florida, Georgia (state + local + K-12), New York and Pennsylvania. | ["sam.gov", "virginia-eva", "texas-esbd", "florida-mfmp", "georgia-gpr", "ny-contract-reporter", "pa-emarketplace"] |
naicsCodes |
array | NAICS industry codes, 2-6 digits, hierarchical: "5415" also matches 541511. Applies to SAM.gov records (state portals use other code systems - use keywords for them). Example: ["541512", "541519"]. Also narrows the SAM.gov API query, saving your daily request budget. | [] |
pscCodes |
array | Federal Product Service Codes, exact match, e.g. ["D310", "R425"]. SAM.gov records only. An opportunity matches when it hits ANY of your NAICS or PSC codes. | [] |
agencies |
array | Only alert on these buying organizations (case-insensitive substring of the agency path). Example: ["DEPT OF DEFENSE", "University of Houston"]. | [] |
setAsides |
array | Only alert on set-aside opportunities whose label contains any of these, e.g. ["small business", "8(a)", "WOSB", "SDVOSB"]. SAM.gov and Virginia (SWaM) carry set-aside labels; records without one are excluded when this filter is set. | [] |
noticeTypes |
array | Which notice stages to alert on. Default: the pre-award stages a seller can still act on (solicitations, combined synopsis, presolicitations, sources sought). Add award notices to track who wins instead. | ["solicitation", "combined", "presolicitation", "sources-sought"] |
states |
array | Two-letter US state codes, e.g. ["TX", "VA"]. Filters SAM.gov by place of performance and switches off state portals outside the list. Empty = whole country. | [] |
lookbackDays |
integer | How many days back each run asks SAM.gov for notices. Keep it a little above your run cadence (daily run: 2-3 days) - overlap is safe, the monitor never re-alerts a seen notice. | 3 |
alertOn |
string | "new" alerts once per opportunity. "new-and-updated" also re-alerts when a seen opportunity is amended (marked isUpdate: true), e.g. a moved deadline or a posted addendum. | new |
emitBaseline |
boolean | On the very first run of a profile, push the currently open matching opportunities (flagged isBaseline: true, charged at the lower baseline price) so you start with today's full picture. Turn off to seed silently and only ever receive new alerts. | True |
resetState |
boolean | Discard this profile's memory of already-seen opportunities and start over with a fresh baseline run. One-shot switch: turn it back off afterwards. | False |
maxItems |
integer | Upper bound on items pushed per run (baseline or alerts). On an alert run, matches beyond the cap alert on the next run. On the very first (baseline) run they are recorded as already seen instead, so raise this before the first run if you need the whole baseline. | 500 |
stateStoreName |
string | Named key-value store holding the monitor's seen-opportunity memory. Only change this to run fully isolated monitor instances. | rfp-monitor-state |
reportFailures |
boolean | When a run fails, send the developer the actor name and build, an error category, the error message (truncated) and a one-way hash of your input - so a bug can be fixed without anyone asking you to reproduce it. Your input itself, your results and your identity are never sent, and successful runs send nothing at all. Switch this off and the actor behaves exactly the same. | True |
What you get back
One JSON object per result, with exactly these fields - no seller identities, no contact data, ever.
A real result row from a recent run:
{
"agency": "Office of the Attorney General",
"category": "Professional Services",
"description": "The OAG is soliciting proposals from attorneys to advise and represent the OAG and the OAG's client agencies and institutions with respect t...",
"isBaseline": true,
"isUpdate": false,
"noticeType": "solicitation",
"postedDate": "2026-09-16",
"responseDeadline": "2026-10-12T17:00:00Z",
"source": "virginia-eva",
"sourceId": "IV128557",
"sourceNoticeType": "Request for Proposals (RFP)",
"state": "VA",
"status": "Open",
"title": "RFP360 SFP 2026-18 Cybersecurity & Data Protection",
"updatedDate": "2026-09-16",
"url": "https://mvendor.cgieva.com/Vendor/public/AllOpportunities.jsp"
}
| Field | Type | Meaning |
|---|---|---|
source |
string | Which procurement source published the opportunity. |
sourceId |
string | The opportunity's ID on its source: the SAM.gov notice ID, eVA solicitation ID, ESBD solicitation ID or MFMP advertisement ID. |
title |
string | Opportunity title as published. |
solicitationNumber |
string | Solicitation / advertisement reference number when the source provides one. |
description |
string | Full opportunity description. Currently populated for Virginia eVA records; other sources link to the description via url. |
agency |
string | Buying organization. For SAM.gov the full agency path, dot-separated. |
noticeType |
string | Canonical notice stage, normalized across sources. Reusable as the noticeTypes input. |
sourceNoticeType |
string | The source's own notice-type label, unnormalized. |
naicsCode |
string | NAICS industry code (SAM.gov records). |
pscCode |
string | Product Service Code (SAM.gov records). |
commodityCodes |
array | State commodity codes with labels: NIGP for Texas, commodity codes for Virginia. |
setAside |
string | Set-aside label when the opportunity is reserved for a business category. |
status |
string | The source's current status label for the opportunity. |
postedDate |
string | Publication date, normalized to YYYY-MM-DD. |
updatedDate |
string | Last source-side modification date (YYYY-MM-DD) where the source exposes it. |
responseDeadline |
string | Bid/response deadline. YYYY-MM-DD for state portals; SAM.gov delivers a full timestamp. |
responseDeadlineTime |
string | Deadline time of day, for sources that report it separately (Texas ESBD). |
archiveDate |
string | Date the notice leaves the source's active listing (SAM.gov). |
state |
string | US state: place of performance for SAM.gov, the portal's state otherwise. |
city |
string | Place-of-performance city when the source provides one (SAM.gov). |
url |
string | Link to the opportunity on its source. For Virginia eVA it opens the public search page - paste the sourceId there. |
active |
boolean | Whether the notice is active on SAM.gov. |
category |
string | The source's own category label (Virginia eVA). |
awardAmount |
string | Award amount in USD, on award notices only. |
awardeeName |
string | Winning company's name, on award notices only. Organization-level data. |
awardeeUei |
string | Winning company's SAM Unique Entity ID, on award notices only. |
isBaseline |
boolean | True on items from a profile's first run (the currently-open baseline). False on real new-opportunity alerts. |
isUpdate |
boolean | True when the alert is an amendment of an already-seen opportunity (alertOn: new-and-updated). |
governmentType |
['string', 'null'] | Georgia GPR: which level of government posted the event (state, county, city, school, other). |
bidProcessType |
['string', 'null'] | Georgia GPR: state-agency or non-state-agency bid process. |
electronicBid |
['boolean', 'null'] | Georgia GPR: responses are submitted electronically. |
soleSource |
['boolean', 'null'] | Georgia GPR: sole-source notice. |
county |
['string', 'null'] | County of the requesting agency (PA). |
Health
94.6% success over 56 public runs in the last 30 days. Live record, failures included: status page.
Full documentation, examples and the AI-assistant prompt live on the store page.