<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Lindenbyte</title>
    <description>The latest articles on DEV Community by Lindenbyte (@lindenbyte).</description>
    <link>https://dev.to/lindenbyte</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4239418%2Fa90bf273-2d89-4d28-aa5a-6fb7f241e6f7.png</url>
      <title>DEV Community: Lindenbyte</title>
      <link>https://dev.to/lindenbyte</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/lindenbyte"/>
    <language>en</language>
    <item>
      <title>Get daily SAM.gov RFP alerts in Slack (or email) without an API key</title>
      <dc:creator>Lindenbyte</dc:creator>
      <pubDate>Wed, 11 Nov 2026 15:46:02 +0000</pubDate>
      <link>https://dev.to/lindenbyte/get-daily-samgov-rfp-alerts-in-slack-or-email-without-an-api-key-5gli</link>
      <guid>https://dev.to/lindenbyte/get-daily-samgov-rfp-alerts-in-slack-or-email-without-an-api-key-5gli</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Disclosure: I'm Lindenbyte, the small studio that built the Apify Actor used below, and this post was&lt;br&gt;
drafted with AI assistance. The free SAM.gov website and official API work too; this is just the&lt;br&gt;
fastest no-code route we know.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If you do business development for a federal contractor, you probably start every morning in the&lt;br&gt;
SAM.gov search page, re-running the same NAICS codes and keywords. SAM.gov's saved searches email you,&lt;br&gt;
but they are hard to filter and impossible to pipe into your own tools. The official API needs a key,&lt;br&gt;
has a tight daily rate limit, and returns nested JSON you then have to clean.&lt;/p&gt;

&lt;p&gt;This tutorial sets up a &lt;strong&gt;daily alert that posts only new, still-open opportunities matching your&lt;br&gt;
codes&lt;/strong&gt; to Slack, email, or a Google Sheet. Setup time: about 10 minutes. Cost: a few cents a month.&lt;/p&gt;
&lt;h2&gt;
  
  
  1. Define what "relevant" means for you
&lt;/h2&gt;

&lt;p&gt;Write down:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;NAICS codes&lt;/strong&gt; you bid on (e.g. &lt;code&gt;541511&lt;/code&gt; Custom Computer Programming, &lt;code&gt;541512&lt;/code&gt; Systems Design).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PSC codes&lt;/strong&gt; if you track by product/service (e.g. &lt;code&gt;DA01&lt;/code&gt;, &lt;code&gt;R425&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Set-asides&lt;/strong&gt; you qualify for: &lt;code&gt;SBA&lt;/code&gt; (total small business), &lt;code&gt;8A&lt;/code&gt;, &lt;code&gt;HZC&lt;/code&gt; (HUBZone), &lt;code&gt;SDVOSBC&lt;/code&gt;, &lt;code&gt;WOSB&lt;/code&gt;, &lt;code&gt;EDWOSB&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Keywords&lt;/strong&gt; (optional): "cloud migration", "zero trust". Each keyword runs as a separate search;
results are de-duplicated.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Notice types&lt;/strong&gt;: most BD teams want &lt;code&gt;solicitation&lt;/code&gt;, &lt;code&gt;combined&lt;/code&gt;, &lt;code&gt;presolicitation&lt;/code&gt; and &lt;code&gt;sources-sought&lt;/code&gt;
(sources-sought is where you get in early).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  2. Run the Actor once by hand
&lt;/h2&gt;

&lt;p&gt;Open the &lt;a href="https://apify.com/lindenbyte/sam-gov-contract-opportunities" rel="noopener noreferrer"&gt;SAM.gov Contract Opportunities Monitor&lt;/a&gt;&lt;br&gt;
and click &lt;strong&gt;Try for free&lt;/strong&gt;. Example input:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;"naicsCodes"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"541511"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"541512"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nl"&gt;"noticeTypes"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"solicitation"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"combined"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"presolicitation"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"sources-sought"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nl"&gt;"setAside"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"SBA"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nl"&gt;"activeOnly"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nl"&gt;"postedWithinDays"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nl"&gt;"maxResults"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nl"&gt;"includeDetails"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You get one row per opportunity with &lt;code&gt;title, solicitationNumber, noticeType, agency, office,&lt;br&gt;
postedDate, responseDeadline, naics, psc, setAside, placeOfPerformance, description, url&lt;/code&gt;&lt;br&gt;
(plus &lt;code&gt;awardee&lt;/code&gt; / &lt;code&gt;awardAmount&lt;/code&gt; for award notices). Export as CSV/Excel/JSON from the dataset tab,&lt;br&gt;
or check the results look right before automating.&lt;/p&gt;

&lt;p&gt;Tip: SAM.gov's full-text search also matches attachments and clauses, so a keyword like "cloud" can be&lt;br&gt;
noisy. Set &lt;code&gt;sortBy: "relevance"&lt;/code&gt; for keyword searches, or rely on NAICS/PSC codes instead.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Make it daily
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;In the Actor run page, click &lt;strong&gt;Save as a task&lt;/strong&gt; and change &lt;code&gt;postedWithinDays&lt;/code&gt; to &lt;code&gt;1&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Schedules → Create schedule&lt;/strong&gt;, cron &lt;code&gt;0 12 * * 1-5&lt;/code&gt; (12:00 UTC on weekdays, after SAM.gov's
morning postings), and attach the task.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Each run now returns only what was posted in the last day.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Send results where you work
&lt;/h2&gt;

&lt;p&gt;Pick one:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Slack (no code):&lt;/strong&gt; open the task's &lt;strong&gt;Integrations&lt;/strong&gt; tab, add the Slack integration, pick the&lt;br&gt;
channel and trigger it when the run succeeds. Each run posts a message with a link to the results.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Email:&lt;/strong&gt; the same Integrations tab has an email option that sends the results link (or attach a CSV via Zapier/Make).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Google Sheets:&lt;/strong&gt; Use the Apify integration in Make or Zapier: trigger "Actor run finished" →&lt;br&gt;
action "Get dataset items" → "Add rows" to your capture-pipeline sheet. Include &lt;code&gt;solicitationNumber&lt;/code&gt;&lt;br&gt;
so you can dedupe.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Webhook / your own CRM:&lt;/strong&gt; Integrations → &lt;strong&gt;HTTP webhook&lt;/strong&gt; on &lt;code&gt;ACTOR.RUN.SUCCEEDED&lt;/code&gt;, then fetch&lt;br&gt;
&lt;code&gt;https://api.apify.com/v2/datasets/{defaultDatasetId}/items?format=json&lt;/code&gt; in your code.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. What it costs
&lt;/h2&gt;

&lt;p&gt;The Actor is pay-per-result: about &lt;strong&gt;$3 per 1,000 opportunities&lt;/strong&gt; plus half a cent per run. A daily run&lt;br&gt;
for a couple of NAICS codes returns a handful of new notices (our test on 541511 + 541512 with four&lt;br&gt;
notice types: 4 new notices in 24 hours), so expect well under $1/month, which fits inside Apify's&lt;br&gt;
free monthly credit.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Is this allowed?&lt;/strong&gt; SAM.gov opportunity data is public US government information. The Actor reads the&lt;br&gt;
same public search the website uses, at a polite rate, and doesn't collect point-of-contact personal data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why not the official API?&lt;/strong&gt; If you already have a key and engineering time, use it. This route is for&lt;br&gt;
teams that want results in Slack/Sheets today without maintaining code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I track awards (who won)?&lt;/strong&gt; Yes: add &lt;code&gt;award&lt;/code&gt; to &lt;code&gt;noticeTypes&lt;/code&gt; and you'll get &lt;code&gt;awardee&lt;/code&gt; and&lt;br&gt;
&lt;code&gt;awardAmount&lt;/code&gt; for competitor research.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Not affiliated with GSA or SAM.gov.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>govcon</category>
      <category>automation</category>
      <category>apify</category>
      <category>nocode</category>
    </item>
  </channel>
</rss>
