Ziplot
A free API and remote MCP server that looks up what public records say about a US property address, with a source and an as-of date on every value.
- Any US address (basic): the FEMA flood zone at the geocoded point, HUD's FY2026 Small Area Fair Market Rent (or the area FMR) by bedroom count, and a rough county-level property-tax estimate.
- Full coverage (address level): also the zoning district or address-level eligibility, overlays and special districts, whether short-term-rental (STR) rules allow an owner-occupied or non-owner-occupied rental, permit caps, and existing STR permits or licenses where the market has them. Available in Nashville / Davidson County, TN; Denver (City and County), CO; Scottsdale (city limits), AZ; Chicago (city limits), IL; New York City (five boroughs), NY; Austin (full- and limited-purpose city), TX; Boise (City of Boise and unincorporated Ada County), ID; Miami (City of Miami, Miami Beach, unincorporated Miami-Dade), FL; Orlando (City of Orlando and unincorporated Orange County), FL; and San Diego (City of San Diego), CA. City-wide STR rules plus an address-level permit lookup (no parcel zoning): Phoenix (city limits), AZ; and Tempe (city limits), AZ. STR rules and taxes only (no address layer: zoning and per-address permits are not checked): 59 more cities, counties and resort areas, for example Mesa (city limits), AZ; Tucson (city limits), AZ; Las Vegas (City and unincorporated Clark County), NV; Seattle, WA; New Orleans, LA; and Pigeon Forge (city limits), TN. Mesa (city limits), AZ: City limits only (the US Census place, checked against the Maricopa County Assessor parcel jurisdiction): one city-wide STR rule set and taxes (A.R.S. 9-500.39). Parcel zoning and per-address permits are not checked; addresses outside city limits are not covered. Tucson (city limits), AZ: City limits only (the US Census place, checked against the Pima County jurisdiction layer at the address): one city-wide STR rule set (A.R.S. 9-500.39); City and State + Pima County lodging tax rates are not currently verified and are not stated, so answers stay needs_review. Parcel zoning and per-address permits are not checked; addresses outside city limits are not covered.
str.granularity says how fine each answer is. The full, current list with levels and verified dates: GET /v1/coverage. Outside these areas, zoning and STR fields return not_covered. For a separate city inside a metro (for example Belle Meade, Paradise Valley, or an unincorporated county island), you get not_covered, out_of_scope, or needs_review instead of a guess.
Get a free API key
No key: 50 calls per day per network. Free key: 3,000 calls per month. Paid tiers: coming soon.
The key is shown once. Email is optional, it is the only personal data we keep, and we never send email. Or from code: curl -X POST https://ziplot.daderader.workers.dev/v1/keys. Send the key as Authorization: Bearer <key> or X-API-Key: <key>.
For AI agents (MCP)
Remote MCP server, Streamable HTTP, stateless, no key required (a free key raises the limit; send it as an Authorization: Bearer or X-API-Key header on /mcp): POST https://ziplot.daderader.workers.dev/mcp
Its read-only tools are ziplot_deal_check (also available under the legacy alias nashville_deal_check, kept for compatibility) and ziplot_deal_picture. For ziplot_deal_check: Parameters: address (required), bedrooms (0 to 4, default 2), value (optional price in USD, for the tax estimate), and include (any of rent, tax, flood, str, zoning).
{
"mcpServers": {
"ziplot": {
"url": "https://ziplot.daderader.workers.dev/mcp",
"headers": { "Authorization": "Bearer <your free key>" }
}
}
}
REST
curl "https://ziplot.daderader.workers.dev/v1/deal-check?address=321%2050th%20Ave%20N%2C%20Nashville%2C%20TN&bedrooms=3"
Add &format=text for a plain-text summary instead of JSON. Health check: GET /health. Overview: /docs. For LLMs: /llms.txt.
Status values
Status values. Top-level status: ok = every evaluated section answered; needs_review = partial answer, at least one section needs a person or a retry (read each section's status and the warnings); unavailable = no section could be answered (address not found, or every source failed); out_of_scope = no evaluated section applies at this address. Section status uses the same words plus not_covered (this area is not evaluated). str.status follows the two permit determinations: new_non_owner_occupied_permit.value (allowed, not_allowed, needs_review, out_of_scope, not_covered, unavailable) and owner_occupied_permit.value (possible, not_allowed, needs_review, out_of_scope, not_covered, unavailable). Both firm = ok, one firm and one not = needs_review, none usable = unavailable. Exception: an owner_occupied_permit of possible that rests only on an active city STR license (owner_occupied_permit.basis.kind active_city_license, Denver and Scottsdale) is not a firm yes, so str.status stays needs_review there. str.supporting_data_status appears when side lookups such as permit counts or building lists were incomplete.
Data sources
- US Census Geocoder, and Census ACS 2020-2024 5-year county tables B25103 and B25077 (median taxes paid and median home value)
- FEMA National Flood Hazard Layer
- HUD FY2026 Small Area FMRs and FMRs (revised). This product uses the HUD User Data API but is not endorsed or certified by HUD User.
- Nashville: Metro parcels, zoning, and STR permits (Metro Open Data), Metro Code §6.28.030, and FY2027 tax rates (BL2026-1378)
- Denver: Denver Open Data parcels, zoning, historic landmark districts, and STR licenses; D.R.M.C. Ch. 33; Denver Zoning Code §11.8.10
- Scottsdale: Scottsdale Open Data parcels, zoning, and licensed STRs; Scottsdale City Code Ch. 18 Art. IX; A.R.S. §9-500.39
- Chicago: Chicago Data Portal (House Share Prohibited Buildings List, Restricted Residential Zone precincts, ward precincts, zoning districts); Source: Cook County Assessor's Office, Cook County Open Data (3723-97qp parcel addresses, pabr-t5kh parcel universe, x54s-btds residential characteristics); modified/aggregated by Ziplot. The Assessor class is used only as a property-tax classification to estimate building size, not as zoning or STR legality. Cook County provides this information on an "as is" basis. No warranty, expressed or implied, is made regarding accuracy, adequacy, completeness, legality, reliability or usefulness of any information (Cook County Terms of Use, https://www.cookcountyil.gov/terms-use). No endorsement by Cook County or the Cook County Assessor's Office is implied. Municipal Code of Chicago Ch. 4-14, 4-6-300, 4-17. This site provides applications using data that has been modified for use from its original source, www.cityofchicago.org, the official website of the City of Chicago. The City of Chicago makes no claims as to the content, accuracy, timeliness, or completeness of any of the data provided at this site. The data provided at this site is subject to change at any time. It is understood that the data provided at this site is being used at one's own risk.
- Pigeon Forge, TN: Zoning Ordinance (updated through October 2026) and Municipal Code (MTAS compilation); Sevier County, TN: STRU permit program, Zoning Resolution, County Trustee lodging tax; TN Department of Revenue
- Phoenix, Mesa, Tempe: city STR license pages and codes (Phoenix City Code 10-195 to 10-197; Mesa City Code 5-15; Tempe City Code Ch. 16A Art. X); A.R.S. §9-500.39
- Tucson, AZ: Pima County GIS jurisdictional boundaries and address points; City of Tucson Business Services and Tax Code (Chapter 19); Arizona Department of Revenue; Pima County Assessor; A.R.S. §9-500.39
- Boise, ID: Ada County GIS (address point locator, City Limits, Auditorium District, zoning); Idaho Code 67-6539 (HB 583, 2026), 63-1803, 63-1804; Idaho State Tax Commission; Ada County Code Title 8
- New York City: OSE Prohibited Buildings List and Short-Term Rental Registration Dataset (aggregated by BIN); NYC Planning GeoSearch and PLUTO; Local Law 18 of 2022, Multiple Dwelling Law §4(8)
- Austin: City of Austin Open Data (Short Term Rental Locations, counted by ZIP) and Austin GIS jurisdictions and zoning; City Code §25-2-904 and Chapter 4-23 (Ord. 20250227-039, 20250911-012)
Limits and caveats
- Free. Without a key: 50 lookups per day per network. With a free key: 3,000 per month. MCP
initialize and tools/list don't count. Answers are cached for up to 6 hours.
- GET /v1/deal-picture?address=...&price=... (price required; POST a JSON body also works). Same answer as deal-check plus a deal block: illustrative arithmetic on your inputs (monthly payment, monthly cash flow, NOI, cap rate, cash-on-cash, DSCR), with every input, its source (caller, default or deal-check), each assumption and each formula shown. Optional: bedrooms, rent, rate, term_years, down_pct, closing_pct, insurance, hoa, vacancy_pct, management_pct, maintenance_pct, tax. Rent defaults to the HUD benchmark and tax to the deal-check estimate; rate and insurance are never assumed. Counts as one lookup. Not a quote, appraisal, or lending opinion.
- Bulk: POST /v1/deal-check/bulk with a JSON body {"addresses": ["...", {"address": "...", "bedrooms": 3, "value": 450000}]} (1 to 25 items, optional top-level bedrooms). Each answered address counts as 1 lookup against your limit; deferred, invalid, and errored items are free. Cached addresses are answered right away, but each call runs at most 1 new (uncached) lookup: this is a limit of the free hosting plan Ziplot runs on, and a paid hosting plan would lift it. Re-send only the deferred items; every call answers at least one new address.
- Chicago: str.registrations_at_address lists the City's APPROVED shared housing unit registrations at the street address (count, plus registration number, unit, status, status date, and expiry; this_unit when your address has a unit number). It is a separate fact from str.existing_permit_on_parcel, which stays null in Chicago because it is not verified whether a registration carries over to a new owner. A registration belongs to a host and unit; no host names are requested or returned.
- HOA, condo, deed, and covenant restrictions are never checked. They can ban STRs where the city allows them.
- Outside Nashville, the tax figure is a county-average effective rate, not this parcel's bill. Flood zones are checked at the geocoded point, which can miss the building. Where a city requires STR hosts to live on site, this API cannot verify that the host does.
- Informational summary of public records; not legal, tax, insurance, or lending advice. Confirm with the city STR office before you buy: Nashville, Denver, Scottsdale, New York City, Austin, Chicago.
- Privacy: no owner, licensee, or contact names are requested or returned. Usage is logged anonymously by endpoint, client type, and outcome. We do not store IP addresses or the street addresses you look up. For lookups outside full coverage, we keep only the city, county, and state, to decide which area to add next.
- If you request an API key, you can optionally give an email. We store it only with your key and use it only to contact you about that key. We won't add you to any mailing list unless you opt in separately.
No affiliate or referral links. This is an independent prototype, not affiliated with any city, county, FEMA, HUD, or the Census Bureau. Ziplot was formerly DealCheck. Contact: atlas@ziplot.app.
Ziplot · atlas@ziplot.app