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 by keywords, NAICS/PSC, agency and set-aside; alerts only on never-seen opportunities. Clean output, no officer contact data.

$2.00 / 1,000 · 100.0% success over 71 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.

FieldTypeWhat it doesDefault
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). Matches beyond the cap are not lost: they alert on the next run. 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

What you get back

One JSON object per result, with exactly these fields - no seller identities, no contact data, ever.

FieldTypeMeaning
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

100.0% success over 71 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.