Skip to content

Government Contracts Dataset

Track federal government contract awards sourced from USAspending.gov and mapped to public company tickers. See which companies win government contracts, the awarding agencies, contract values, industry classifications, and contract periods.

The Government Contracts dataset provides:

  • Award Details: Award ID and total award value
  • Agency Information: Awarding agency and sub-agency
  • Recipient Data: Recipient company name mapped to stock ticker
  • Contract Period: Start and end dates for each award
  • Industry Classification: NAICS codes and descriptions
  • Contract Description: Plain-text description of the contract scope
Source Description Update Frequency
USAspending.gov Federal contract awards mapped to stock tickers Daily

Government contracts data has 5+ years of historical awards available for backtesting, with history extending over time.

The period-of-performance startDate is a fixed, clean timing anchor for event studies and backtests. Award records are deduplicated by federal award ID and updated as contracts evolve, so awardAmount and endDate reflect the latest reported state of each award rather than a historical snapshot. For strictly look-ahead-free work, anchor on startDate and treat the award amount as a current-state field.

Note: awardType and contractAwardType are present in the schema but are not populated by the source award endpoint — use naicsDescription for sector and category classification.

Browse government contracts for any ticker directly in the FinBrain Terminal — with summary stats, filtering, and contract details at a glance.

LMT Government Contracts in FinBrain Terminal
Government contracts for Lockheed Martin (LMT) in the FinBrain Terminal

Use the Government Contracts screener to scan recent contract awards across all tickers, with filtering by company, agency, industry, and award amount.

Government Contracts Screener
Government Contracts screener showing recent federal contract awards
from finbrain import FinBrainClient
fb = FinBrainClient(api_key="YOUR_API_KEY")
df = fb.government_contracts.ticker("LMT", as_dataframe=True)
print(df)

For complete code examples in Python, JavaScript, C++, Rust, and cURL, see the API Reference.

Field Description Example
awardId Unique federal award identifier (dedup key) CONT_AWD_0001
awardAmount Total award value in USD (latest reported state) 50000000
awardingAgency Federal agency issuing the contract Department of Defense
awardingSubAgency Sub-agency within the awarding agency Department of the Army
recipientName Company receiving the contract Lockheed Martin Corporation
startDate Period-of-performance start (YYYY-MM-DD) — the point-in-time anchor 2025-06-01
endDate Period-of-performance end (YYYY-MM-DD) 2026-06-01
description Plain-text description of the contract Aircraft maintenance services
naicsCode NAICS industry classification code 336411
naicsDescription Human-readable NAICS description Aircraft Manufacturing
awardType, contractAwardType Present in the schema but not populated by the source award endpoint — use naicsDescription for classification (empty)

Scan defense tickers to find companies with the highest total contract value:

from finbrain import FinBrainClient
fb = FinBrainClient(api_key="YOUR_API_KEY")
def scan_contract_value(symbols):
"""Find companies with the highest government contract value"""
results = []
for symbol in symbols:
try:
df = fb.government_contracts.ticker(symbol, as_dataframe=True)
total_value = df["awardAmount"].sum()
results.append({
"symbol": symbol,
"contracts": len(df),
"total_value": total_value
})
except Exception:
continue
return sorted(results, key=lambda x: x["total_value"], reverse=True)
defense_symbols = ["LMT", "RTX", "GD", "NOC", "BA"]
recipients = scan_contract_value(defense_symbols)
for r in recipients:
print(f"{r['symbol']}: {r['contracts']} contracts, ${r['total_value']:,.0f} total value")

Analyze which federal agencies award contracts to a given company:

from finbrain import FinBrainClient
fb = FinBrainClient(api_key="YOUR_API_KEY")
def agency_breakdown(symbol):
"""Break down contracts by awarding agency"""
df = fb.government_contracts.ticker(symbol, as_dataframe=True)
by_agency = df.groupby("awardingAgency").agg(
contracts=("awardAmount", "count"),
total_value=("awardAmount", "sum")
).sort_values("total_value", ascending=False)
return by_agency
agencies = agency_breakdown("LMT")
for agency, row in agencies.iterrows():
print(f"{agency}: {row['contracts']} contracts, ${row['total_value']:,.0f}")

Categorize contracts by size to understand the award distribution:

import pandas as pd
from finbrain import FinBrainClient
fb = FinBrainClient(api_key="YOUR_API_KEY")
def contract_size_distribution(symbol):
"""Categorize contracts by size buckets"""
df = fb.government_contracts.ticker(symbol, as_dataframe=True)
bins = [0, 1_000_000, 10_000_000, 100_000_000, float("inf")]
labels = ["Under $1M", "$1M–$10M", "$10M–$100M", "$100M+"]
df["size_bucket"] = pd.cut(df["awardAmount"], bins=bins, labels=labels)
distribution = df.groupby("size_bucket", observed=True).agg(
contracts=("awardAmount", "count"),
total_value=("awardAmount", "sum")
)
return distribution
dist = contract_size_distribution("RTX")
for bucket, row in dist.iterrows():
print(f"{bucket}: {row['contracts']} contracts, ${row['total_value']:,.0f}")