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.
+ County label2 new columns
Plain money math
Analysts and data teams
Enrich the list you already have. No big data purchase. No yearly contract.
How it works
Three steps. Two new columns.
Open your list
Any spreadsheet with addresses.
Add storm columns
Storm count and county forecast label for each row.
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.
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
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.
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
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.
| 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 |
| 6 | Larimer St, Denver CO | 39.74 | -104.99 | 53 | HEAVY_RAIN | A | No current risk |
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
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):
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
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
-- 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 x $0.05
10,000 x $0.05
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 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