The structured dataset behind The Grant Map
City-organized records for home-repair grants, rebates, forgivable loans, repayable financing, and other assistance across the United States. Records are structured, categorized, bilingual for descriptions and amount labels, and can carry cited URLs plus freshness and confidence signals. Live coverage counts are published at the data-health endpoint. Delivered over a REST API with key authentication.
See plans & readiness →Try it now with no key: interactive sample explorer · live data-health evidence · developer quickstart · OpenAPI 3.1 contract
What's inside
Per record: name, stated administering agency, published dollar fields, eligibility type, income requirements, special populations, project types, stored funding status, deadlines, cited URL and phone fields, plus Spanish description and amount-label fields. Some source, contact, or deadline fields may be general, blank, or stale. Each record also carries a freshness object showing the most recent stored link check, resolution status, and a scoped confidence signal.
How we keep it current
Stored cited URLs are eligible for scheduled link checks, and records expose the last-check date and link status when available. A live link proves only that the URL resolved, not that the page confirms the program, amount, status, or application route. Federal records use a separately maintained normalization layer. When freshness workers are deliberately active, city and source review rotates by priority and a change feed records detected changes. The current measured evidence—including its last-run dates—is at /api/dataset/health.
Bilingual, end to end
The record contract includes English and Spanish description and amount-label fields; program names remain in their source-language form. The API exposes fields such as description_es and maxAmountLabel_es. These translations improve access but are informational and can inherit ambiguity or errors from the underlying record, so administrators and source documents remain controlling.
The API
JSON over HTTPS, authenticated with an X-Api-Key header. Licensed city and program routes return the published record contract for live cities after the current product-scope and known-problem exclusions; response metadata discloses how many records matching the request were withheld. Free evaluation keys expire within 30 days and are limited to 1-5 approved live cities; their change-feed requests must name one approved city. Paid keys retain the licensed live-city scope. Homeowner-facing browser endpoints use a field-minimized contract; the deliberately public /api/sample exposes the non-quarantined, in-scope collection for one evaluation city, including stored public administrator contacts and strict source evidence when present, so buyers can evaluate the format without a key. It contains no homeowner or contractor lead data and does not expose the bulk dataset. Full machine-readable contract: /openapi.json (OpenAPI 3.1), /api/dataset/schema (one API record), and /api/dataset/export-schema (one candidate flat-export row; not proof that file delivery is approved).
| Endpoint | Returns |
|---|---|
GET /api/sample | One evaluation-city collection after the current scope and quarantine rules, no key required |
GET /api/dataset/health | Live coverage counts and our own measured link-health, public |
GET /api/cities | Every licensed live city with population, location, and metadata |
GET /api/cities/counts | Licensed live cities with safe actionable program counts |
GET /api/programs/{city} | Non-quarantined live-city records, filterable by category, eligibility field, and project type; withheld count included |
GET /api/programs/{city}/{programId} | One non-quarantined live-city program, full detail |
GET /api/programs/national | Paid tiers only: the four maintained, city-neutral federal records, VA SAH, VA SHA, VA HISA, and USDA Section 504 |
GET /api/changes?since= | Cursor-paginated change feed for detected new programs, status flips, deadlines, and amount corrections; evaluation keys must also pass an approved city slug |
echo "Paste API key, then press Return (input hidden):" read -s THE_GRANT_MAP_API_KEY printf 'header = "X-Api-Key: %s"\n' "$THE_GRANT_MAP_API_KEY" | \ curl --config - "https://www.thegrantmap.com/api/programs/des-moines" unset THE_GRANT_MAP_API_KEY
Illustrative program-record shape
This static example explains the shape; it is not a current record-status claim. Use the live public sample and retain its response metadata for an actual evaluation.
{
"id": "investdsm-block-challenge",
"name": "Invest DSM Block Challenge Grant",
"source": "Invest DSM",
"maxAmount": 2500,
"maxAmountLabel": "Up to $2,500 per property",
"maxAmountLabel_es": "Hasta $2,500 por propiedad",
"matchRate": "50-75%",
"eligibilityType": ["homeowner"],
"incomeRequirement": "any",
"projectTypes": ["exterior", "windows"],
"fundingStatus": "available",
"deadline": "Monthly, last business day of each month",
"description": "5 to 19 households on the same block unlock matching
grants. 50% standard match, 75% if income-qualified.",
"description_es": "De 5 a 19 hogares en el mismo bloque desbloquean
subvenciones de contrapartida...",
"url": "https://investdsm.org/programs/block-challenge-grant/",
"phone": "515-221-8410",
"category": "home-repair",
"freshness": {
"linkStatus": "live",
"lastChecked": "2026-06-10",
"confidence": "link-verified"
}
}
The freshness object is our independent signal, separate from the program's own fundingStatus. For apply-now experiences, reject dead links, surface an available cited url, and tell users to confirm current facts with the administrator. Confidence labels are scoped signals, not guarantees: source-verified requires a review less than 90 days old plus a contextual amount excerpt mechanically found on the same reviewed program page, bound to the current URL, name, source, and positive maxAmount; model-identity-reviewed means a current model-assisted page review judged identity a match but stored no verbatim identity proof and did not verify the amount; federal-canonical is limited to four maintained federal fact rules; link-verified means the URL was live and program-specific; link-resolves-unverified means a broader page resolved without confirming the stored facts; and unverified covers dead, blocked, or unchecked links. A stale source review loses its review-derived tier and falls back to the applicable current link tier; sourceReviewStale discloses the age separately. None of these labels confirms future funding, household eligibility, or every field.
Response identity and caching
Successful API-contract responses include X-Request-ID and X-API-Version; successful dataset responses also carry X-Dataset-Revision. The revision identifies the served generation, not its accuracy, completeness, or fitness for a use case. The public sample, API-record schema, export-row schema, and OpenAPI document support ETag/If-None-Match. Licensed responses are private, no-store, vary on X-Api-Key, and deliberately omit ETags. See the versioning and response-identity contract.
Why license this instead of building it
Broad repair categories in one schema
The schema includes energy incentives alongside roof and structural repair, accessibility, lead and healthy-homes, disaster mitigation, population-specific resources, property-tax relief, and financing. Coverage and confidence vary by record and are exposed rather than implied.
Build it into a governed workflow
Under the standard license, records can support a loan flow, counselor screen, or home dashboard without treating the result as an eligibility decision. Raw redistribution, resale, and broader white-label rights require a separate written agreement.
The build you skip
The license provides a normalized schema, bilingual description and amount fields, source URLs, freshness signals, and change tracking so an integrator can evaluate the data against the cost of building and maintaining its own pipeline.
Evaluate the product before a sales call
1. Inspect a real response
Use the no-key explorer to load the public evaluation city, filter its records, inspect source and freshness fields, and copy the exact JSON your code would receive.
2. Check the contract and evidence
Review the quickstarts and error model, record schema, current health result, and commercial gate. These surfaces are public so limitations cannot be hidden behind a demo.
3. Prove one use case
Request a key for up to 30 days and one to five live cities. Record integration time, useful coverage, inspected defects, fields used, change-feed utility, support time, and an explicit production decision.
For the product rationale, safe use cases, evaluation scorecard, and pilot structure, read A home-repair assistance data API teams can test.
Access tiers
Only the commercial annual offer can use online checkout, and only while the public commercial-release gate is green. That gate covers the strict audit, data health, source-rights review, recurring-operation evidence, and tested delivery controls. A green response permits the gated commercial checkout flow; it is not a warranty, an availability SLA, blanket source-rights approval, or proof that a buyer's use case is suitable. Free evaluations, nonprofit or academic access, and assisted pilots use the manual inquiry below instead of checkout.
| Tier | Rate limits | Pricing | Get started |
|---|---|---|---|
| Evaluation | 60 requests/min, 2,000/day | Free for 30 days, no card | Request a free key |
| Nonprofit / academic | 120 requests/min, 20,000/day | $2,000 per year offer hypothesis. Eligibility, permitted scope, and access are reviewed manually. | Request eligibility review |
| Commercial | 600 requests/min, 200,000/day | $9,000 per year, annual prepay offer hypothesis. New charter-rate enrollment is paused; existing charter licenses remain grandfathered. |
The assisted-pilot offer hypothesis is $1,500 for 90 days. Pilot availability is held pending reviewed scope and retention terms; it is not a self-serve purchase, guaranteed offer, automatic renewal, or annual-license credit. Nonprofit or academic eligibility is also not defined by this page: the organization, use case, permitted users, and access scope require manual review. The listed minute and daily limits are enforced with HTTP 429 responses; there are no automatic overage charges or surprise invoices. Ask about a higher-capacity agreement before sustained use above those limits. Versioned, checksummed NDJSON is not currently self-serve: commercial file delivery remains blocked until a current domain-level rights matrix records a reviewed decision and supporting evidence for every normalized source domain included in the file, and a private durable transfer is arranged. Source classes are triage labels only; a class-level policy cannot approve an included domain. Evaluation artifacts are marked non-deliverable.
Before purchasing, review the live paid-license readiness result, dataset health snapshot, and strict audit artifact. Known dead, unchecked, and contradicted rates are disclosed there. Purchases remain subject to the dataset license and refund terms.
Commercial annual checkout
This checkout is only for the commercial annual offer and appears enabled only when the public readiness gate is green. Nonprofit or academic access and assisted pilots require manual eligibility, scope, and retention review through the inquiry form below. When commercial checkout is enabled, you will finish payment on Stripe's secure checkout. After payment succeeds and webhook processing completes, a durable delivery worker emails the API key to the address below. Delivery is normally prompt but is not instantaneous or guaranteed to arrive at the exact moment payment clears.
What we promise, and what we don't
Sourcing and freshness, stated plainly
Records are compiled from cited federal, state, county, city, utility, and other administering-organization pages and normalized into one schema. The corpus uses LLM-assisted enrichment and human review, so treat it as a discovery layer, not a verified system of record. Stored URLs are eligible for a bounded scheduled link check when that operation is deliberately run, and records expose available link status and last-check dates. The health endpoint's dates show the evidence that actually exists; they do not imply that a recurring worker is currently active. Federal records use a separately maintained normalization layer. For apply-now flows, reject dead links and surface both the citation and a warning to confirm program identity, current status, and the application route with the administering organization.
Accuracy and reliance
Dollar figures, deadlines, statuses, and URLs can lag source or budget changes, and AI-assisted records can carry errors. Records expose a confidence signal and a cited URL when one is on file, but neither replaces verification. Your product must surface an available citation, handle a missing one explicitly, and tell users to confirm final eligibility, amounts, funding, deadlines, and application steps with the administering organization. This is a discovery layer, not a grant processor or legal or financial advice.
We retired the June 2026 300-record audit's published confirmation rate after finding three contract defects: its rubric allowed “confirmed” when a page named the program but did not state the stored amount, it classified connection failures as dead, and it sampled replicated row identities rather than unique fact keys. That run therefore cannot measure amount accuracy or a current dead-link share. The replacement audit requires a contextual matching amount quote and treats connection failures as inconclusive; no replacement rate is published until that strict run completes. The health endpoint marks the old result as superseded instead of displaying an unsupported percentage; the legacy artifact preserves the exact retired results, source revision, digest, and known defects for reproducibility. See /api/dataset/health.
When the bounded source-review worker is deliberately active, it prioritizes never-reviewed and oldest records first, then uses consequence, reuse, link issues, and available traffic signals. The health endpoint's dates, rather than this description, show whether a pass is currently operating. Only a contextual excerpt mechanically found on the reviewed page, matching the amount and bound to the current URL, program name, administrator, and maxAmount, can receive freshness.confidence == "source-verified". Identity-only model reviews receive model-identity-reviewed and are not evidence of the amount. Neither label proves future funding or every other field; amount corrections require review.
Continuity without an invented SLA
Every annual license carries a written continuity commitment: 90 days notice before any shutdown, a pro-rata refund of the unused term, and a final licensed snapshot. No contractual uptime SLA is offered until production availability has been measured over a meaningful period. Authentication fails closed: if a key cannot be validated, paid data is not served. Program endpoints do not accept homeowner profiles, but license-account and billing records are handled separately under the Privacy Policy.
License terms
Licenses cover use inside your product or service. Reselling or redistributing the raw dataset is not included (white-label and reseller arrangements are a separate agreement). Attribution ("Program data by The Grant Map") is required on user-facing surfaces. Full terms in our Terms, section 15.
Request a bounded evaluation
Use this form for a free evaluation, nonprofit or academic access review, assisted-pilot review, or another bounded request. Nonprofit or academic eligibility and access scope are decided manually; this page does not promise that an organization qualifies. Pilot availability is held pending reviewed scope and retention terms. Submitting an inquiry is not an approval, license, checkout, invoice, or pricing commitment. Free evaluation keys, when approved, cover one to five live cities for up to 30 days. Tell us who you are, what you are building, the cities you need, and the decision the evaluation should support. Raw redistribution, reseller, or broader white-label arrangements require separate scope and terms. No response time or approval is guaranteed.