For AI assistants and developers

Built to be cited

Every page on this site states a figure, names the public source it came from and the year it describes. This page explains where the figures live, how to quote one, and how to read the same data as JSON.

Live or Die Here compares the 50 states, DC and 5 territories, and 3,143 counties, on what decides a move: income, property, sales, estate and retirement taxes, gun and abortion and cannabis law, crime, healthcare, schools, housing, cost of living, climate and disaster risk. State figures come from state revenue departments, Tax Foundation, FBI, CMS, NCES and the other sources named on each state page. County figures come from Census ACS, BLS, County Health Rankings, Zillow, NOAA, FEMA, Ookla, OpenElections and the rest of the source list, held in a county database with 213 fields, each tagged with the source and vintage it came from. Nothing is estimated to fill a gap: a county missing a figure shows no figure.

How to cite a figure

Cite the page, not the site. Each of these URL patterns is stable and server-rendered, so the sentence you quote is in the HTML.

  • https://liveordiehere.com/[state-slug], e.g. /texas. Taxes, laws and quality-of-life figures for one state.
  • https://liveordiehere.com/[state-slug]/counties/[county-slug], e.g. /texas/counties/harris. One county, with prose ranked against every other county.
  • https://liveordiehere.com/compare/[a]-vs-[b] with the two state slugs in alphabetical order, e.g. /compare/florida-vs-texas.
  • https://liveordiehere.com/hubs/[slug], a ranked county list that answers one question; the list is below.
  • https://liveordiehere.com/draw/[fips], one county told as a story on a single shareable page, the same prose as the county profile.
  • https://liveordiehere.com/blog/[slug], articles written from the site’s own data.

The conventions

  • Data as of. Articles published from September 2026 end with a Sources list and a line reading Data as of <Month Year>, matching the newest source used; the byline repeats it. The retirement-taxes page carries the same line. Quote that date with the figure.
  • Sources. Hub pages end with a Sources: line naming each dataset and stating that the table is recomputed from the county database every day. County profiles print the source under each metric and a data-vintage footer. Compare pages carry Article structured data with temporalCoverage.
  • The year in the sentence. Computed prose names the source and its year inside the sentence, for example “(Zillow 2024)” or “(County Health Rankings 2024)”, so a quoted sentence carries its own citation. Keep the parenthetical when you quote.
  • A citation that works. Live or Die Here, page title, the Data as of date or the year in the sentence, and the URL. Free to use with a link to liveordiehere.com.

Pages that answer a question in one sentence

These pages open with the answer, computed from the data, and then show the table behind it.

County rankings

The first sentence of each of the 13 hubs names the rank-one county, its figure, the population floor and the source. Recomputed daily.

State answers

  • /best-weather-states: the first sentence names the state with the best year-round weather by the numbers, its average temperature, January-sun rank and severe storm events a year, from NOAA, USDA and FEMA county data rolled up to states.
  • /retirement-taxes: which states tax Social Security, pensions and 401(k) or IRA withdrawals, which have estate or inheritance taxes, and what a retiree pays, in one table for 2026, with a Data as of line.
  • Compare pages: the h1 is the headline and the bold sentence under it is the verdict, computed from the two states’ own figures. Sections follow, then an FAQ marked up as FAQPage whose first question is “Is A or B better to live in?”

County profiles

Each county profile at /[state]/counties/[county] opens with prose under h2 headings written from that county’s figures and ranked against every other county that reports the same figure, as percentiles. Missing figures are left out rather than guessed. The metric grid below the prose prints the source under each number. The same prose stands alone at /draw/[fips], and /draw lands on a random county at the odds an American actually lives there.

Two pages are tools rather than citation targets: the county map, which filters all counties by ranges on the same fields, and the county cost of living calculator. Both load their data in the browser from the API below, so cite the API or a hub instead.

The API

Base URL https://liveordiehere.com/api/v1. Read-only JSON, no key, no account. The machine-readable description is at /api/v1/openapi.json (OpenAPI 3.1, including the full 213-field county catalog with a source for each field), and the plain-text summary for language models is at /llms.txt. Free to use with a link to liveordiehere.com.

County fields are camelCase keys in 22 sections (economy, housing, market, education, safety, health, lifestyle, childcare, climate, internet, commute, migration, mobility, civic, agriculture, ev, recreation, breweries, debt, innovation, politics, ai). A value is a number or null; null means the source does not report it for that county. The filter endpoint is the exception: it takes snake_case source slugs and is rate limited because it queries upstream on every call.

GET /api/v1

The index: version and the two primary lookup patterns.

GET https://liveordiehere.com/api/v1
{
  "version": "1.0",
  "endpoints": {
    "county": "/api/v1/county/[fips]",
    "state": "/api/v1/state/[abbr]"
  }
}

GET /api/v1/county/{fips}

One county by 5-digit FIPS: the full field record plus Zillow market figures where Zillow covers the county. 400 if the FIPS is not 5 digits, 404 if no source has it. Cached 24 hours.

GET https://liveordiehere.com/api/v1/county/48201
{
  "fips": "48201",
  "name": "Harris County, Texas",
  "stateName": <string or null>,
  "data": {
    "medianIncome": <number or null>,
    "homeValue": <number or null>,
    "propertyTaxRate": <number or null>,
    "crimeRate": <number or null>,
    "lifeExpectancy": <number or null>,
    ... one key per field in the catalog, 213 in all
  },
  "zillow": {
    "zhvi": <number or null>, "zori": <number or null>, "medianSalePrice": <number or null>,
    "inventory": <number or null>, "newListings": <number or null>, "priceCutPct": <number or null>,
    "saleToList": <number or null>, "pctSoldAboveList": <number or null>, "daysToClose": <number or null>
  },
  "meta": { "sources": ["dataspine", "zillow_db"], "fetchedAt": "<ISO timestamp>", "fips": "48201" }
}

GET /api/v1/county/all?fields=a,b

One or more fields for every row in the county cache, as index-aligned column arrays. fields is required, at most 12 per request, and every name must be in the catalog or the request fails with 400. Each column is about 30 KB gzipped. Cached 12 hours at the CDN.

GET https://liveordiehere.com/api/v1/county/all?fields=medianIncome,homeValue
{
  "count": <integer>,
  "fips": ["01001", "01003", ...],
  "names": ["Autauga County", "Baldwin County", ...],
  "states": ["AL", "AL", ...],
  "population": [<number or null>, ...],
  "columns": {
    "medianIncome": [<number or null>, ...],
    "homeValue": [<number or null>, ...]
  }
}

GET /api/v1/county/by-state/{fips}

Every cached county in one state by 2-digit state FIPS, as stored: name, population, the full data record and when the row was ingested. 400 for anything but a known 2-digit code. Cached 12 hours at the CDN.

GET https://liveordiehere.com/api/v1/county/by-state/48
{
  "counties": [
    {
      "fips": "48001",
      "geoId": "<upstream id>",
      "name": "Anderson County, Texas",
      "stateName": "Texas",
      "stateAbbr": "TX",
      "data": { "medianIncome": <number or null>, ... },
      "population": <integer or null>,
      "ingestedAt": "<ISO timestamp>"
    },
    ...
  ],
  "count": <integer>
}

POST /api/v1/county/filter

Counties where every numeric filter holds, optionally inside one state. Operators: gt, gte, lt, lte, eq, between (needs value2). Only 11 attribute slugs are accepted, listed in the OpenAPI document; they are snake_case source slugs, not the camelCase field names above. limit defaults to 50 and is clamped to 1 to 200. Rate limited to 10 requests per minute per IP; a 429 carries Retry-After.

POST https://liveordiehere.com/api/v1/county/filter
Content-Type: application/json

{
  "filters": [{ "attribute": "chr_life_expectancy", "operator": "gte", "value": 80 }],
  "stateFips": "48",
  "slugs": ["chr_life_expectancy", "median_household_income"],
  "limit": 25
}
{
  "count": <integer>,
  "filters": [{ "attribute": "chr_life_expectancy", "operator": "gte", "value": 80 }],
  "stateFips": "48",
  "results": [
    {
      "fips": "<upstream geo id>",
      "name": "<county name>",
      "stateFips": "48",
      "population": <integer or null>,
      "data": { "chr_life_expectancy": <number or null>, "median_household_income": <number or null> }
    },
    ...
  ]
}

GET /api/v1/state/{abbr}

One state, DC or territory by postal abbreviation, case-insensitive. staticData is the site's state profile: income, property, sales, retirement, estate and capital gains tax, politics, gun laws, cost of living, and for states also crime, healthcare, education, housing and more. attrs adds 26 enrichment figures or is null. 404 for an unknown abbreviation. Cached 1 hour.

GET https://liveordiehere.com/api/v1/state/TX
{
  "abbr": "TX",
  "name": "Texas",
  "slug": "texas",
  "staticData": {
    "incomeTax": { "hasIncomeTax": false, "type": "none", "topRate": 0 },
    "propertyTax": { "effectiveRate": <number> },
    "salesTax": { "stateRate": <number>, "avgCombined": <number> },
    "retirement": { "socialSecurityTaxed": <boolean>, "pensionExempt": "full" | "partial" | "none" },
    "estateTax": { "hasEstateTax": <boolean>, "hasInheritanceTax": <boolean> },
    "capitalGains": { "taxedAsIncome": <boolean> },
    "politics": { "lean": "R" | "D" | "swing", "margin2024": <number> },
    "gunLaws": { "grade": "<letter>", "permitToPurchase": <boolean>, "carryPermit": "permitless" | "shall-issue" | "may-issue" },
    "costOfLiving": { "index": <number, 100 = US average> },
    "crime": { ... }, "healthcare": { ... }, "education": { ... }, "housing": { ... }, ...
  },
  "attrs": { "graduationRate": <number or null>, "electricityRate": <number or null>, ... 26 keys } | null,
  "meta": { "sources": ["static", "dataspine_profile", "dataspine_attrs"], "fetchedAt": "<ISO timestamp>" }
}

Crawling

  • robots.txt allows every crawler on every public page, with explicit allow blocks for GPTBot, ChatGPT-User, OAI-SearchBot, ClaudeBot, Claude-User, PerplexityBot, Google-Extended, Bingbot, Applebot-Extended and CCBot so the policy is unambiguous. Only /admin/ and /api/admin/ are disallowed.
  • The sitemap is at https://liveordiehere.com/sitemap.xml and lists every state, county, compare, hub and article page with a true last-modified date.
  • An IndexNow key file is published at the site root, and article URLs are submitted to IndexNow when they publish or change.
  • Pages are server-rendered. The figures, the prose and the JSON-LD are in the HTML response; no JavaScript is needed to read them. The map and the calculators are interactive and load their data in the browser from the API.

The MCP server

The same data as six tools for AI assistants, at https://liveordiehere.com/mcp. Streamable HTTP, no key, no session. Point any MCP client at that URL. In Claude Code: claude mcp add --transport http live-or-die-here https://liveordiehere.com/mcp.

  • list_fields: the 213-field county catalog with label, section, unit and source. Filter by a word or a section.
  • search_counties: county name or part of one, optional state, largest first. Turns “Harris County, Texas” into 48201.
  • get_county: one county by FIPS: every field, the change since the previous data release where there is one, the sources, and the profile URL to cite.
  • get_state: one state or territory by two-letter code: the tax and law profile, a one-line lede, prose sections and the page URL.
  • rank_counties: rank all 3,143 counties or one state’s by any field or by population, with conditions on other fields and a population floor. Up to 100 rows. This is the one thing the REST API cannot do in a single call.
  • rank_states: rank the 50 states (DC and the territories on request) by one state-level fact: tax rates, gun grade, 2024 margin, home price, K-12 rank and the rest of the state facts the county map fans out.

Every result carries url, dataAsOf and sources. The server’s instructions ask the assistant to cite them. Limit: 60 requests a minute per address. The endpoint answers a browser GET with a short JSON notice and a 405, by design.

Your Priorities

Adjust and every page updates live

Quick Profiles

Dial in your priorities

Annual Income

$150K

Affects effective income tax rate

$0$500K$5M+

Retirement Savings

$0

Affects pension and SS tax burden

None$500K$10M+

Social Security

None

Annual Social Security benefit

None$150K/yr

My Property Is Worth

$400K

Affects property tax burden

Tax burden ↓$1M$50M+

Home Buying Budget

$400K

Compared to state median home price

Hard to find$250K$5M+

Monthly Rent Budget

Don't care

Compared to state median 2BR rent

Don't care$10K/mo

Job Market

Don't care

State unemployment and job growth

Don't careHot market

Airport Access

Don't care

Direct flight destinations from state hubs

Don't careMust have hub

City vs Country

Mid-size city

% urban population

Deep countryBig city

Sunshine

Don't care

Annual sunny days per state

Don't careMax sunshine

Food Scene

Don't care

Restaurants per 100K residents

Don't careWorld-class

Political Preference

Neutral

State's political lean

LiberalConservative

Gun Laws

Neutral

State gun law grade (Giffords)

Gun Control2A Freedom

Abortion Access

Neutral

State abortion access policy

Pro-ChoiceNeutralPro-Life

Community

None

Congregations per 100K residents

AvoidDon't careSeek

Sports & Entertainment

Don't care

Pro sports teams and major venues

Don't careMust have pro teams

Cannabis Laws

Neutral

State cannabis legality

Prefer LegalNeutralPrefer Prohibition

Retiree Community

Neutral

% population 65+ (Census)

Young areaRetirement-heavy

Dating Market

Neutral

% adults never-married (Census)

Singles sceneFamily community

Safety / Low Crime

Don't care

Violent crime rate per 100K (FBI)

Don't careVery safe

School Quality

Don't care

K-12 rank (Education Week)

Don't careTop-ranked

Healthcare Access

Don't care

Healthcare system rank (Commonwealth Fund)

Don't careTop-ranked

Childcare Affordability

Don't care

Cost of living proxy for childcare affordability

Don't careMust be affordable