USAspending Grants Scraper & Monitor avatar

USAspending Grants Scraper & Monitor

Pricing

from $3.00 / 1,000 results

Go to Apify Store
USAspending Grants Scraper & Monitor

USAspending Grants Scraper & Monitor

USAspending grants scraper and monitor for US federal assistance awards. Official USAspending.gov API, no API key. Filter by Assistance Listing (CFDA), agency, recipient or performance state, amount and keywords; get only awards new since your last run.

Pricing

from $3.00 / 1,000 results

Rating

0.0

(0)

Developer

GovData Tools

GovData Tools

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

Get a feed of US federal grants and other assistance awards from USAspending.gov as JSON, CSV or Excel, and receive only the awards that are new since your last run. Built for grant consultants and writers, university research offices, and B2B sellers who want to reach organisations that just received federal funding. No account or API key needed.

Why this Actor

  • Official source. It calls the public USAspending.gov API (api.usaspending.gov, the spending_by_award search). No scraping of web pages, no login, no key. Not affiliated with or endorsed by USAspending.gov or the US government.
  • Filter by program. Give one or more Assistance Listing (CFDA) numbers, for example 93.847 (NIH diabetes, digestive and kidney diseases research), and get the awards made under them.
  • Built for a recurring "new awards" feed. The Actor can remember which awards it already returned, separately for every distinct filter combination (in practice one per saved task). Put it on an Apify Schedule, turn on onlyNew, and each run returns only what is new.
  • Grants by default, other assistance on request. Block, formula, project grants and cooperative agreements are returned by default. Direct payments, loans, insurance and other assistance can be added with assistanceTypes.
  • No personal data. Rows for individual recipients and redacted or aggregated rows (for example "REDACTED DUE TO PII", "MULTIPLE RECIPIENTS") are dropped and never output. No contact or officer fields are requested.
  • Pairs with the other federal data Actors. Output uses the same field names as the USAspending Contract Awards Scraper & Monitor where concepts overlap. For open contract opportunities see the SAM.gov Contract Opportunities Scraper & Monitor.

What data you get

One flat item per award (not per modification). Dates are ISO 8601; the last-modified timestamp is returned as published, without a timezone. Fields the source leaves empty are null.

FieldMeaning
awardId, generatedInternalId, awardTypeFederal award identification number (FAIN or URI), USAspending's unique key, assistance award type
recipientName, recipientUeiRecipient organisation and its Unique Entity ID
recipientCity, recipientState, recipientCountryRecipient location
awardAmountTotal obligated amount in USD (number)
dateSigned, startDate, endDateBase obligation date, period of performance start and end
department, subTier, fundingAgencyAwarding top-tier agency, awarding sub-agency, funding agency
cfdaNumber, cfdaTitlePrimary Assistance Listing number and title
descriptionAward description, truncated to 2,000 characters, email addresses removed
placeOfPerformanceCity/State/CountryWhere the funded work is performed
url, sourceUrlLink to the award on usaspending.gov, and the API endpoint used
lastModifiedDate, scrapedAtLast change in USAspending, and the run timestamp

How to use

  1. Open the Actor and set your filters, for example Assistance Listing 93.847 and recipient state MA. Leave a filter empty to skip it. The form is prefilled with 93.847 and maxItems 10 for a small test run.
  2. Click Start. The run returns the matching awards in the lookback window (lookbackDays, default 7), up to maxItems, largest awards first.
  3. To monitor, save the input as a task, turn on onlyNew and put it on an Apify Schedule. Later runs return only awards not seen before. Send results to Google Sheets, your CRM or a webhook with Apify integrations.

Example input:

{
"assistanceListings": ["93.847"],
"recipientStates": ["MA", "WA"],
"minAmount": 100000,
"dateMode": "published",
"lookbackDays": 7,
"onlyNew": true,
"maxItems": 100
}

Filters

All filters are optional. Between filters it is AND, within one filter it is OR.

InputMeaning
assistanceListingsAssistance Listing (CFDA) numbers such as 93.847
assistanceTypesExtra award types: 06/10 direct payments, 07/08 loans, 09 insurance, 11 other. Default: grants only (02-05)
agenciesCase-insensitive text match on the awarding department or sub-agency name, e.g. HEALTH, NATIONAL SCIENCE. Applied after download (see Limitations)
recipientStates, placeOfPerformanceStatesTwo-letter states
minAmount, maxAmountRange on awardAmount in USD
keywordsSearch terms passed to USAspending's own keyword search
lookbackDaysWindow size, default 7, maximum 90
dateModepublished (default), signed, anyAction, see below
maxAwardAgeDaysPublished mode only: skip awards whose base date is older than this many days. Default 180, maximum 730, 0 keeps all
onlyNew, resetStateNew-since-last-run mode (off by default) and its reset
maxItemsCap on results per run (default 100). Largest awards first

Date modes

dateModeWindow refers to
published (default)Awards added to or changed in USAspending in the window (the API's last-modified date), kept if their base date is within maxAwardAgeDays
signedThe base award was made in the window
anyActionAny action on the award, such as a modification, in the window

Only one date type works per API request, so the age limit of the published mode is applied after download. Without the seen list (onlyNew off), an award modified several times can appear in several runs.

New since last run

With onlyNew on, the Actor stores a compact list of award IDs in a named key-value store in your account (usaspending-grants-state), one entry per distinct filter combination. The first run returns everything in the window (up to maxItems); later runs return only unseen awards. Awards cut off by maxItems or a spending limit are not marked as seen, so the next run returns them. resetState starts over. Changing lookbackDays, maxAwardAgeDays or maxItems keeps the list; changing any filter, dateMode or assistanceTypes starts a separate one. Leave onlyNew off (default) to get all matches every run.

Output example

Two items in the output format (illustrative values; to be replaced by a real run's output):

[
{
"awardId": "1R01DK130001-01A1",
"generatedInternalId": "ASST_NON_1R01DK130001-01A1_DEPA",
"awardType": "PROJECT GRANT",
"recipientName": "UNIVERSITY OF EXAMPLE",
"recipientUei": "ABCDEFGH1234",
"recipientCity": "BOSTON",
"recipientState": "MA",
"recipientCountry": "UNITED STATES",
"awardAmount": 1850000,
"dateSigned": "2026-10-01",
"startDate": "2026-10-01",
"endDate": "2028-06-30",
"department": "Department of Health and Human Services",
"subTier": "National Institutes of Health",
"fundingAgency": "Department of Health and Human Services",
"cfdaNumber": "93.847",
"cfdaTitle": "DIABETES, DIGESTIVE, AND KIDNEY DISEASES EXTRAMURAL RESEARCH",
"description": "STUDY OF KIDNEY DISEASE PROGRESSION. CONTACT [email removed]",
"placeOfPerformanceCity": "BOSTON",
"placeOfPerformanceState": "MA",
"placeOfPerformanceCountry": "UNITED STATES",
"lastModifiedDate": "2026-10-20T06:12:30",
"url": "https://www.usaspending.gov/award/ASST_NON_1R01DK130001-01A1_DEPA",
"sourceUrl": "https://api.usaspending.gov/api/v2/search/spending_by_award/",
"scrapedAt": "2026-10-22T12:00:00.000Z"
},
{
"awardId": "5U01DK120003-03",
"generatedInternalId": "ASST_NON_5U01DK120003-03_DEPA",
"awardType": "COOPERATIVE AGREEMENT",
"recipientName": "STATE UNIVERSITY SYSTEM",
"recipientUei": "CDEFGHIJ3456",
"recipientCity": "AUSTIN",
"recipientState": "TX",
"recipientCountry": "UNITED STATES",
"awardAmount": 410000,
"dateSigned": "2026-10-10",
"startDate": "2026-10-10",
"endDate": "2028-06-30",
"department": "Department of Health and Human Services",
"subTier": "National Institutes of Health",
"fundingAgency": "Department of Health and Human Services",
"cfdaNumber": "93.847",
"cfdaTitle": "DIABETES, DIGESTIVE, AND KIDNEY DISEASES EXTRAMURAL RESEARCH",
"description": "DIABETES PREVENTION NETWORK",
"placeOfPerformanceCity": "AUSTIN",
"placeOfPerformanceState": "TX",
"placeOfPerformanceCountry": "UNITED STATES",
"lastModifiedDate": "2026-10-20T06:12:30",
"url": "https://www.usaspending.gov/award/ASST_NON_5U01DK120003-03_DEPA",
"sourceUrl": "https://api.usaspending.gov/api/v2/search/spending_by_award/",
"scrapedAt": "2026-10-22T12:00:00.000Z"
}
]

Pricing

Pay per result: you are charged for each award written to the dataset (Apify pay-per-event, event result). Excluded, filtered-out and already-seen awards are not charged. Set maxItems to cap the cost of a run. The current price per 1,000 results is shown on this page.

Use cases

  • Grant consultants and writers. See which organisations won awards under a program, for how much and from which institute, to find comparable funded projects and prospective clients.
  • University research offices. Track funding in your Assistance Listings, and peer institutions' awards, on a weekly schedule.
  • B2B sellers to grantees. Lab suppliers, software vendors and service firms can reach organisations that just received federal funds, filtered by program, state and amount.
  • Policy and funding analysts. Total awardAmount by agency, program or state in your own sheet.
  • Local governments and nonprofits. Follow awards in your state or place of performance.

Privacy

Only organisation-level business data is returned: recipient name, UEI and location. Individual recipients and redacted or aggregated rows are excluded. In description, email addresses are replaced with [email removed], but free text can still mention names or phone numbers.

FAQ

Do I need an account or API key? No. The Actor uses the public USAspending.gov API.

Which awards are included? Assistance awards: by default grants and cooperative agreements (types 02-05). Direct payments, loans, insurance and other assistance with assistanceTypes. Contracts are covered by the USAspending Contract Awards Scraper & Monitor. Subawards are not included.

What is awardAmount? The total obligated amount as USAspending reports it (for loans, the loan value). The amount filters are checked against this value.

What if there are more than maxItems? Largest awards first; the rest stay unseen and come on the next run when onlyNew is on.

How often is the data updated? As often as agencies report to USAspending, which varies by agency.

Is the data complete? It contains what the USAspending API returns. No completeness is guaranteed.

What if the API changes? If expected fields are missing in more than 20% of awards, or the response shape is unexpected, the run stops with an error instead of returning bad data. Temporary errors are retried with backoff; the Actor makes at most one request per second.

Is this legal to use? The Actor reads a public federal data API and does not log in to anything. You are responsible for how you use the data.

Each run writes a RUN_SUMMARY record with requests made, awards read, excluded recipients, items emitted, whether the page cap was hit, runtime and peak memory.

Limitations

  • A run reads up to 30,000 awards per award-type group (300 pages of 100, one request per second), largest first. Narrow the filters for very broad searches; truncated is set in RUN_SUMMARY when the cap is hit.
  • Agency filtering is a text match done after download, so a broad agency-only search reads every award in the window. Combine it with an Assistance Listing to keep runs small.
  • Each requested award-type group (grants, direct payments, loans, other) is a separate pass.
  • Awards with a redacted or individual recipient are not returned.

VERIFY checklist (remove before publishing)

Built while api.usaspending.gov was unreachable; these are unverified:

  • Request field names in FIELDS / LOAN_FIELDS (src/filters.js) and raw names in FIELD_MAP (src/parse.js): Award Type, Recipient UEI, Recipient Location, Primary Place of Performance, Primary Assistance Listing, Assistance Listings, Base Obligation Date, Funding Agency, Loan Value. A 400 response lists valid names.
  • Filter key program_numbers and that 93.847 matches exactly.
  • Award type codes 02-05 accepted, and that mixed groups are rejected (hence one pass per group); sort field Loan Value for loans.
  • date_type values (last_modified_date, new_awards_only, action_date) behave the same for assistance.
  • Exact markers for redacted/aggregate/individual recipients (isExcludedRecipient, src/parse.js) and whether a business-type field is available to exclude individuals more reliably.
  • Whether Base Obligation Date is populated for grants (otherwise dateSigned is null and the age filter uses startDate).
  • Prefill (93.847, 7 days) returns a non-empty dataset; if not, widen the prefill.
  • Run locally, save at most 20 items to samples/sample-output.json, replace samples/sample-output.PLACEHOLDER.json and the README output example.