Gov Bids, RFPs & Federal Awards API (SAM.gov) avatar

Gov Bids, RFPs & Federal Awards API (SAM.gov)

Pricing

Pay per event

Go to Apify Store
Gov Bids, RFPs & Federal Awards API (SAM.gov)

Gov Bids, RFPs & Federal Awards API (SAM.gov)

Open government bids, RFPs and new federal contract awards from official APIs only: USAspending, SAM.gov (your own key), NYC City Record, RAMP LA, Delaware, Montgomery County MD. One normalized schema.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Civic Data Tools

Civic Data Tools

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

8 days ago

Last modified

Share

Public Bid & RFP Search (Gov Contracts API)

One call returns open government solicitations (bids, RFPs, RFQs) and new federal contract awards in a single normalized schema. Every source is an official government API or open-data portal (see sources.md for the terms review). No scraping, no logins, no commercial aggregators.

Sources (v0.1)

idCoverageKind
usaspending-awardsAll federal agencies: new contract awards in the last N days (who won what, and for how much)award
sam-gov-opportunitiesFederal open opportunities. Only with your own SAM.gov API key (samApiKey)open solicitation
nyc-city-recordNew York City agencies (City Record Online solicitations)open solicitation
la-rampLos Angeles region: City of LA, LA County, LAUSD, ports, airports (RAMP LA)open solicitation
delaware-open-bidsState of Delaware agenciesopen solicitation
montgomery-county-mdMontgomery County, Marylandopen solicitation

Input

keywords (whole word, simple plurals; landscap* for prefix), matchMode, sources, states, naicsCodes (prefix match; federal only), onlyOpen (default true), postedWithinDays (60), includeFederalAwards (true), awardsWithinDays (30), samApiKey (secret, optional), samMaxRequests (1–10, default 1), socrataAppToken (secret, optional), maxResultsPerSource (200), maxResults (500). Every field is documented in .actor/input_schema.json.

SAM.gov (optional, bring your own key)

  • Paste your free personal SAM.gov key into samApiKey (a secret field: Apify stores it encrypted). Setup steps: SAM-GOV-SETUP.md.
  • Personal keys allow 10 requests/day (1,000 if your SAM.gov account holds an entity role) and expire every 90 days. The Actor never retries SAM.gov and spends at most samMaxRequests calls per run (default 1).
  • With keywords and keywords ≤ samMaxRequests, each keyword becomes one server-side SAM.gov title search. Otherwise the newest 1,000 notices per request are scanned and matched locally. OUTPUT.stats.perSource["sam-gov-opportunities"].meta reports strategy, requestsUsed, totalAvailable, fetched, and partial (with a hint).
  • Errors are explicit: AUTH_ERROR (bad, expired, or wrongly formatted key, with the renewal steps), RATE_LIMITED (daily quota used). A SAM.gov "No Data found" 404 counts as an empty result. The key is redacted from every log line and the OUTPUT record.

Output record (type: "bid-record")

source, sourceName, recordKind (open-solicitation | award), level (federal | state | county | city | regional), jurisdiction, state, agency, subAgency, title, description, solicitationNumber, noticeType, category, naics{code,description}, psc, postedDate, dueDate, value, valueType, recipient (awards), periodEnd (awards), contact (NYC), link, matchedKeywords, disclaimer (Montgomery), retrievedAt. See demo/actor-sample-item.json.

Errors never crash the run. They are written to the OUTPUT record as AUTH_ERROR, RATE_LIMITED, or SOURCE_ERROR. SAM.gov without a key appears under skipped: NO_API_KEY.

Pricing (pay per event)

  • bid-record (primary): one per record written to the dataset. Proposed price $0.005 (set in Apify Console, not in code).
  • Keep apify-actor-start (synthetic). Remove apify-default-dataset-item so records aren't charged twice.
  • The Actor follows the user's spending limit (eventChargeLimitReached stops the run cleanly). Events only (no "+ usage"), limited permissions, no Standby, so it's eligible for Apify agentic payments once KYC is done.

Run

npm install
npm test # 10 offline tests (all 6 sources mocked, including SAM.gov strategy/quota/key handling)
LIVE=1 npm test # plus a live test against the 5 keyless sources
npm run demo # every open record → demo/demo-all-open.json
npm start # Actor locally (input in storage/key_value_stores/default/INPUT.json)
read -rs SAM_API_KEY && export SAM_API_KEY # paste key, nothing is echoed
node scripts/sam-smoke.mjs landscaping # 1 SAM.gov request, prints a redacted summary
node src/cli.js --keywords landscaping --sam-requests 1 # all sources incl. SAM.gov

Demo results (live, 2026-10-04 PT)

  • All open records, no keywords: 422 records in about 7 s, 0 errors. That's 100 new federal awards, 91 NYC, 186 RAMP LA, 36 Delaware, and 9 Montgomery County.
  • Grounds-maintenance niche (landscaping, grounds maintenance, mowing, tree(s), vegetation, irrigation): 39 records. NYC Parks "LiDAR Based Street Tree Inventory" (due 2026-10-20), LADWP "Drip Tubing for Owens Lake Managed Vegetation" (due 2026-10-22), and 37 new federal awards. Examples: VA "Grounds Maintenance Services… Santa Fe National Cemetery" ($451,595, Moderno Inc), USDA "ALB Tree Removal Services in South Carolina" ($6.72M, Davey Resource Group).
  • Local Actor run (Apify SDK), janitorial, custodial, cleaning: 36 records, bid-record charged 36 times (simulated).

Notes and limits

  • USAspending gives awards, not open bids. They're useful for competitive intel and recompete planning. dueDate is null for awards.
  • USAspending keyword search runs server-side across many fields, then our whole-word filter runs on title, description, and NAICS title. Broad prefixes like landscap* also match NAICS 541320 "Landscape Architectural Services".
  • Montgomery County records have no per-item URL, so link goes to the County solicitations page.
  • Disclaimers. Montgomery County: "The data made available here has been modified for use from its original source, which is Montgomery County, Maryland ('the County'). THE COUNTY MAKES NO REPRESENTATIONS OR WARRANTIES AS TO THE COMPLETENESS, ACCURACY, OR TIMELINESS OF ANY DATA." NYC: "The City of New York can not vouch for the accuracy or completeness of data provided by this web site or application or for the usefulness or integrity of the web site or application. This site provides applications using data that has been modified for use from its original source, NYC.gov, the official web site of the City of New York." LA data: City of Los Angeles, CC0. Not affiliated with any government.

Same publisher (civic-data-tools) — useful together for agents monitoring local government:

ActorUse whenStore
City Council & County Agenda SearchKeyword/topic matches in council, board, and commission agendas (Legistar / CivicClerk / Granicus)meeting-agenda-search
Multi-City Building PermitsNormalized building permits from large US city open-data portalsbuilding-permits

This Actor covers open bids / RFPs / federal awards. Pair agenda search for “who is about to bid out work” and permits for “what already pulled a permit.”