Track expiring federal contracts and recompetes with Apify and Google Sheets

Go to Workflow
0 views
Built by Chris Grant Chris Grant
Created on October 16, 2026

Description

Quick overview
Who it's for: GovCon capture managers, BD leads and small federal contractors who plan bids around contracts that are about to expire (recompetes).

How it works
Every Monday a Schedule trigger runs the Expiring Federal Contracts – Recompete Radar Actor on Apify through a plain HTTP Request node.
The Actor finds federal contracts whose period of performance ends in 3–18 months, from official USAspending.gov data, and checks each one against open SAM.gov notices with a match confidence (high, medium, low or none).
With the monitor name set in the body, only new or changed contracts come back (changed = new end date, award amount or incumbent UEI, or a new high- or medium-confidence SAM.gov notice), so the sheet stays clean.
An IF node stops on empty weeks, and a Set node keeps 22 columns (incumbent, UEI, value, end date, agency, NAICS/PSC, SAM.gov match and links).
Google Sheets appends or updates rows matched on id.

Setup
Copy your Apify API token (Apify Console → Settings → API & Integrations).
On "Run GovCon Recompete Radar", create a Header Auth credential: name Authorization, value Bearer .
Connect Google Sheets, paste your spreadsheet ID, and put the 22 column names from "Pick columns" in row 1.
Edit the JSON body (naicsCodes, awardingAgencies, minAwardAmount, monthsFrom/monthsTo). Keep monitorName set and the same between runs: it's what makes each run return only new or changed contracts. Without it, every run returns the 25 soonest-ending contracts again (up to maxItems), all charged.
Run once, check the output, then activate.

Requirements
An Apify account (pay per result: $0.01 per run + $0.01 per contract row) and Google Sheets. No USAspending or SAM.gov API key is needed.

Customization
Add a Slack alert for high-confidence SAM.gov matches, watch competitors by putting their names or UEIs in incumbents, or switch the schedule to daily.

This workflow was created by Chris Grant and shared publicly on the n8n community template library. n8nFind indexes it for discovery — the workflow remains the property of its original creator.

Nodes Used (2)

Google Sheets
n8n-nodes-base.googleSheets
HTTP Request
n8n-nodes-base.httpRequest