USAspending Awards Search: Federal Contracts and IDVs avatar

USAspending Awards Search: Federal Contracts and IDVs

Pricing

from $2.80 / 1,000 award results

Go to Apify Store
USAspending Awards Search: Federal Contracts and IDVs

USAspending Awards Search: Federal Contracts and IDVs

Search US federal contracts and contract vehicles (IDVs) by keyword, recipient, agency, date, amount, state and NAICS code. Get flat rows with recipient, amount, agency, dates, NAICS and PSC codes. Public data, $4.00 per 1,000 awards.

Pricing

from $2.80 / 1,000 award results

Rating

0.0

(0)

Developer

Don Mangu

Don Mangu

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

an hour ago

Last modified

Categories

Share

USAspending awards search that returns one flat row per US federal contract or contract vehicle (IDV): recipient company, amount, awarding agency, dates, place of performance, NAICS and product or service codes, ready for a spreadsheet, a database or an AI agent. Pick contracts or IDVs, add keywords, a recipient or an agency, set a date range and a maximum, then run. Results cost $4.00 per 1,000 awards, and a run of 20 awards costs about eight cents. I built this Actor as an independent developer. It is not affiliated with or endorsed by USAspending.gov or the US Department of the Treasury.

Contracts and IDVs only; assistance awards are excluded because they can name individuals.

Sample output

One row from a USAspending awards search for contracts with the keyword cybersecurity, signed between 2025-10-01 and 2026-09-30, sorted by award amount. Values were read from the source on 2026-10-04 and change over time. Fields with no value (null) are left out here for space.

{
"recordType": "award",
"rank": 1,
"awardId": "47QFCA26F0024",
"awardCategory": "contracts",
"awardType": "DELIVERY ORDER",
"recipientName": "GENERAL DYNAMICS INFORMATION TECHNOLOGY, INC.",
"recipientUei": "SMNWM6HN79X5",
"recipientCity": "FAIRFAX",
"recipientState": "VA",
"recipientZip": "22030",
"recipientCountry": "UNITED STATES",
"awardingAgency": "General Services Administration",
"awardingSubAgency": "Federal Acquisition Service",
"fundingAgency": "Department of Defense",
"fundingSubAgency": "Department of the Army",
"description": "ENTERPRISE NETWORK OPERATIONS AND CYBERSECURITY SUPPORT ENOCS",
"awardAmountUsd": 87754106,
"signedDate": "2026-07-01",
"startDate": "2026-06-29",
"endDate": "2027-06-30",
"naicsCode": "541512",
"naicsDescription": "COMPUTER SYSTEMS DESIGN SERVICES",
"pscCode": "DJ10",
"pscDescription": "IT AND TELECOM - SECURITY AND COMPLIANCE AS A SERVICE",
"performanceCity": "ARLINGTON",
"performanceState": "VA",
"awardUrl": "https://www.usaspending.gov/award/CONT_AWD_47QFCA26F0024_4732_47QTCK18D0003_4732"
}

How to search USAspending awards with this Actor

  1. Open the Actor and choose an Award category: Contracts or Contract vehicles (IDVs). One run searches one category. An IDV is an indefinite delivery vehicle, a contract that agencies place later orders against.
  2. Add Keywords to find words in award descriptions, for example cybersecurity. An award that matches any keyword is returned.
  3. Add Recipients (names or UEI codes) or an Awarding agency such as Department of Defense or DOD.
  4. Enter a Start date and an End date as YYYY-MM-DD. The earliest date is 2007-10-01.
  5. Set Maximum awards. The prefill is 20, so the first run is cheap. One run returns up to 10,000 awards.
  6. Open Advanced options to choose the date type, an amount range, states, NAICS codes and the sort order.
  7. Click Start. Rows appear in the dataset as they are saved. Use the Overview table, or export to JSON, CSV or Excel.

You can also call the Actor from code through the Apify API. The example below lists the 100 largest contracts signed in fiscal year 2026 for one NAICS code.

curl -X POST "https://api.apify.com/v2/acts/conserving_celerytop~usaspending-awards-api/run-sync-get-dataset-items" \
-H "Authorization: Bearer <YOUR_APIFY_TOKEN>" \
-H "Content-Type: application/json" \
-d '{"awardCategory": "contracts", "naicsCodes": ["541512"], "startDate": "2025-10-01", "endDate": "2026-09-30", "maxItems": 100}'

What data you get from the USAspending awards API

FieldApplies toMeaning
rank, recordType, awardId, awardCategory, awardType, awardUrl, internalIdallPosition in the result, row type, award identifier, category, award type and the award page link
recipientName, recipientUei, recipientIdallRecipient organization, its UEI code and the source recipient id
recipientCity, recipientState, recipientZip, recipientCountryallRecipient location (city, state, five digit ZIP, country)
awardingAgency, awardingSubAgency, fundingAgency, fundingSubAgencyallAgencies that made and paid for the award
descriptionallAward description, cut to 1,000 characters
awardAmountUsd, totalOutlaysUsdallAward amount and total outlays in US dollars
signedDate, startDate, endDate, lastModifiedallSigning date, period of performance and last change in the source
lastDateToOrdercontract vehicles (IDVs)Last date an order can be placed
naicsCode, naicsDescription, pscCode, pscDescriptionallIndustry code and product or service code
performanceCity, performanceState, performanceZip, performanceCountryallPrimary place of performance
fetchedAtallTime the row was read
statusCode, messagemessage rowsSource status code and the plain text of a no_results or error row

Fields that do not apply to a category (endDate for IDVs, lastDateToOrder for contracts) are null, so every award row has the same columns. Street addresses and nine digit postal codes are not returned.

USAspending awards search pricing

Pricing is pay per event. One event is one saved award row, plus the standard Actor start event.

PlanPrice per awardPrice per 1,000 awards
Free$0.0040$4.00
Bronze$0.0036$3.60
Silver$0.0032$3.20
Gold$0.0028$2.80

Worked example: a search for the 500 largest contracts that mention cybersecurity returns 500 rows. On the Free plan that is 500 x $0.004 = $2.00, plus $0.00005 for the Actor start, so about $2.00 in total. The same run on the Gold plan costs $1.40.

How charging works:

  • A row is charged only after it is saved to the dataset.
  • A valid search with no matches saves one message row and charges one award.
  • A search the source rejects returns one error row with the source message and charges one award.
  • When the source is unavailable and no rows were saved, the run saves one error row and charges one award. Rows saved before such a stop are charged as usual.
  • Input the Actor rejects (for example a Maximum awards of 0, or an agency name that does not exist) ends the run with a plain message, saves one error row with that message and charges one award.
  • The run stops when the maximum charge you set for the run is reached.

Input example

{
"awardCategory": "contracts",
"keywords": ["zero trust", "cloud migration"],
"awardingAgency": "Department of Homeland Security",
"startDate": "2025-10-01",
"endDate": "2026-09-30",
"minAmount": 1000000,
"performanceStates": ["VA", "MD"],
"sortBy": "amount",
"maxItems": 200
}
FieldTypeNotes
awardCategoryselectcontracts or contract_idvs
keywordslistWords in award descriptions, 3 or more characters each, matched with OR
recipientslistRecipient names or UEI codes, matched with OR. A search for a parent company can also return its subsidiaries
awardingAgencytextFederal agency name, abbreviation or code. Checked against the official list before the search
startDate, endDatetextYYYY-MM-DD, from 2007-10-01 on
maxItemsinteger1 to 10,000
dateTypeselectnew_awards_only (signed in the period), action_date or last_modified_date
minAmount, maxAmountnumberUS dollars
performanceStates, recipientStateslistTwo letter state or territory codes
naicsCodeslist2 to 6 digit codes such as 541512
sortBy, sortOrderselectamount, startDate, lastModified or recipientName; desc or asc
onlyNewcheckboxWhen on, the run returns only awards that this monitor has not delivered before. Default off
monitorNametextNames the memory of the monitor. Letters, numbers, - and _, up to 40 characters. Default default

Output example for a contract vehicle (IDV)

{
"recordType": "award",
"rank": 1,
"awardId": "75F40126D00019",
"awardCategory": "contract_idvs",
"awardType": "INDEFINITE DELIVERY / INDEFINITE QUANTITY",
"recipientName": "DCT, INCORPORATED",
"recipientUei": "CXCYMF7NMDS4",
"recipientCity": "MCALESTER",
"recipientState": "OK",
"awardingAgency": "Department of Health and Human Services",
"awardingSubAgency": "Food and Drug Administration",
"awardAmountUsd": 9069523,
"signedDate": "2026-09-15",
"startDate": "2026-09-21",
"lastDateToOrder": "2031-09-20",
"naicsCode": "561210",
"naicsDescription": "FACILITIES SUPPORT SERVICES",
"pscCode": "Z1AZ",
"performanceState": "OK"
}

Use cases for a federal contract list

  • Build a list of agencies and companies that buy in your industry, filtered by NAICS code, state and amount.
  • Watch a competitor or a partner: search by recipient name and sort by signing date.
  • Track new contracts for a keyword or an agency each month with a scheduled run.
  • Size a market: total award amounts by agency, state or code in a spreadsheet pivot.
  • Find the contract vehicles (IDVs) a competitor holds and when their last order date falls.
  • Feed award rows with agency and amount into a sales tool, a research notebook or an AI agent.

Run it every day

Use a saved Task and a schedule to get only the new awards each day.

  1. Open the Actor, fill in your search, tick Only new since the last run and give the search a Monitor name, for example cyber-daily. Use one monitor name per saved task.
  2. Click Save as a new task.
  3. In the Apify Console open Schedules, click Create new, pick your Task and enter a cron expression for once a day, for example 0 7 * * * (every day at 07:00).
  4. Each run returns only awards that the monitor has not delivered before. The first run returns everything that matches, up to Maximum awards, and becomes the baseline.

Settings that suit a daily run:

  • Leave End date empty, so each run searches up to today.
  • Set Sort by to Start date and Sort order to Highest or newest first, so the newest awards come first.
  • Set Maximum awards above the number of new awards you expect in a day. Awards that the maximum cuts off are not remembered, so the next run delivers them.
  • Changing a search value, such as a keyword, an agency or a date, starts a new memory, and the next run counts as a first run. Changing Maximum awards or the sort order does not.
  • An award is delivered once. If the source changes the award later, it is not delivered again.

Where the memory lives: in a key-value store in your own Apify account named usaspending-monitor-<monitorName>. It holds award ids only, no award content. A run with no new awards saves no row and charges no award, only the Actor start.

Worked example on the Free plan, with the prices above ($0.004 per award, $0.00005 per Actor start). Assume a saved task with Maximum awards set to 100.

  • First run, 100 awards: 100 x $0.004 + $0.00005 = $0.40005.
  • A day with 12 new awards: 12 x $0.004 + $0.00005 = $0.04805.
  • A day with no new awards: $0.00005.
  • A 30 day month with 12 new awards every day: 30 x $0.04805 = $1.4415.

Awards that the monitor skips because it delivered them before are never charged.

FAQ

The Actor reads the public award search API of USAspending.gov without a login or an API key. The documentation of the API states: "Endpoints do not currently require any authorization." The project describes its data as "open source and provided to the public as part of the DATA Act". The Actor covers contracts and IDVs only. Assistance awards (grants, loans, direct payments and other assistance) are excluded because the source can show individuals there. Contract searches keep only recipients recorded as corporations, partnerships, LLCs, nonprofits, universities and government bodies, awards the source masks as individual recipients are left out, person-like names are checked and left out (see the FAQ), and street addresses are not returned. I found no clause on rate limits or automated use in the sources I could read, so the Actor makes one request at a time, pauses between pages and follows Retry-After. This is not legal advice.

How many awards can one run return?

Up to 10,000 awards per run. The source returns at most 50,000 results for one search, so use dates, an agency or a state to split a larger search into several runs.

Which dates does the date range use?

By default the range applies to the signing date, so you get awards first signed in the period. Choose action_date for awards with a transaction in the period or last_modified_date for awards changed in the period. Some agencies publish with a delay, so a very recent window can hold few awards.

Why are some recipients missing?

Contract and IDV searches only keep recipients recorded as an organization form, so sole proprietorships and recipients with no recorded organization type are left out (about 2 percent of contracts). Rows with masked names such as INDIVIDUAL RECIPIENT, REDACTED DUE TO PII and MULTIPLE RECIPIENTS are also left out. As a last guard, a name written like a person (for example JOHN Q PUBLIC) is left out, and a short name with no company word (for example JANE DOE) is checked once against the recipient profile and left out when the source records a sole proprietorship. Names without a company suffix are otherwise kept, because many companies have none, so a rare individual can remain when the source records them as another organization form.

Why are grants, loans and other assistance not included?

Those awards can name individuals such as sole recipients and family trusts, and this Actor returns no personal data. Contracts and IDVs go to organizations, so they are covered.

Why does an amount differ from the award page?

awardAmountUsd is the amount from the source award search. The award page on USAspending.gov reads a second table and can show a newer or different figure for the same award. Open awardUrl to compare.

The run ended with status invalid_input. What do I change?

The status message names the field, for example a date written in another format, an award category other than contracts or IDVs, or an agency name the source does not know. Fix that field and run again. The run saves one error row with the message and charges one award.

The search returned one row with a message. What does it mean?

A no_results row means no award matched: widen the dates, remove a filter or change the keywords. An error row carries the message of the source. If the source is down, run again later.

Can I restart a long run?

Yes. The Actor saves its progress after every page and continues from the saved page when the platform restarts it.

If this saved you time, a rating helps others find it.