DEV Community

Karan Shah
Karan Shah

Posted on

How to Find Expiring US Federal Contracts Before the RFP Drops (Free API)

Every year the US government awards $700B+ in contracts. Most of them have a fixed end date — and when a contract ends, the work usually doesn't. It gets re-solicited. If you know a contract expires in 9 months, you know an RFP is coming before it's ever announced.

BD teams at large contractors pay $300–1,000 per seat per month for platforms that surface this signal (GovWin, HigherGov, GovTribe). I built an API that gives it to you in one call, with a free tier.

The recompete signal, in one request

curl -X POST "https://federal-contract-intelligence.p.rapidapi.com/v1/recompetes/search" \
  -H "X-RapidAPI-Key: YOUR_KEY" \
  -H "X-RapidAPI-Host: federal-contract-intelligence.p.rapidapi.com" \
  -H "Content-Type: application/json" \
  -d '{
    "months_ahead": 12,
    "agency": "Department of Defense",
    "min_amount": 5000000,
    "limit": 10
  }'
Enter fullscreen mode Exit fullscreen mode

Response — contracts ending within 12 months, ranked by a 0–100 score (bigger contracts expiring sooner rank higher):

{
  "results": [
    {
      "award_id": "...",
      "recipient_name": "RAYTHEON COMPANY",
      "amount": 376900000.0,
      "end_date": "2027-06-15",
      "awarding_agency": "Department of Defense",
      "months_until_expiry": 11.4,
      "recompete_score": 38.8
    }
  ]
}
Enter fullscreen mode Exit fullscreen mode

(That's a real row from today's data — a $377M Raytheon contract expiring in under a year.)

Each result tells you: who holds the work today, how big it is, and how long until it's up for grabs. That's your call list.

Where the data comes from

Everything is built on official, public-domain US government sources — USAspending.gov for awards and SAM.gov for live solicitations. You could absolutely scrape these yourself. I did, and here's what you'd be signing up for: two different auth models, three date formats, inconsistent field vocabularies (NAICS is sometimes a string, sometimes an object), pagination that can't filter on period-of-performance end dates server-side, and daily rate caps. The API normalizes all of it and caches hot queries.

What else it does

Search $700B of awards by keyword, NAICS, PSC, agency, vendor, or amount:

import httpx

r = httpx.post(
    "https://federal-contract-intelligence.p.rapidapi.com/v1/awards/search",
    headers={"X-RapidAPI-Key": KEY, "X-RapidAPI-Host": "federal-contract-intelligence.p.rapidapi.com"},
    json={"recipient_search_text": "Lockheed", "min_amount": 100_000_000, "limit": 10},
)
for a in r.json()["results"]:
    print(a["award_id"], a["recipient_name"], f'${a["amount"]:,.0f}')
Enter fullscreen mode Exit fullscreen mode

Market sizing in one call — total spending grouped by vendor, NAICS, PSC, or agency:

r = httpx.post(
    ".../v1/analytics/spending",
    headers={...},  # same as above
    json={"dimension": "recipient", "naics_codes": ["336411"], "fiscal_year": 2025},
)
# -> top aircraft-manufacturing vendors by federal revenue, FY2025
Enter fullscreen mode Exit fullscreen mode

Live solicitations from SAM.gov with set-aside and deadline fields, each linking to the official notice.

Build ideas

  • A nightly cron that diffs recompete results for your NAICS codes and emails new entries — a "deals expiring soon" alert your sales team will actually read
  • A competitor dashboard: one vendor's award history + expiration timeline
  • Market-entry analysis: which agencies buy what you sell, and from whom

Try it

Free tier is 50 requests/month, no card required: Federal Contract Intelligence on RapidAPI

The recompete output is a statistical signal (contracts get extended, re-scoped, or insourced), not a guarantee of re-solicitation. Data reflects USAspending reporting lags — typically days to a few weeks. Independent service; not affiliated with the US government.

Questions or feature requests — drop a comment. Subawards and state/local data are next on the roadmap.


This post is Day 1 of my "60 APIs in 60 Days" challenge - building and launching one commercial API every day, in public.

Follow me to catch the next one the day it ships.

Top comments (0)