Developer documentation

Grant Search API v1

Use a sales-provisioned key to retrieve bounded, licensed grant-search results. The launch API supports city, metro, state, segment, and plain-language filters.

Authentication

Send the key in an Authorization: Bearer header. Keys are shown once during sales-assisted provisioning. Keep them on your server; never place them in browser code, mobile bundles, URLs, or logs.

Base URL: https://grantauthority.org/api/v1

GET/grants

At least one of query, city, metro, state, or segment is required. There is no unfiltered list-all request.

ParameterTypeDescription
querystringA plain-language grant search.
citystringA city served by the opportunity.
metrostringA named metropolitan area, such as Austin–Round Rock.
statestringA state or province name or code.
segmentstringA cause or program segment, such as rural health.
limitintegerRecords per response. Default 20; maximum 25.
pageintegerResult page. Default 1; maximum 20.

Example request

curl --get 'https://grantauthority.org/api/v1/grants' \
  --header "Authorization: Bearer $GRANTAUTHORITY_API_KEY" \
  --data-urlencode 'city=Austin' \
  --data-urlencode 'state=TX' \
  --data-urlencode 'segment=workforce development' \
  --data-urlencode 'limit=10'

Example response

{
  "data": [
    {
      "id": "gr_...",
      "title": "Workforce development opportunity",
      "funder_name": "Agency name",
      "summary": "Source-backed opportunity summary.",
      "award": { "minimum": 50000, "maximum": 250000 },
      "deadline": "2026-11-30",
      "geography": { "state": "TX", "country": "US" },
      "segments": ["Workforce development"],
      "applicant_types": ["Nonprofit"],
      "source_url": "https://www.grants.gov/...",
      "source_host": "grants.gov",
      "match_score": 0.91
    }
  ],
  "meta": {
    "page": 1,
    "limit": 10,
    "returned": 1,
    "record_units_consumed": 1,
    "quota_limited": false
  }
}

Usage and limits

One billable record unit is one record returned. Retrieving the same record again consumes another returned-record unit.

Separate account-wide unique-record ceilings limit enumeration across every key on the account. Rotating a key does not reset request or record allowances.

Responses include request-rate and returned-record allowance headers. A hard limit returns 429; automatic overage billing is not enabled at launch.

Only source families with an affirmative redistribution classification can appear in the paid API. Unreviewed sources are excluded rather than silently returned.

Errors

StatusCodeMeaning
400invalid_requestA filter is missing or invalid.
401invalid_api_keyThe key is invalid, expired, or revoked.
403insufficient_scopeThe key is not licensed for grant search.
403access_inactiveThe API account or key was suspended or its billing period ended.
429rate_limit_exceededThe account request-rate limit is exhausted.
429record_quota_exceededThe returned-record or unique-record allowance is exhausted.
503metering_busyThe account metering lock is busy; retry after the supplied delay.
503search_unavailableGrant search is unavailable; no records are returned.
503source_policy_unavailableSource licensing policy is unavailable; no records are returned.
503metering_unavailableUsage metering is unavailable; no records are returned.
503service_unavailableA protected API dependency is unavailable; no records are returned.

Request evaluation access

Tell us the geography, segments, expected annual record volume, and whether the data will remain internal or appear in a customer-facing product.

Request API access