Skip to main content
Glama
Panda Public Funding Tools

Panda Public Funding Tools

USAspending Scraper: Federal Contract Awards & Recompete Finder

federal_contract_finder
Read-only

Find US federal prime contract awards and recompete leads by keyword, NAICS, agency, recipient, or set-aside; identify incumbents, competitor history, and contracts ending soon.

Instructions

Find US federal prime contract awards on USAspending.gov by keyword, NAICS, PSC, agency, place of performance, set-aside or recipient, or switch to recompete mode to list contracts whose period of performance ends soon. Unlike grants_finder (assistance grants and research awards) and sbir_sttr_topic_radar (open SBIR/STTR topics), this returns procurement contracts with incumbent, UEI and end date. Use when you need incumbents, competitor contract history, market sizing by NAICS/agency, or recompete pipeline leads. Do not use for grants (use grants_finder) or for open solicitations you can bid on today (USAspending holds awards, not SAM.gov notices). Parameters: mode=awards honors sortBy and dateFrom/dateTo (activity window, default last 24 months); mode=recompete ignores sortBy, sorts by soonest end date and uses recompeteMonths as the window. NAICS prefixes cover all child codes. recipientNames accepts company names or UEIs for competitor lookups. Keywords under 3 characters are rejected. Returns per item: agentSummary, awardId, recipientName, recipientUei, amount, awardingAgency, awardingSubAgency, naicsCode, pscCode, description, startDate, endDate, monthsLeft, status, performanceState, url.

Behavior: read-only; runs the Apify Actor pandadad0214/federal-contract-finder (https://apify.com/pandadad0214/federal-contract-finder) on your own Apify account. Price: $0.002 per contract found. Runs that find nothing are not charged per result, and spending is capped per call by run_max_charge_usd (default $0.50). run_max_items (default 50) limits items returned and fills maxResults when you leave it unset, so it also limits what is billed; setting maxResults higher can bill more than is returned. Most calls finish in 5-15 s for a few inputs; large inputs or crawls can take minutes, so raise run_timeout_secs (max 300) or shrink the input after a timeout error. Returns JSON {actor, count, items}; long text output is trimmed to whole items, with all items in structuredContent.

Input Schema

NameRequiredDescriptionDefault
modeNoMode. Contract awards = awards that match your filters, sorted as you choose. Recompete radar = only contracts whose period of performance ends between today and the number of months below (incumbent contracts likely to be re-solicited), soonest first. Choices: awards = Contract awards; recompete = Recompete radar (contracts ending soon).awards
dateToNoActivity to date. Optional. 2026, 2026-09 or 2026-09-30. Default: today.
sortByNoSort (contract awards mode). Largest awards first, newest start date first, latest end date first, or most recently modified first. Recompete radar always sorts by end date, soonest first. Choices: amount = Largest amount; newest = Newest start date; endingSoon = Latest end date; recentlyModified = Recently modified.amount
agenciesNoAwarding agencies. Optional. Department or sub-agency by name or abbreviation, e.g. DOD, VA, GSA, DHS, Department of the Army, Missile Defense Agency, Forest Service.
dateFromNoActivity from date. Optional. 2024, 2024-06 or 2024-06-30. Awards with a contract action (signed or modified) on or after this date. Default: 24 months ago (36 months in recompete mode). Earliest 2007-10-01.
keywordsNoKeywords. Words to find in the award description, recipient or codes, e.g. cybersecurity, janitorial, drone. Each keyword at least 3 characters; rows matching any keyword are returned. At least one filter (keywords, NAICS, PSC, agency, recipient, state or set-aside) is required.
pscCodesNoPSC codes. Optional. Product and Service Codes (what was bought), e.g. D399 other IT, R425 engineering support, S201 custodial.
maxAmountNoMaximum award amount (USD). Optional. Whole number, 0 or more USD.
minAmountNoMinimum award amount (USD). Optional. Whole number, 0 or more USD.
setAsidesNoSet-aside types. Optional. Only awards made under these small-business set-asides.
maxResultsNoMaximum results. You pay per returned contract, so this also caps the cost. Whole number, 1 to 5,000; default 100.
naicsCodesNoNAICS codes. Optional. 2 to 6 digit NAICS industry codes; a prefix covers all codes under it (5415 = computer systems design). Examples: 541512 IT services, 561720 janitorial, 236220 commercial construction.
contractTypesNoContract types. Optional. Default: all four prime contract types.
run_max_itemsNoOptional. Most results to return from this call (default from PANDA_MAX_ITEMS, 50). Also limits how many results the Actor produces and charges for, unless you set its own max field.
recipientNamesNoRecipient (company) names. Optional. Company names or UEIs to look up a competitor's or partner's contracts, e.g. Booz Allen.
recompeteMonthsNoRecompete window (months). Recompete radar only: keep contracts that end within this many months from today. Whole number, 1 to 36; default 12.
run_timeout_secsNoOptional. Seconds to wait for results (default from PANDA_TIMEOUT_SECS, 120; max 300).
performanceStatesNoPlace of performance (states). Optional. 2-letter US state codes where the work is done, e.g. AZ, TX, DC.
run_max_charge_usdNoOptional. Hard spending cap for this call in USD (default from PANDA_MAX_CHARGE_USD, 0.50).

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, idempotentHint=false and destructiveHint=false, yet the description adds substantial context beyond them: per-contract pricing ($0.002), a hard per-call cap via run_max_charge_usd, the fact that empty runs aren't billed, that run_max_items also constrains billing, that raising maxResults can bill more than is returned, and 5-15s typical latency with a 300s timeout ceiling. The one gap is that it doesn't explain why idempotentHint is false (e.g. that each call creates a fresh Actor run on the user's Apify account), which is the behavior an agent is most likely to get wrong on retries.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The text is front-loaded with purpose, then differentiation, then per-mode parameter behavior, then operational/cost behavior — a sensible information hierarchy with no filler sentences. It is nonetheless long for a description, and the middle "Parameters:" passage repeats several facts the 100%-covered schema already states.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 19-parameter tool with no output schema, the description stays complete: it enumerates the per-item return fields (agentSummary, awardId, recipientUei, monthsLeft, status, url, etc.), the top-level response envelope {actor, count, items}, cost and timeout guardrails, and the empty-result case. An agent has everything needed to call this correctly and interpret the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3; the description earns a lift by documenting cross-parameter interactions the schema does not fully surface — that mode=recompete ignores sortBy, sorts by soonest end date and uses recompeteMonths as its window, and that run_max_items back-fills maxResults when it is unset. Other parameter notes (NAICS prefixes, UEI support in recipientNames, 3-character keyword minimum) restate what the schema already says, so it is not a full 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence names a specific verb and resource (find US federal prime contract awards on USAspending.gov) and enumerates the filterable dimensions. It immediately distinguishes itself from grants_finder and sbir_strtr_topic_radar by naming both and stating what each covers, so an agent can disambiguate without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states explicit positive use cases (incumbents, competitor contract history, market sizing by NAICS/agency, recompete pipeline leads) and explicit exclusions with named alternatives ("Do not use for grants… use grants_finder", "not open solicitations… USAspending holds awards, not SAM.gov notices"). The when-to-use/when-not matrix is complete.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.