Data

Every estimate on this site is free to download and reuse. This page lists what is published, what each field means, and how to credit it.

What is published

Each county has a JSON file with the same numbers as its page. It is generated from the same record, so the two always agree.

  • /api/county/<geoid>.json: one county, by its five-digit FIPS code. Example: /api/county/23019.json.
  • /api/county/<slug>.json: the same file, by the page's path.
  • /api/county/index.json: every county, as a map from FIPS code to slug, name and state.
  • /api/zip/<first three digits>.json: maps each ZIP code to the county that holds most of its homes, as {"04401": {"geoid": "23019", "slug": "penobscot-county-me"}}. Example: /api/zip/044.json.

These files are refreshed on the first of each month. No key is needed. Please cache what you fetch.

County file fields

FieldTypeUnitMeaning
geoidstringThe county's five-digit Census FIPS code.
slugstringThe county page's path, e.g. penobscot-county-me. The same JSON is served at /api/county/<slug>.json.
namestringCounty name as the Census Bureau publishes it.
statestringTwo-letter postal code.
price_usd_per_cordnumberUSD per full cordThe modeled price, rounded to rounding_step_usd.
price_low_usd_per_cordnumberUSD per full cordLow end of the range, rounded down.
price_high_usd_per_cordnumberUSD per full cordHigh end of the range, rounded up.
credible_interval_pctintegerpercentHow likely the true price is to fall inside the range (90).
price_usd_per_mmbtunumberUSD per million Btuprice_usd_per_cord divided by mmbtu_per_cord: the cost of the heat in the wood, before any stove's efficiency.
mmbtu_per_cordnumbermillion BtuHeat content assumed for one full cord.
rounding_step_usdnumberUSDThe rounding applied to the prices: $25 when the estimate rests mostly on the model, $10 with some real prices, $5 when real prices dominate.
evidence_tierstring (enum)observed, state_anchored or structural_only. observed: county-level real prices dominate. state_anchored: real prices count, but only statewide or regional ones, or too few local ones. structural_only: no real prices; the model alone.
evidence_tier_reasonstringOne plain sentence explaining the tier. The wording may be edited; the field stays.
wide_uncertaintybooleanTrue when the high end is more than twice the low end, measured before rounding.
n_observationsintegercountEntries in the county's evidence: each price survey counts once, all reader prices together count once, and all seller prices together count once.
n_user_submissionsintegercountAccepted reader-submitted prices used for this county.
n_vendor_observationsintegercountDistinct firewood sellers whose published prices were used for this county. A seller counts once however many towns it serves.
finest_observation_geographystring (enum) or nullcounty, state or region: the most local real price the estimate uses. null when there is none.
unitstringThe unit every price refers to. Always cord (a full cord).
basis_seasoningstringThe product the price describes: seasoning. Currently always seasoned.
basis_formstringForm of the wood. Currently always cut_split.
basis_deliverystringDelivery. Currently always delivered.
basis_stackingstringWhether stacking is included. Currently always unspecified.
hdd_annual_base65numberdegree days (°F)Annual heating degree days, base 65°F, from NOAA's 1991–2020 climate normals at the nearest station.
wood_heat_sharenumberfraction, 0 to 1Share of occupied homes heating mainly with wood (Census American Community Survey).
wood_heat_share_vintage_yearintegeryearThe Census survey release wood_heat_share comes from.
comparison_fuelsarray of objectsStatewide residential prices of other heating fuels, for comparison. One object per fuel; may be empty.
comparison_fuels[].fuelstring (enum)electricity, fuel_oil_no2, natural_gas or propane.
comparison_fuels[].price_usd_per_mmbtunumberUSD per million BtuThe state's latest residential price from the U.S. Energy Information Administration, converted to heat content, before appliance efficiency.
comparison_fuels[].periodstringThe period the price is for: a week (YYYY-MM-DD) or a month (YYYY-MM).
comparison_fuels[].frequencystring (enum)weekly or monthly.
model_versionstringVersion of the estimation code. Changes are listed in the changelog below.
coefficient_set_versionintegerVersion of the model's fixed settings. Changes are listed in the changelog below.
accessedstring (date)YYYY-MM-DDThe latest date any input source was fetched for this build.

Monthly snapshots

The county files above are replaced every month. To keep the record, each month's full set is saved as a snapshot that never changes. Each snapshot has CSV and Parquet tables and a README.

MonthModelCounty estimatesHow it was saved
2026-10 1.0.0, coefficients v3 CSV · Parquet Rebuilt from that month's published site
2026-09 1.0.0, coefficients v3 CSV · Parquet Rebuilt from that month's published site
2026-08 1.0.0, coefficients v2 CSV · Parquet Rebuilt from that month's published site

Checksums (SHA-256) for every file, and any corrected rerun of a month, are listed in the index: https://data.woodheatindex.com/snapshots.json.

Seller and reader prices appear only as counts per county. No seller is ever named, and no single contributor's price is ever shown.

License

The estimates are licensed CC BY 4.0. You may copy, share and adapt them for any purpose, including commercial use. Credit Wood Heat Index and link to this page.

The government data inside the estimates keeps its own terms. These credit lines must travel with it:

  • This product uses the Census Bureau Data API but is not endorsed or certified by the Census Bureau.
  • This product uses the HUD User Data API but is not endorsed or certified by HUD User.
  • Climate normals: Palecki, Michael; Durre, Imke; Applequist, Scott; Arguez, Anothony; Lawrimore, Jay. 2021: U.S. Climate Normals 2020: U.S. Annual-Seasonal Climate Normals (1991-2020). NOAA National Centers for Environmental Information.

How to cite

Wood Heat Index. County firewood price estimates, snapshot 2026-10 (model 1.0.0, coefficients v3). https://woodheatindex.com/data/. Licensed CC BY 4.0.

Name the snapshot month when you can. The live files change every month; a snapshot does not.

Changelog

A new model or coefficient version can move every estimate even when prices did not change. Each change is listed here.

DateModelCoefficientsWhat changed
2026-08-161.0.0v3 de80b87e0f0eAdded two settings for prices from firewood sellers' websites. No existing setting changed, so no published number moved. First published in the 2026-09 snapshot.
2026-08-141.0.0v2 7ed601684937Launch. The first published estimates.

The coefficients themselves are listed in the technical notes.

For researchers and journalists

For questions about the data or media requests, write to [email protected]. How the estimate works is explained on the methodology page.

What we promise not to change

Field names, and the meaning of each field and each listed value, are fixed. New fields may be added, so ignore any you don't recognize. If a field ever has to be renamed, removed or redefined, the snapshot index's schema_version goes up and the change is noted here. Snapshots, once published, are never edited or deleted.