Data, downloads and methods
You can download every contract on the deal screen, one row per contract with both expiration dates, as CSV or JSON. The files are rebuilt from HUD’s Section 8 database each time the site is, and the copy here is from HUD’s file dated October 6, 2026. The rest of this page explains where the numbers come from.
Downloads
| File | What it holds | Rows |
|---|---|---|
| hap-contracts.csv (5 MB) | Every contract in HUD’s file, national | 24,313 |
| hap-contracts.json (14 MB) | The same rows as a JSON array of flat objects | 24,313 |
| manifest.json | File list, as-of date, source, key and the per-state files | |
states/hap-contracts-<st>.csv |
One CSV per state, e.g. Texas, California, New York | by state |
HUD’s file has 24,314 contract rows. One of them, MI33A008004, appears twice with identical values, so the download keeps it once. hap-contracts-xx.csv holds the 16 properties HUD lists without a state. All statuses are included (Active, Expired, Pending, Suspended, Executed, Terminated), so filter on status if you only want live contracts. Owner and management agent names, phones and emails are not in these files.
Columns
| Column | From HUD’s field | Notes |
|---|---|---|
contract_id |
contract_number | The key. Unique in the download |
property_id |
property_id | One property can hold several contracts |
property_name, address, city, state, zip, county |
property name and address fields | As HUD spells them |
property_units |
property_total_unit_count | All units, assisted or not |
property_category |
property_category_name | |
financing_type, fha_number |
primary_financing_type, associated_financing_Number | |
fha_loan_in_hud_loan_file |
derived | 1 when fha_number matches an active loan in HUD’s insured-loan file |
program_type |
program_type_name | e.g. Sec 8 NC, LMSA, PRAC/202 |
contract_type |
contract_doc_type_code | HAP, PRAC, RAC, PAC, COOP |
status |
tracs_status_name | |
effective_date |
tracs_effective_date | |
overall_expiration_date |
tracs_overall_expiration_date | End of the contract term |
current_expiration_date |
tracs_current_expiration_date | End of the funded piece; equals the overall date when HUD’s two dates match |
term_months |
contract_term_months_qty | |
assisted_units |
assisted_units_count | |
rent_to_fmr_pct |
rent_to_FMR_ratio | Percent, rounded to 0.1. HUD calls it a guide only |
expiration_window |
derived | Where overall_expiration_date falls from the file’s as-of date: past, within 12 months, 12 to 24 months, 2 to 5 years, over 5 years |
Dates are YYYY-MM-DD. A blank cell means HUD’s field was blank or zero.
Contract alerts
Each state page has a “Watch a contract” form. When a new HUD file changes a watched contract’s status, either expiration date or its expiration window, the alert fires. That covers a renewal (the overall date moves out), an opt-out or termination (the status changes or the contract drops to past), and a contract coming within 24 or 12 months of its end. Alert emails haven’t started yet; sign-ups are saved, and the first email will ask you to confirm.
API
All of these can be called from any site (CORS is open). The rate endpoints are cached for about 15 minutes.
| Endpoint | Returns |
|---|---|
GET /data/downloads/manifest.json |
The download list above, as JSON |
GET /data/contracts/<ST>.json |
The compact per-state file the deal screen filters, with short keys (k contract number, x overall expiration, xc current expiration, st status, au assisted units, fmr rent to FMR). The downloads are easier to work with |
GET /api/live?ids=UST5,UST10,SOFR |
Latest Treasury par yields and SOFR from the U.S. Treasury and the New York Fed, with each reading’s date, a week-ago and month-ago value, a freshness status and the publisher link. Add &history=60 for 60 days of readings |
GET /embed/rates?ids=UST5,UST10,SOFR |
A small rate panel to place in an iframe (&theme=dark for a dark panel) |
The rate panel, ready to paste:
<iframe src="https://multifamily.deals/embed/rates?ids=UST5,UST10,SOFR" width="100%" height="150" style="border:0" title="Rates from Contract Clock" loading="lazy"></iframe>
License
HUD’s data is a U.S. government work and is in the public domain. Our compilation (the cleaned, joined and reshaped files above) is offered under CC BY 4.0: use it for anything, commercial use included, with the credit “Data: Contract Clock (multifamily.deals)” and a link to this page. The rate readings carry their publishers’ terms: the New York Fed’s SOFR comes with its Terms of Use notice, and Treasury yields are public domain. There’s no warranty; HUD says its own database “does not purport to be complete or all inclusive”, and our copy inherits that. For bulk or commercial API terms, write to desk@janover.co.
Everything on the deal screen comes from two files HUD publishes for free, the Section 8 contracts database first and the insured-loan file second. We download them, keep the fields a buyer needs, drop the ones we don’t want to republish, and publish the result. Nothing is added from any other source.
Where the data comes from
The Section 8 file
HUD’s Multifamily Assistance and Section 8 Database lists project-based rental assistance contracts and the properties they sit on. The copy used now is labeled “Current as of 10/06/2026”: 24,314 contracts on 23,610 properties.
Each contract has two end dates. The overall expiration date is the end of the contract term. The current expiration date is often much sooner, because long contracts are funded in shorter pieces. The screen shows the overall date. The screen counts only contracts HUD lists as active. In the next two years 4,880 contracts reach their overall expiration, while 19,145 reach a current expiration; most of the second group just get funded again.
HUD’s ratio of contract rent to Fair Market Rent comes straight from the file. HUD describes it as a guide only. HUD also says the database “does not purport to be complete or all inclusive”.
We don’t republish owner or management agent names, phone numbers or emails, even though HUD’s file has them.
A “below FMR” contract on the screen is a Section 8 HAP contract, active, with HUD’s rent-to-FMR ratio above zero and under 90%. 6,004 contracts meet that test nationally. The 90% line is ours, chosen to show contracts paying clearly under the area figure; it isn’t a HUD threshold, and HUD sets renewal rents from a rent comparability study, not from this ratio.
The loan file
HUD’s Insured Multifamily Mortgages page publishes a spreadsheet of every active FHA-insured multifamily loan. The copy used now is the one HUD labels “Current as of September 30, 2026”. It has 15,720 loans; we use the 11,599 on apartment properties (leaving out 4,042 healthcare loans under Section 232, 76 hospital loans under Section 242, and 3 already past maturity).
We use it for two things only: the table of loans maturing within five years on each state page, and the FHA number shown next to a Section 8 contract when the property also has an insured loan. “Balance” in the maturity table is HUD’s amortized principal balance, which HUD doesn’t explain further; treat it as a scheduled estimate, not a payoff figure.
How the two files are joined
A property in the Section 8 file that also has an FHA-insured loan carries the loan’s FHA number. Where that number matches a loan in the loan file exactly, the state page shows the FHA number next to the contract. 4,191 properties match. We don’t match on names or addresses.
What we compute
- Months to maturity: from HUD’s as-of date to the maturity date.
- The two-year and five-year windows on state pages run from the file dates above.
- The offer calculator’s income, value and loan figures, from the numbers you enter or carry over from a row.
Refresh
A scheduled job re-reads both files from HUD’s pages once a week and stops with an error, keeping the last good copy, if HUD moves a link or renames a column. When HUD posts a new file, the state tables, the contract filter and every download switch to it within about an hour, with no rebuild. Each page shows the as-of date of the file it’s using. If you spot a stale row, tell us.
Have a question?
Send it to Contract Clock and we will reply by email.