XOOMAR

Free Federal Contracts API

The largest federal contract actions per day from USAspending as JSON, with the recipient mapped to its listed parent so obligations can be summed by ticker. Updated daily; late agency reports fill in over the following weeks.

Endpoints

GET
/api/markets/federal-contracts?days=7&listed=1

Largest actions in the window, 100 rows; listed=1 keeps recipients mapped to a ticker.

GET
/api/markets/federal-contracts?by=ticker&days=30

Obligations summed by listed parent in the window.

GET
/api/markets/federal-contracts?ticker=LMT

Actions for one parent, newest first, up to 200.

GET
/api/markets/federal-contracts/csv

Largest actions of the last 90 days as CSV, up to 10,000 rows.

Response shape

Every endpoint returns the same JSON envelope: { data, updatedAt, source, docs, license, attribution, meta }. In meta, source names who publishes the data and sourceAttribution is the credit line to show with it. The data field is an array of records with these fields:

FieldTypeDescription
actionDatestringDate the action was signed
awardIdstringContract or order number (PIID)
modstring | nullModification number; 0 or null is the original award
actionTypestring | nullFPDS action type code
amountUsdnumberDollars obligated by this action; negative for de-obligations
recipientNamestringRecipient legal name as registered
tickerstring | nullTicker of the recipient's listed parent; null when private or not matched
awardingAgency / awardingSubAgencystring | nullAwarding department and bureau
awardTypestring | nullDefinitive contract, delivery order, BPA call, purchase order
naicsCodestring | nullIndustry code of the work
descriptionstring | nullAgency's description of the action, up to 1,000 characters
generatedIdstring | nullUSAspending award id; https://www.usaspending.gov/award/{generatedId}

Coverage is the largest contract actions of each action date. Agencies report with up to a 90-day lag, so recent dates fill in over time.

Numeric fields typed string in the table carry exact decimals; parse them with your language's decimal type. No key needed to start: 10 requests a minute per IP without a key and 30 a minute with a free account key, with at least six months of history. A 429 response carries a Retry-After header in seconds. Credit XOOMAR with a link to the dataset page when you republish the data; the data terms are on the terms page.

A free account key raises the limit; send it in an X-API-Key header.

Frequently Asked Questions

Where does the data come from?
USAspending.gov, which publishes the Federal Procurement Data System.
What are the rate limits?
10 requests a minute per IP without a key and 30 a minute with a free account key, with at least six months of history.

Data on this page is provided for informational purposes only and is not financial advice. See our editorial policy.