HUD Exchange APIhudexchange.info ↗
Access 5,000+ HUD Exchange resources via API. Search FAQs, training materials, and reports across 90+ HUD programs with filters by topic, content type, and date.
What is the HUD Exchange API?
The HUD Exchange API provides access to over 5,000 housing and urban development resources across 90+ HUD programs through 3 endpoints. Use search_resources to run keyword searches against the Resource Library with filters for content type, topic, and date range, or call get_resource_detail to retrieve full metadata—including description, breadcrumbs, related topics, and related links—for any individual resource page.
curl -X GET 'https://api.parse.bot/scraper/9f9fe01a-f8bc-4852-9b3d-53c21a692ec9/search_resources?page=1&query=homelessness&order_by=searchDate&content_type=FAQs' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace hudexchange-info-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
from parse_apis.hud_exchange_resource_library_api import HUDExchange, ContentType, Sort
client = HUDExchange()
# Get the full catalog of available filters
catalog = client.catalogs.get()
print(f"Total resources: {catalog.total_resources}")
for ct in catalog.content_types:
print(f" {ct.name}: {ct.count} documents")
# Search for resources about homelessness, sorted by relevance
for resource in client.resources.search(query="homelessness", order_by=Sort.SCORE, content_type=ContentType.FAQS, limit=5):
print(resource.title, resource.date, resource.content_type)
# Get detailed information for a specific resource page
detail = client.resourcedetails.get(resource_path="/resource/5334/cdbg-income-limits/")
print(detail.title, detail.date)
for bc in detail.breadcrumbs:
print(bc.text, bc.url)
Search the HUD Exchange Resource Library with keyword search and filters by content type, program/topic, date range, and sort order. Returns paginated results (15 per page) with document metadata and available filter facets for the current query. Paginates via integer page number. Each result includes title, URL, content_type, and date. Facets update to reflect the filtered result set.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination (15 results per page). |
| query | string | Keyword search term (e.g. 'CDBG', 'homelessness'). |
| topic | string | Filter by program/topic name (e.g. 'Housing+Counseling+Program', 'CDBG+Entitlement+Program'). Use + for spaces. Valid names available from get_facets endpoint. |
| order_by | string | Sort order for results. |
| date_range | string | Predefined date range filter. |
| content_type | string | Filter by content type. Comma-separated for multiple values. Values: FAQs, Resources, Training Materials, Reports. Use + for spaces in values (e.g. 'Training+Materials'). |
{
"type": "object",
"fields": {
"page": "integer, current page number",
"query": "string, the search term used",
"results": "array of resource objects with title, url, content_type, and date",
"total_pages": "integer, total number of pages available",
"total_results": "integer, total number of matching results",
"results_on_page": "integer, number of results returned on this page",
"available_topics": "array of objects with name and count for topic facets",
"results_per_page": "integer, number of results per page (15)",
"available_content_types": "array of objects with name and count for content type facets"
},
"sample": {
"data": {
"page": 1,
"query": "homelessness",
"results": [
{
"url": "https://www.hudexchange.info/resource/6795/yhdp-reporting-guidance-sage-hmis-reporting-repository/",
"date": "June 2026",
"title": "YHDP Reporting Guidance for the Sage HMIS Reporting Repository",
"content_type": "Resource"
}
],
"total_pages": 60,
"total_results": 892,
"results_on_page": 15,
"available_topics": [
{
"name": "CoC: Continuum of Care Program",
"count": 505
}
],
"results_per_page": 15,
"available_content_types": [
{
"name": "Resources",
"count": 348
},
{
"name": "FAQs",
"count": 337
}
]
},
"status": "success"
}
}About the HUD Exchange API
What the API Covers
The HUD Exchange Resource Library contains FAQs, training materials, reports, and general resources tied to HUD programs such as CDBG Entitlement, Housing Counseling, and HOME. The API gives structured access to this library through three endpoints: search_resources for querying and filtering, get_facets for enumerating all available filter values, and get_resource_detail for full per-resource metadata.
search_resources and Filtering
search_resources accepts a query string for keyword matching, a topic parameter (using + in place of spaces, e.g. Housing+Counseling+Program), a content_type filter that accepts comma-separated values (FAQs, Resources, Training Materials), and a date_range filter. Results are paginated at 15 per page; the response includes total_results, total_pages, results_on_page, and a results array where each item carries title, url, content_type, and date. The response also returns available_topics and available_content_types facet arrays with item counts for the current query, so you can build dynamic filter UIs without a separate call.
get_facets and get_resource_detail
get_facets takes no inputs and returns all programs_and_topics and content_types with document counts, plus a total_resources integer. This is the right call to populate filter dropdowns before a user submits a search. get_resource_detail takes a resource_path (e.g. /resource/5334/cdbg-income-limits/ or a FAQ path) and returns the resource's title, date, description text, breadcrumbs array, related_topics with name and URL, and related_links with title and URL—giving enough context to display or index the full resource record.
The HUD Exchange API is a managed, monitored endpoint for hudexchange.info — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when hudexchange.info changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official hudexchange.info API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a HUD program research tool that lets users filter resources by topic (e.g.
CDBG+Entitlement+Program) and content type - Index all FAQs across HUD programs by paginating
search_resourceswithcontent_type=FAQs - Populate a program-specific resource feed using
get_facetsto enumerate topics andsearch_resourcesto retrieve matching documents - Extract
related_topicsandrelated_linksfromget_resource_detailto build a knowledge graph of connected HUD resources - Monitor newly published training materials by sorting
search_resourceswithorder_by=searchDateand filtering bycontent_type=Training Materials - Generate a topic-coverage report by pulling
programs_and_topicscounts fromget_facetsacross all 90+ HUD programs
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does HUD Exchange have an official developer API?+
What does `get_resource_detail` return beyond what `search_resources` provides?+
search_resources results include only title, url, content_type, and date. get_resource_detail adds a full description text block, a breadcrumbs array for navigation context, related_topics (name and URL pairs), and related_links (title and URL pairs)—making it suitable for displaying or indexing the complete resource record.Can I retrieve the actual document files (PDFs, slides) through the API?+
related_links that may point to downloadable files, but it does not fetch or return binary file content directly. You can fork this API on Parse and revise it to add an endpoint that follows those links and retrieves file metadata or content.How does pagination work in `search_resources`?+
total_results, total_pages, and results_on_page so you can calculate iteration. Pass the page integer parameter to walk through subsequent pages. There is no cursor-based pagination; page numbers are the only navigation mechanism.