Government Contract Scraper - USAspending avatar

Government Contract Scraper - USAspending

Pricing

from $0.70 / 1,000 awards

Go to Apify Store
Government Contract Scraper - USAspending

Government Contract Scraper - USAspending

USAspending has no period-of-performance filter, and sorting by end date returns 1995 one way and 3017 the other. So you cannot ask which contracts expire soon. This computes it, flags the corrupt dates, and ranks expiring awards by value with incumbent, outlay rate and vendor concentration.

Pricing

from $0.70 / 1,000 awards

Rating

0.0

(0)

Developer

Datalayer

Datalayer

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

7 days ago

Last modified

Share

USAspending Scraper — Federal Contracts & Recompetes

Scrape US federal contract awards from USAspending, with the thing the API will not give you: which contracts are about to end.

That moment is the whole basis of a government-sales pipeline. It is when an incumbent can be displaced, when a recompete goes out, and when a bid team needs to already be in the room. USAspending publishes every award — and cannot filter on it.

Why this is not a thin API wrapper

Two facts, both verified live on 2026-08-14:

1. There is no period-of-performance filter. time_period.date_type accepts only action_date, date_signed, last_modified_date and new_awards_only. Ask for anything else and the API returns 422 and lists them. So "expiring in the next 180 days" cannot be requested. It has to be pulled and computed.

2. Sorting by End Date does not rescue you. Ascending, the first page comes back with an award that starts in 1999 and ends in 1995. Descending, the top rows are 3017-04-30, 2100-12-31 and 2099-12-31. Both ends of that sort are data-entry garbage, so a naive "sort by end date" recompete list is worthless.

This actor therefore computes daysUntilEnd itself, flags implausible dates rather than trusting them, and keeps them out of the radar. In a live sample of 100 top-value contracts, 1 carried a corrupt date.

What you get

The recompete radar. Every award ending inside your window, biggest money first, with the incumbent, the sub-agency and the value. A live run on 2026-08-14 surfaced:

IncumbentValueEndsDaysSub-agency
The Boeing Company$22.4B2026-09-3047NASA
TriWest Healthcare Alliance$8.4B2026-12-31139Defense Health Agency
The Boeing Company$7.6B2026-08-3117Department of the Navy
Chemonics International$6.7B2026-11-28106USAID

Outlay rate. How much of the award has actually been paid out. A contract at 5% outlay two months from its end date is not really being delivered — that gap is a bid signal, and it is one join the API makes you do yourself.

Vendor concentration per agency. What share of an agency's spend in your slice went to its single largest contractor. In the same live run, NASA sat at 67.9% to one vendor and DoD at 26.4%. High concentration is both a competitive warning and a target.

Grants too. Contracts, IDVs, grants, loans and direct payments are all supported. Assistance awards carry CFDA numbers instead of NAICS, and the actor requests the right field set per family rather than asking for columns that come back null.

Who uses this

  • Government-sales and capture teams — building a recompete pipeline instead of waiting for a solicitation to appear.
  • Competitive intel — watching a named competitor's book of business and when it expires.
  • Small business and set-aside contractors — filtering to SBA, 8(a) or SDVOSB work in their NAICS.
  • Analysts and journalists — agency spend concentration and vendor share.

Input

FieldTypeDefaultNotes
awardTypesarray["contracts"]contracts, idvs, grants, loans, direct_payments
recompeteWindowDaysinteger180Computed locally — the API cannot filter on it
expiringOnlybooleanfalseDrop award rows outside the window
agencystring""Exact top-tier name, e.g. Department of Defense
keywordsarray[]Free-text search across the award
naicsCodes / pscCodesarray[]Contracts and IDVs only
setAsideTypesarray[]e.g. SBA, 8AN, SDVOSBC
recipientSearchstring""Watch one contractor
placeOfPerformanceStatesarray[]Two-letter state codes
minAwardAmount / maxAwardAmountinteger00 means no bound
fromDate / toDatestring""Action date; defaults to the last two years
maxAwardsPerTypeinteger200100 per page, largest first

Agency summaries are always computed on everything collected, even with expiringOnly on — otherwise the concentration figures would describe your filter rather than the agency.

Output

awardawardId, recipientName, awardAmount, totalOutlays, outlayRatePercent, awardingAgency, awardingSubAgency, fundingAgency, startDate, endDate, durationDays, daysUntilEnd, isExpiringSoon, isExpired, hasImplausibleDates, NAICS/PSC, place of performance, awardUrl.

recompete — the expiring subset, repeated as its own row type so the pipeline reads on its own, sorted biggest money first.

agency_summaryawards, totalAwardValue, medianAwardValue, distinctRecipients, topRecipient, topRecipientSharePercent, expiringSoonAwards, expiringSoonValue, awardsWithImplausibleDates.

Limits

  • daysUntilEnd reflects the current period of performance. An option year exercised after the run will move it.
  • Award amounts can be negative on a de-obligation. That is real data, not a parsing error, and the outlay rate is suppressed rather than reported as nonsense.
  • USAspending data lags contract actions by days to weeks.

Pricing

Pay per event. $0.001 per award, $0.01 per recompete, $0.05 per agency summary.