Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.
openapi: 3.2.0
info:
title: Fed-Spend Intelligence Search API
description: 'Federal Spending Intelligence API for searching contracts, awards, and opportunities from USASpending and SAM.gov data sources.
## Authentication
All API endpoints require an API key passed via the `x-api-key` header.
## Rate Limits
- Free: 100 requests/day
- Researcher: 1,000 requests/day
- Professional: 10,000 requests/day
- Enterprise: Unlimited
## Response Format
All responses follow a consistent format:
```json
{
"success": true,
"data": { ... },
"meta": {
"requestId": "uuid",
"timestamp": "ISO-8601"
}
}
```'
version: 1.0.0
contact:
name: Fed-Spend Support
email: support@fed-spend.com
url: https://fed-spend.com
license:
name: Proprietary
url: https://fed-spend.com/terms
servers:
- url: https://fed-spend.com/api/v1
description: Production API
- url: http://localhost:3000/api/v1
description: Local Development
security:
- ApiKeyAuth: []
tags:
- name: Search
description: Search for federal contracts, awards, and opportunities
paths:
/search:
post:
tags:
- Search
summary: Search Federal Spending Data
description: Search across federal contracts, awards, and opportunities using various filters. Results include data from USASpending.gov and SAM.gov.
operationId: search
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/SearchRequest'
examples:
basic:
summary: Basic keyword search
value:
keyword: cloud services
maxResults: 25
filtered:
summary: Filtered search with agency and set-aside
value:
keyword: cybersecurity
agency: Department of Defense
setAsideType: 8(a)
minAmount: 1000000
maxResults: 50
naics:
summary: Search by NAICS code
value:
naicsCode: '541512'
searchMode: contracts
maxResults: 100
responses:
'200':
description: Successful search response
content:
application/json:
schema:
$ref: '#/components/schemas/SearchResponse'
'400':
description: Invalid request parameters
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Invalid or missing API key
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'429':
description: Rate limit exceeded
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
components:
schemas:
SearchResponse:
type: object
description: Referenced by this document but never defined in it. API Evangelist added this empty placeholder so the document resolves; the shape is unknown and is NOT a claim about the API.
x-ae-placeholder: true
ErrorResponse:
type: object
description: Referenced by this document but never defined in it. API Evangelist added this empty placeholder so the document resolves; the shape is unknown and is NOT a claim about the API.
x-ae-placeholder: true
SearchRequest:
type: object
description: Referenced by this document but never defined in it. API Evangelist added this empty placeholder so the document resolves; the shape is unknown and is NOT a claim about the API.
x-ae-placeholder: true