| sortBy | No | Result order. "relevance" (default): best keyword matches first (keyword in title > NAICS/PSC description > summary), ties broken newest first; with no keywords this is the same as newest first. "postedDateDesc": newest first. "deadlineAsc": soonest response deadline first (notices without a deadline last). Default: "relevance".
Example values: "relevance" | relevance |
| agencies | No | Case-insensitive text matched anywhere in the department, sub-tier or office name, e.g. ["VETERANS AFFAIRS"], ["NAVFAC"], ["GENERAL SERVICES ADMINISTRATION"], ["ARMY"]. Default: [] (all agencies). | |
| keywords | No | Words or phrases to search for, e.g. ["cybersecurity", "zero trust"] or ["office furniture"]. Case-insensitive whole-word match, so "AI" won't match "maintain". By default keywords are matched in the title, the official NAICS and PSC code descriptions, and the notice summary (description with boilerplate FAR/DFARS clause text removed), so a parts notice that only cites a cybersecurity clause is not returned. Each result gets relevanceScore, matchedIn and matchedKeywords.
[Description truncated]
Example values: ["software"] | |
| pscCodes | No | Product Service Codes (PSC), full or prefix, e.g. ["D3"] for IT services, ["Z2"] for building repair, ["R4"] for professional support. A notice matches if its PSC starts with any entry. Default: [] (all PSCs). | |
| searchIn | No | Where keywords are matched. "titleAndDescription" (recommended): title, official NAICS/PSC code descriptions, and the first ~2,000 characters of the description after removing boilerplate FAR/DFARS clauses and standard compliance text. "title": title only (fewest, most precise results). "fullText": also searches the complete raw description including clause text (broadest; expect unrelated notices that only cite a clause). Default: "titleAndDescription".
Example values: "titleAndDescription" | titleAndDescription |
| waitSecs | No | Max seconds (0–45, default 30) to cap the wait for the Actor run to reach terminal state. For long-running Actors the response returns at the cap with the current run status; follow `nextStep` to poll via get-actor-run. Set to 0 to fire-and-forget. | |
| setAsides | No | Only return notices with one of these set-aside codes, e.g. ["SBA"] for total small business, ["8A"], ["HZC"] for HUBZone, ["SDVOSBC"] for service-disabled veteran-owned, ["WOSB"]. Use ["NONE"] for full and open competition. Default: [] (any set-aside). | |
| maxResults | No | Maximum number of results to return; each result costs $0.002, so 100 results is about $0.20. 0 means no limit (a full export is about 50,000 unique opportunities). Default: 500.
Example values: 100 | |
| naicsCodes | No | NAICS industry codes, full or prefix, e.g. ["541512"] or ["5415"] (prefix "5415" matches 541511, 541512, 541519 and so on). A notice matches if its NAICS code starts with any entry. Default: [] (all industries). | |
| monitorName | No | Name of the monitoring memory used when onlyNewSinceLastRun is true, e.g. "va-cyber-daily". Use a different name for each saved search. Default: "default".
Example values: "default" | default |
| noticeTypes | No | Only return these notice types, e.g. ["Solicitation", "Combined Synopsis/Solicitation"] for biddable opportunities, ["Sources Sought", "Presolicitation"] for early pipeline, or ["Award Notice"] to see who won what. Default: [] (all types). | |
| postedAfter | No | Only notices posted on or after this date, format YYYY-MM-DD, e.g. "2026-10-01". Default: no date limit. | |
| keywordMatch | No | "any" returns notices containing at least one keyword; "all" returns only notices containing every keyword. Default: "any".
Example values: "any" | any |
| minAwardAmount | No | For award notices: only awards of at least this many U.S. dollars, e.g. 1000000 for $1M+. 0 means no limit. Notices without an award amount are excluded when this is set. Default: 0. | |
| excludeKeywords | No | Skip notices that mention any of these words or phrases (matched in the same places as keywords, per searchIn), e.g. ["construction", "janitorial"]. Default: []. | |
| includeContacts | No | Add the government point(s) of contact listed on each notice (name, work email, work phone). Default: false. | |
| postedWithinDays | No | Only notices posted or updated in the last N days, e.g. 7 for the past week or 1 for a daily check. 0 means no limit. Default: 0.
Example values: 7 | |
| latestVersionOnly | No | SAM.gov lists every amendment as a separate notice (about 40% of raw rows are older versions). If true, you get one result per opportunity (the latest version) with a versionCount, and filters apply to that version. If false, every version is its own row. Default: true.
Example values: true | |
| deadlineWithinDays | No | Only notices whose response deadline falls within the next N days, e.g. 14. 0 means no limit. Default: 0. | |
| includeDescription | No | Include the notice description as plain text in each result. Set false for smaller, cheaper-to-process output. Default: true.
Example values: true | |
| onlyNewSinceLastRun | No | Monitoring mode for scheduled runs: return only notices this monitor (see monitorName) hasn't delivered before, so you pay only for new results. The first run returns everything that matches. Default: false. | |
| descriptionMaxLength | No | Trim each description to this many characters, e.g. 500 for short summaries. 0 means the full text (SAM.gov caps it at about 32,000). Default: 2000.
Example values: 2000 | |
| onlyOpenForResponses | No | If true, only notices whose response deadline is still in the future (biddable now). Notices without a deadline, including most award notices, are excluded. Default: false. | |
| includeUpdatedNotices | No | In monitoring mode, also return notices that were amended or re-posted since this monitor last delivered them (marked changeType = "updated"). Default: true.
Example values: true | |
| placeOfPerformanceStates | No | Two-letter U.S. state codes for the place of performance, e.g. ["TX", "VA"]. Many notices don't list a place of performance, and those are excluded when this filter is used. Default: [] (no state filter). | |