Add money Find jobsWatch videosDocsBuild with AIExamplesUse casesFor agentsDaily storm leadsML Storm ForecastDataCompareStorm mapAPI AccessStorm Mailers Legacy log in Get an API key

For analysts and data teams

Add storm facts to your own spreadsheet.

Got a list of customers, policies or properties? Add columns for storm count and the county forecast label.

Try one address free. 1,000 addresses for $50.

A laptop showing a storm dashboard with a map and a table of addresses
37reported storms in the past year
Ccounty forecast label
+ Storm count
+ County label
2 new columns

Plain money math

Analysts and data teams

Enrich the list you already have. No big data purchase. No yearly contract.

5¢per address
$50for 1,000 addresses
Freeto try one address

How it works

Three steps. Two new columns.

1

Open your list

Any spreadsheet with addresses.

2

Add storm columns

Storm count and county forecast label for each row.

3

Sort worst first

Find the rows that matter.

Easiest way to start

Just ask your AI.

Copy this, paste it into ChatGPT or Claude, and it does the work for you. It adds the storm columns to your own spreadsheet, with one small test first.

Copy, paste into ChatGPT or Claude
Using the TrueFixR storm API (https://data.truefixr.com/llms.txt), add storm columns to my spreadsheet of addresses: storms in the past year, storm types, and the county forecast label. Tell me the price first. My key: YOUR_KEY

Paste it into ChatGPT or Claude, swap in your address and your key.

More detail for your AI
Paste this into Claude or ChatGPT
I am not a programmer. I have a spreadsheet of addresses and I want to add storm columns to it: how many storms were reported near each address in the past year, the storm types, and the county forecast label (A to F, context only).

Base URL: https://data.truefixr.com
Docs: https://truefixr.com/docs.html
Free menu of everything the API offers: https://data.truefixr.com/v1/data
My API key is YOUR_KEY. Paid calls need the header Authorization: Bearer YOUR_KEY. Free previews need no key.

What to do: for each row, call
GET https://data.truefixr.com/v1/data?dataset=address&lat=[LAT]&lon=[LON]
It returns storm_event_count, storm_types and current_forecast_risk (the county label: grade and grade_label). The free preview needs no key and allows 60 requests per minute per IP, so go slowly. The call needs latitude and longitude, not street text, so I may need to convert my addresses first.

Please: (1) ask what tool I use (Excel, Google Sheets or something else), (2) show me how to get latitude and longitude for my addresses, (3) give me step-by-step instructions to add the new columns, (4) try it on 5 rows first and show me the result.

Rules for you:
- Always start with the free preview and tell me the exact price before any paid call. Never make a paid call without asking me first.
- If you cannot call web addresses yourself, give me the exact link to open in my browser and I will paste back what I see.
- Talk to me like I am not a programmer. Short steps, plain words, tell me exactly what to click or paste.
- These are reported and radar-detected storm events and forecast risk. They are not an inspection and not a damage assessment, so say so in your answer.

How to use it. 1. Press Copy. 2. Open Claude or ChatGPT and paste. 3. Swap YOUR_KEY for your key from Get started, or leave it and stay on the free previews.

Also available: the forecast

Add a column for the storm to come.

History tells you what was reported. ML Storm Forecast by Address adds what could happen next: the structure value and people at each address in the forecast, 24 hours to 10 days ahead. It is forecast risk: it could happen, it is not a promise.

Copy, paste into ChatGPT or Claude
Using the TrueFixR storm API (https://data.truefixr.com/llms.txt), add the storm history count and the county forecast label to my addresses. Try 5 rows and ask before paying. My key: YOUR_KEY

Paste it into ChatGPT or Claude, swap in your address and your key.

More detail for your AI
Paste this into Claude or ChatGPT
Using https://data.truefixr.com (docs: https://truefixr.com/docs.html), add two columns to my spreadsheet of addresses: the county forecast label (A to F) from dataset=address, and the storm history count. Sort by the county label, worst first. Start with the free preview on 5 rows, tell me the exact price, and ask before any paid call. It is forecast risk: it could happen, it is not a promise.

Before and after

Your table gets new columns.

Start with an ID, an address and its location. Each row gets its storm facts added as new columns.

addresses.csv 4 columns
idaddresslatlonstorm_event_countstorm_typesrisk_graderisk_label
1Main St, Dallas TX32.78-96.80297HEAVY_RAINCElevated risk
2Congress Ave, Austin TX30.27-97.74107HEAVY_RAIN,OTHERBModerate risk
3Broadway, Oklahoma City OK35.47-97.520ANo current risk
4Collins Ave, Miami FL25.79-80.1386HEAVY_RAINANo current risk
5State St, Chicago IL41.88-87.6354FLOODANo current risk
6Larimer St, Denver CO39.74-104.9953HEAVY_RAINANo current risk
Sample table. The street names and ids are made up for the demo. The lat and lon were sent to the live free preview and the new columns are the values it returned on Oct 3, 2026. County forecast labels change several times a day.

Have a developer?

Read a CSV. Write a richer one.

One request per row, a short pause between calls, and a retry when the server is busy. Free previews allow 60 requests per minute per IP without a key, so the script waits 1.1 seconds between rows.

For developers: the Python script
enrich.py
import time
import pandas as pd
import requests

URL = "https://data.truefixr.com/v1/data"
DELAY = 1.1  # seconds between calls, about 55 per minute

def lookup(lat, lon, tries=4):
    for n in range(tries):
        try:
            r = requests.get(URL, params={"dataset": "address", "lat": lat, "lon": lon}, timeout=30)
        except (requests.Timeout, requests.ConnectionError):
            time.sleep(2 ** (n + 1))
            continue
        if r.status_code == 200:
            return r.json()
        if r.status_code in (429, 500, 502, 503, 504):
            time.sleep(int(r.headers.get("Retry-After", 2 ** (n + 2))))
            continue
        r.raise_for_status()
    return {}

rows = []
df = pd.read_csv("addresses.csv")
for lat, lon in zip(df["lat"], df["lon"]):
    d = lookup(lat, lon)
    risk = d.get("current_forecast_risk") or {}
    rows.append({
        "storm_event_count": d.get("storm_event_count"),
        "storm_types": ",".join((d.get("storm_types") or {}).keys()),
        "risk_grade": risk.get("grade"),
        "risk_label": risk.get("grade_label"),
    })
    time.sleep(DELAY)

out = pd.concat([df, pd.DataFrame(rows)], axis=1)
out.to_csv("addresses_enriched.csv", index=False)
print(out.to_string(index=False))

Output from a real run of this script on a 5 row file, using free previews (the address names in that file are placeholders):

output
 id                   address   lat    lon  storm_event_count      storm_types risk_grade      risk_label
  1         Main St Dallas TX 32.78 -96.80                297       HEAVY_RAIN          C   Elevated risk
  2    Congress Ave Austin TX 30.27 -97.74                107 HEAVY_RAIN,OTHER          B   Moderate risk
  3 Broadway Oklahoma City OK 35.47 -97.52                  0                           A No current risk
  4      Collins Ave Miami FL 25.79 -80.13                 86       HEAVY_RAIN          A No current risk
  5       State St Chicago IL 41.88 -87.63                 54            FLOOD          A No current risk
Larger files. The free preview shows real counts and the real price. For more than a few dozen rows, use a prepaid API key and send Authorization: Bearer YOUR_API_KEY. Skip duplicate coordinates before you call, so you pay once per place.

Then what?

Load the result. Match it to anything.

The finished file opens in Excel or Google Sheets, or loads into your database. Then it is one more table.

For developers: load it into a database
SQL
-- Column types: adjust names to your warehouse (DOUBLE PRECISION is FLOAT64 in BigQuery)
CREATE TABLE address_storm (
  id                 INTEGER PRIMARY KEY,
  address            VARCHAR(255),
  lat                DOUBLE PRECISION,
  lon                DOUBLE PRECISION,
  storm_event_count  INTEGER,
  storm_types        VARCHAR(255),
  risk_grade         CHAR(1),
  risk_label         VARCHAR(64)
);

-- Which accounts sit in the highest forecast risk, and how much storm history they have
SELECT risk_grade, COUNT(*) AS addresses, AVG(storm_event_count) AS avg_events
FROM address_storm
GROUP BY risk_grade
ORDER BY risk_grade DESC;

The columns match the fields returned by dataset=address: storm_event_count, storm_types, and current_forecast_risk.grade with its label.

Cost

Price is per address.

A quick storm check is $0.05 per address. The free preview shows the real price before you pay.

1,000 ADDRESSES
$50.00

1,000 x $0.05

10,000 ADDRESSES
$500.00

10,000 x $0.05

100,000 ADDRESSES
$5,000.00

100,000 x $0.05

Prepaid balance. No contract, no seats. Weather lookups are priced separately at $0.0002 per call.

Honest limits

What to keep in mind.

Counts are not damage

Storm events are reported and radar-detected near the address. It is not a property inspection and not a damage assessment.

Forecast is "could happen"

The county label (A to F) is probabilistic, refreshed several times a day. It changes. Store the date you pulled it.

Free previews are counts

The preview returns counts and the county label, not a per-year breakdown, so this page has no chart of events by year.

Coordinates in, not street text

Each row needs its latitude and longitude, matched within about 500 feet. Convert street addresses first, then add storm facts.

Speed

Free previews without a key allow 60 questions a minute. The script above stays under that.

US coverage

Check the free coverage list to see what is covered. Rows with no match come back empty.

What you can build

Your data. Your template. Your brand.

We sell the storm data. You decide how it looks. Everything comes back as JSON you can save, and lists also come as a CSV file with format=csv.

A storm report built from the data

A branded report

Your logo, your layout. Our data fills it in.

A spreadsheet

Storm facts in a column next to each customer.

A CRM field

Save storm history on every customer record.

Your own text or email alert

Check on a schedule, then send your own message when a storm is near.

A map

Drop every address on your own map.

A mobile app

Put a storm check in your team's pocket.

Use it in your own tools. We do not lock you into a report format.

Start free in 2 minutes. No contract.

Try the free preview first. Add money to your balance only when you want the full answer. You pay only for what you use.

  • Free previews
  • No contract
  • Pay only for what you use