Prime-Win Subcontract Radar: Federal Award Alerts by NAICS avatar

Prime-Win Subcontract Radar: Federal Award Alerts by NAICS

Pricing

from $1,250.00 / 1,000 matched award alerts

Go to Apify Store
Prime-Win Subcontract Radar: Federal Award Alerts by NAICS

Prime-Win Subcontract Radar: Federal Award Alerts by NAICS

Monitor USAspending for new federal government contract awards in the NAICS codes, states and agency you name. Each alert names the prime contractor, obligated amount, business size, a size-gated FAR 19.702 indicator and a sample of that prime's awards, so you can rank subcontracting opportunities.

Pricing

from $1,250.00 / 1,000 matched award alerts

Rating

0.0

(0)

Developer

Paul Mikulskis

Paul Mikulskis

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

4 days ago

Last modified

Share

Prime-Win Subcontract Radar watches the NAICS codes, place-of-performance states, and awarding agency you name and delivers freshly-awarded federal prime contracts that match your filter. It reads USAspending's keyless public feed, keeps a per-filter memory so you never see the same award twice, looks up each winning prime's business size, flags the awards where a FAR 19.702 subcontracting plan is likely, and attaches a profile sampled from the winning prime's recent federal awards, so you can see what that prime has been winning before you pitch.

This is a standing filter-watch, not a bulk export: each run returns only the awards that are new to your filter.

What does Prime-Win Subcontract Radar do?

Every run queries USAspending's public award-search API (api.usaspending.gov, keyless, public-domain FPDS-sourced data) for newly-awarded prime contracts matching your NAICS, states, agency, minimum amount, and award types, using the API's new_awards_only mode so you get new awards rather than routine modifications of old contracts. It removes any award this filter has already delivered and returns the rest as flat dataset rows. For each delivered award it fetches the award detail to resolve the prime's business size, computes subcontractingPlanLikely, and adds the prime teaming profile described below. An optional webhook posts the same new alerts to your endpoint after each run.

There is no login, no proxy, and no browser.

Why use Prime-Win Subcontract Radar?

  • Find the primes who just won. When an other-than-small prime lands a federal contract over the FAR 19.702 threshold and the work offers subcontracting possibilities, a subcontracting plan is generally required. This radar surfaces those wins on your NAICS on the next scheduled run after they publish.
  • Small primes are exempt, and the flag says so. FAR 19.702 exempts small-business primes, so an amount-only alert would waste your time on exempt small primes. subcontractingPlanLikely is TRUE only when the prime is other-than-small AND the amount clears the threshold.
  • The prime arrives with context. Every alert carries the prime's UEI, parent company, location, USAspending recipient link, and a sample of the agencies and NAICS codes it has been winning, so you can judge the prime's fit without leaving the row.
  • No duplicates. Each filter remembers what it has already delivered, so an overlapping window costs nothing and repeats nothing.
  • Bounded cost. maxAlertsPerRun caps how many alerts one run can deliver, and it defaults to 10, so a broad first-run catch-up bills at most 12.50 USD of alerts.
  • Public record. Federal contract award data is public. The records are FPDS federal procurement data, read here from USAspending.gov, the public feed the U.S. Treasury operates.

Who uses this

Small businesses that pursue subcontracting opportunities under federal prime contractors, including 8(a), HUBZone, SDVOSB and WOSB firms, and the capture or business development person who works prime teaming. If your pipeline depends on knowing which prime just won a government contract in your NAICS and region, this is a standing monitor for exactly that: it watches the public award feed so you do not have to re-run searches by hand, and every match names the prime, its business size, and the award behind it.

It is not a bid-matching service and it does not promise you work. A prime is under no obligation to pick any given subcontractor. What it gives you is the award, the prime, and enough context on that prime to decide whether to pitch.

How to use Prime-Win Subcontract Radar

  1. In the Input tab, list the NAICS codes you watch (for example 541611 for management consulting, or 236220 for commercial and institutional building construction).
  2. Optionally narrow by Place of performance states and an Awarding agency. At least one of NAICS, states, or agency is required.
  3. Set a Minimum award amount if you want to skip smaller awards. The FAR flag is still evaluated at its own threshold, independent of this minimum.
  4. Run it once to preview the matches. Set Dry run to true first to preview up to five fully enriched rows, prime teaming profile included, with no PPE event charged and no filter/billing values saved; the preview rows still land in your dataset and ordinary Apify platform usage still applies.
  5. Create a daily Schedule. Each scheduled run delivers only awards you have not seen before, so overlapping windows cost nothing. The default 7-day lookback gives an award a week to publish before its award date falls out of the window; raise lookbackDays toward its maximum of 30 if the agencies you watch publish slowly.
  6. Optionally set a Webhook URL to receive each run's new alerts as a POST.
  7. Raise Max alerts per run from its default of 10 once you know how many awards your filter matches. Anything over the cap is not billed and redelivers on the next run.

Give each distinct filter its own Filter name so its deduplication memory stays separate.

Input

FieldRequiredDefaultDescription
naicsCodesOne of these threenoneUp to 25 NAICS codes (2 to 6 digits each; a short code matches its whole sector).
placeOfPerformanceOne of these threenoneUp to 15 two-letter state codes for where the work is performed.
awardingAgencyOne of these threenoneA toptier awarding-agency name.
minAwardAmountNo750000Only awards obligated at or above this amount are returned.
awardTypeCodesNo["A","B","C","D"]Definitive contracts by default; you may add IDV codes.
lookbackDaysNo7Days back from today (America/New_York) to query on the award date, 1 to 30. Overlap is free because delivered awards are deduplicated.
maxAlertsPerRunNo10Hard cap on alerts delivered and charged in one run, 1 to 500. Overflow redelivers next run.
webhookUrlNononeOptional https URL that receives new alerts as a POST.
filterNameNodefaultNames this filter so its dedupe memory persists across runs.
dryRunNofalsePreview up to 5 rows tagged dry-run. Charges no PPE event and saves no filter/billing values; named stores are still opened/read, preview rows still land in the dataset/OUTPUT, and ordinary platform usage still applies.
includePrimeProfileNotrueAttach the winning prime's teaming profile to each alert at no extra charge. Set it to false to skip the lookup and finish sooner.

A ready-to-run example (also the prefilled input):

{
"naicsCodes": ["541611", "541512", "541519"],
"minAwardAmount": 900000,
"lookbackDays": 14,
"filterName": "default"
}

That is the Store example filter: management consulting plus IT services, nationwide, at or above the 900,000 USD FAR 19.702 threshold. It returns a mix of other-than-small primes, where the indicator is true, and small-business primes, where the size gate correctly leaves it false.

Output

Each new award is one flat dataset row. You can download the dataset in JSON, HTML, CSV, or Excel.

{
"rowType": "alert",
"awardId": "CONT_AWD_205AE926F00084_2050_2032H523A00001_2050",
"piid": "205AE926F00084",
"recipientName": "ACCENTURE FEDERAL SERVICES LLC",
"obligatedAmount": 18479344.49,
"awardingAgency": "Department of the Treasury",
"naicsCode": "541512",
"naicsDescription": "COMPUTER SYSTEMS DESIGN SERVICES",
"placeOfPerformanceState": "VA",
"lastModifiedDate": "2026-07-02",
"recipientBusinessSize": "Not Designated a Small Business",
"subcontractingPlanLikely": true,
"subcontractingPlanBasis": "Obligated $18,479,344 at or above the $900,000 threshold (NAICS 541512) AND prime is Not Designated a Small Business (FAR 19.702). Indicator only; verify residual exemptions before relying on it.",
"awardType": "A",
"awardUrl": "https://www.usaspending.gov/award/CONT_AWD_205AE926F00084_2050_2032H523A00001_2050",
"primeUei": "C47BNA8GM833",
"primeParentName": "NOVETTA SOLUTIONS, LLC",
"primeCity": "ARLINGTON",
"primeState": "VA",
"primeRecipientUrl": "https://www.usaspending.gov/recipient/d41a6b8a-9d6a-0d28-7e24-989e31731aad-C/latest",
"awardSetAsideCode": null,
"primeAgenciesServed": [
{ "agency": "Department of Defense", "awards": 18 },
{ "agency": "Department of Energy", "awards": 15 },
{ "agency": "Department of State", "awards": 14 },
{ "agency": "Department of the Treasury", "awards": 13 },
{ "agency": "Department of Homeland Security", "awards": 8 }
],
"primeNaicsMix": [
{ "code": "541512", "description": "COMPUTER SYSTEMS DESIGN SERVICES", "awards": 70 },
{ "code": "541519", "description": "OTHER COMPUTER RELATED SERVICES", "awards": 16 },
{ "code": "541511", "description": "CUSTOM COMPUTER PROGRAMMING SERVICES", "awards": 4 },
{ "code": "541611", "description": "ADMINISTRATIVE MANAGEMENT AND GENERAL MANAGEMENT CONSULTING SERVICES", "awards": 3 }
],
"primeAwardsSampled": 100,
"primeObligatedSampled": 16400090512.14,
"primeHistoryFrom": "2023-08-09",
"primeHistoryTo": "2026-08-09",
"primeHistoryTruncated": true,
"primeProfileStatus": "ok",
"filterName": "default",
"billing": "included-tier",
"source": "https://api.usaspending.gov/api/v2/search/spending_by_award/"
}

The profile numbers above are the real USAspending figures for that prime read on 2026-08-09, and primeHistoryTruncated: true means 100 awards is where the sample stops, not where this prime's history stops.

A summary record is also written to the run's key-value store under OUTPUT with counts for the run: new awards, alerts delivered by tier, any rows withheld at your charge limit or the alert cap, the seen-set size, the feed's newest modified date, the feed lag in days, how many awards flagged subcontractingPlanLikely, and how many prime profiles resolved, came back unavailable, or fell past the per-run lookup budget.

Alert data fields

FieldMeaning
awardIdThe award's generated_internal_id. This is the deduplication key.
piidThe human award / contract number.
recipientNameThe winning prime.
obligatedAmountThe award's current total obligation (USD).
awardingAgencyThe awarding agency and sub-agency where present.
naicsCode, naicsDescriptionThe award's NAICS.
placeOfPerformanceStateWhere the work is performed.
lastModifiedDateThe award's last modified date (YYYY-MM-DD).
recipientBusinessSizeThe prime's size: "Not Designated a Small Business", "Small Business", or "unconfirmed" when the size lookup fails.
subcontractingPlanLikelyTRUE only when the amount clears the FAR 19.702 threshold AND the prime is other-than-small. Fails safe to FALSE when size is unconfirmed. An indicator, not legal advice (see below).
subcontractingPlanBasisThe amount, threshold, NAICS, and size behind the flag.
awardTypeThe resolved award type.
awardUrlA USAspending link to verify the award.
filterName, billing, sourceThe filter this row belongs to, its billing tier, and the source API URL.

Prime teaming profile fields

Every alert also carries a profile of the winning prime, included in the alert price. Read the Sampled fields carefully: they describe a sample, and the exact window they sampled ships on the row.

FieldMeaning
primeUeiThe prime's UEI, or null when the lookup did not resolve one.
primeParentNameThe parent recipient USAspending records for this prime, where there is one.
primeCity, primeStateThe prime's recorded business location.
primeRecipientUrlA link to the prime's USAspending recipient page.
awardSetAsideCodeThe raw FPDS type_set_aside code on this award, passed through uninterpreted. This actor does not translate the code, because the code-to-meaning mapping is not authoritatively verified here.
primeAgenciesServedUp to five {agency, awards} entries, ranked by award count within the sample.
primeNaicsMixUp to five {code, description, awards} entries, ranked by award count within the sample.
primeAwardsSampledHow many awards are in the sample. It stops at 100. It is not the prime's total award count.
primeObligatedSampledThe sum of award amounts across the sample only. It is not a lifetime, total, or complete obligated figure.
primeHistoryFrom, primeHistoryToThe exact window the sample covers, the trailing three years from the run date.
primeHistoryTruncatedTrue when the prime has more awards in the window than the sample holds, so you know the sample is partial.
primeProfileStatusok, unavailable (the lookup failed or no recipient key resolved), skipped-budget (this run already profiled 25 distinct primes), or disabled (you set includePrimeProfile to false).

What the prime profile is, and what it is not

The profile samples the prime's 100 largest definitive prime-contract awards in the trailing three years, ranked by award amount. That is a sample, not a total: a prime with, say, 400 awards in the window contributes only its 100 largest, and primeHistoryTruncated tells you when that happened. The sample reads award types A to D even when your own filter includes IDV codes.

The profile is context on the prime, not evidence that they will subcontract. It shows which agencies and NAICS codes the prime has been winning, which is useful for deciding whether your capability lines up with their book of work, and nothing more.

It carries no subaward history. USAspending's subaward search matches the sub-awardee side, so it cannot answer "who does this prime subcontract to", and the per-award subaward endpoint returns nothing for freshly-awarded contracts, which is exactly what this radar alerts on.

If the profile lookup fails for any reason, the alert still delivers, still costs the same, and says primeProfileStatus: "unavailable" with the sampled fields left null. One run profiles at most 25 distinct primes; alerts beyond that deliver normally with skipped-budget.

Demo dataset

The public demo dataset is at https://api.apify.com/v2/datasets/T2TYSMf0XP7b4DY6g/items?format=json. It holds real USAspending prime-award alert rows produced by a live run of the Store example filter with dry-run preview enabled, so no filter memory was written and no alert event was billed to produce it. The rows carry the full alert shape shown above, prime teaming profile included.

Pricing

The actor is billed per event.

  • Monthly filter watch fee: 5.00 USD per filter. Charged at most once per filter per calendar month, on the first run that completes a fresh feed query and has room in its charge budget.
  • Alert: 1.25 USD per delivered award for the first 100 alerts a filter delivers in a month. The prime teaming profile is included in this price; it adds no event and no surcharge, whether it resolves, comes back unavailable, or you switch it off.
  • Volume alert: 0.60 USD per delivered award beyond the first 100 in a month, once a broad NAICS returns that many matches.
  • First calendar month free of the watch fee. The 5.00 USD watch fee is waived during your account's first calendar month; alerts still bill per alert. The free month applies once per account.

A dry run charges no PPE event and saves no filter or billing values, though its named watch and billing stores are still opened and read, its preview rows still land in the dataset and OUTPUT, and ordinary Apify platform compute, storage and egress usage still applies. The preview rows are fully enriched, prime teaming profile included, so you can see the finished row before anything bills. A run that cannot complete its query charges nothing. When the national feed has not published a new award in more than 10 days, the watch fee is deferred until it does, so you never pay to watch a stalled pipeline. Alerts withheld because you reached your run's max-charge limit or your maxAlertsPerRun cap are not billed and are redelivered on the next run, with one marker row noting how many were held back and why.

If your run's charge budget cannot cover the 5.00 USD watch fee, the fee is deferred and your alerts are still delivered. Apify caps how much a single run may charge, and on the free plan that cap is your remaining monthly allowance, which can be smaller than the watch fee. Rather than spend your whole budget on the subscription fee and leave nothing for the alerts it exists to deliver, the run skips the fee for now, bills only the alerts that fit, and charges the fee on a later run that month once there is room. The run summary reports this as watchMonthDeferredNoHeadroom.

How much a filter costs depends on how many awards match it, and the way to find that out for your own NAICS and states is a dry run, which charges no alert event. The broader the filter, the more alerts, which is exactly why maxAlertsPerRun exists as a hard per-run ceiling. At its default of 10, a single run bills at most 12.50 USD of alerts, and you raise the cap deliberately once you have seen your filter's real volume. You start at 0 USD: nothing bills until an award is delivered.

Publish lag

This is a fresh-award radar, not a real-time firehose. Federal award data reaches USAspending through FPDS with a lag that varies by agency and NAICS and can run from days to weeks. The feedLagDays field in the run summary reports the lag observed on every run, so you work from the measured number for your own filter rather than an estimate of ours. A competitor pulling SAM.gov award notices may beat this on latency for some awards; this actor's edge is the standing per-filter memory, the size-gated flag, and the dedupe, not raw speed.

subcontractingPlanLikely is a prioritization signal. It is TRUE only when the award's obligated amount clears the current FAR 19.702 dollar threshold (900,000 USD generally, 2,000,000 USD for construction NAICS beginning 23) AND the winning prime is other-than-small. Small-business primes are exempt from the subcontracting-plan requirement, which is the whole point of the size gate: an amount-only flag would wrongly turn TRUE on every small-business set-aside win. When the prime's size cannot be confirmed the flag fails safe to FALSE and says so. Residual exemptions the public fields cannot always see (personal-services contracts, performance wholly outside the United States, no subcontracting possibilities) mean you should verify before relying on the flag for any specific award. It points you at the awards worth a closer look; it does not make the legal determination for you.

What changed in this update

The per-prime teaming profile now ships inline on every alert rather than as a separate paid lookup, so the row tells you who won and what that prime has been winning in one place.

maxAlertsPerRun now defaults to 10 instead of 50, so a first curiosity run on a broad filter bills at most ten alerts. Withheld alerts are not billed and redeliver on the next run exactly as before, with the same marker row explaining the stop.

FAQ, limitations, and support

  • Is this data legal to use? Federal contract award data is public. The records are FPDS federal procurement data, and this actor reads them from USAspending.gov's public keyless API, a site operated by the U.S. Treasury.
  • How fresh is the data? The FPDS-to-USAspending publish lag varies by agency and NAICS and can run from days to weeks. The feedLagDays field reports the lag observed on every run, so you can see it for your own filter.
  • Which NAICS and states are covered? Any valid NAICS (up to 25 per filter) and any of the 50 states, DC, and territories (up to 15 per filter).
  • Does the prime profile show who the prime subcontracts to? No. USAspending's subaward search matches the sub-awardee side, not the prime side, and the per-award subaward endpoint is empty for freshly-awarded contracts. The profile shows the prime's own recent award sample instead, and claims nothing about their subcontracting behavior.
  • Is primeObligatedSampled the prime's total federal revenue? No. It sums the sample only: the prime's 100 largest prime-contract awards in the trailing three years. When primeHistoryTruncated is true there are more awards than the sample holds.
  • How reliable is the webhook? It is best-effort alerting with retries. The dataset is the durable record. If you need to verify the caller, put a secret token in your webhook URL.
  • What happens if the feed changes shape? The actor checks the response structure on every run and stops without charging if a field it depends on is missing, rather than delivering broken rows.

For issues or a custom variant, use the Issues tab on the actor page.