The structured dataset behind The Grant Map
City-organized records for home-repair grants, rebates, forgivable loans, repayable financing, and other assistance. Records use a published schema and can carry English and Spanish description, amount-label, and deadline fields, cited URLs, and bounded freshness signals. Inspect the latest published coverage and limitations at the data-health endpoint before deciding whether a slice fits your use case.
See plans & readiness →Try it now with no key: interactive sample explorer · live data-health evidence · developer quickstart · OpenAPI 3.1 contract
Buyer content reviewed against the public endpoints on July 25, 2026. Endpoint responses, not this page, control changing counts, dates, and readiness.
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 freshness evidence is recorded
Stored cited URLs can receive bounded 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 latest published evidence, including its recorded run dates, is at /api/dataset/health.
Field-level English and Spanish scope
The record contract includes description/description_es, maxAmountLabel/maxAmountLabel_es, and deadline/deadline_es. A field can be blank, stale, or based on an ambiguous underlying record. Program names are not translated, and fields such as administrator, category, status, eligibility, project types, phone, and URL do not have separate language variants. The administering source remains 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 |
Rows are not the same as distinct programs
A city-program row is one program record attached to one city. A federal, state, utility, county, or regional program can therefore appear in many city collections. Dataset health publishes separate row, unique stored-name, and locally unique measures. The unique stored-name total is not a count of deduplicated program identities because generic names and name variants can merge or split real programs. Use the measure that matches your question, and never present a row total as the number of different programs.
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
The selected fields below mirror the curated row in this build, but this static example is not current status evidence. 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%",
"eligibilityType": ["homeowner"],
"incomeRequirement": "any",
"projectTypes": ["exterior", "windows"],
"fundingStatus": "available",
"deadline": "Monthly, last business day of each month",
"description": "Teams of 5 or more neighbors unlock dollar for dollar matching grants for street-visible exterior work. $1,000 per property for teams of 5 to 9, $2,500 for teams of 10 or more.",
"description_es": "Equipos de 5 o más vecinos desbloquean subvenciones de contrapartida dólar por dólar para mejoras exteriores visibles desde la calle. $1,000 por propiedad para equipos de 5 a 9, $2,500 para equipos de 10 o más.",
"url": "https://investdsm.org/programs/block-challenge-grant/",
"phone": "515-221-8410",
"category": "home-repair"
}
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.
Safe and unsafe uses
Good evaluation candidates
Use the API to add cited assistance discovery to a housing-counseling research view, homeowner resource page, contractor client portal, mortgage-servicing education flow, or home-improvement financing journey. The safe sequence is context, discovery, cited candidate, then confirmation with the administrator.
Keep discovery outside decisioning
Do not use a record or match to approve, deny, price, underwrite, rank, or change credit, insurance, payment, or benefit decisions. Assistance discovery can appear before or beside financing, but it must remain operationally and analytically separate from credit decisions.
Design for uncertainty
Show an available citation, distinguish empty results from service failures, expose relevant freshness context, and tell users to confirm identity, eligibility, funding, amounts, deadlines, and application steps. A match is a research lead, not an eligibility decision.
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 scope, records may support a named loan flow, counselor screen, or home dashboard without treating the result as an eligibility decision. That scope covers one licensed organization and one named approved product. Raw redistribution, resale, OEM use, and broader white-label rights are not offered on this page. Any exception, if ever available, would require separate review and approval.
The build you skip
The standard API license provides a normalized schema with optional English and Spanish description, amount-label, and deadline fields, plus source URLs, freshness signals, and change tracking. Program names remain in English, and field presence varies by record. An integrator can evaluate those surfaces 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
The prices below are the offer hypotheses already published on this page, not evidence of market fit or a promise that each offer is available. Only the commercial annual offer can use online checkout, and only while the public commercial-release gate is green. 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 up to 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 enrollment at the previously published charter rate is paused. Any existing accepted or signed charter terms control. |
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. Reduce or schedule requests before sustained use exceeds those limits; this page offers no additional capacity.
Paid file delivery is unavailable. There is no approved buyer portal, private transfer channel, usage dashboard, or file-notice service. A local versioned and checksummed NDJSON candidate is an internal, non-deliverable release artifact. No snapshot or bulk export can be purchased or promised unless every normalized source domain represented in the proposed file has a reviewed rights decision and the separate storage, authorization, receipt, revocation, retention, and deletion gates are approved and certified. Automated triage does not satisfy that rights review.
Before any purchase decision, review the live paid-license readiness result, dataset health response, and strict audit endpoint. Read the responses exactly as published, including an unavailable audit or disabled checkout. Any approved purchase remains subject to the dataset license 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. The checkout return page does not prove key delivery; the server-side payment, entitlement, and delivery receipts control.
Product boundaries
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.
Service and delivery boundaries
No contractual uptime percentage or support response time is stated on this page. Authentication fails closed: if a key cannot be validated, licensed data is not served. Program endpoints do not accept homeowner profiles, but license-account and billing records are handled separately under the Privacy Policy. Existing signed agreements remain controlling, and no continuity language makes a file, snapshot, or bulk export available today.
License terms
The standard scope covers one licensed organization and one named approved product. It does not include raw-data resale, redistribution, OEM use, white-labeling, sublicensing, public mirroring, or use for another customer, and this page does not offer those rights. Required user-facing attribution is "Program data by The Grant Map." Full terms are in our Terms, section 15, effective 2026-07-27.
Corrections and support
Report a suspected issue through Contact and Support. Include the city slug, program ID, field, authoritative source URL, what the source says, and the review date. Do not send applicant files or sensitive personal information. A report is evidence for review, not an automatic edit, and this page promises no response or publication time.
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, resale, reseller, OEM, or broader white-label rights are not offered through this form. No response time or approval is guaranteed.