Add money Find jobsWatch videosDocsBuild with AIExamplesUse casesFor agentsDaily storm leadsML Storm ForecastDataCompareStorm mapAPI AccessStorm Mailers Legacy log in Get an API key
An agent at a desk looking at a laptop while rain falls outside the window

For insurance agents, underwriters and lenders

Which of your locations sit in a forecast county?

Send up to 500 locations. Get each one's county forecast status. County-level, not an address forecast.

500addresses per request
County statusone per location
5¢per property
$25for all 500

Forecast risk: it could happen, not a promise. Free preview shows the price first.

Plain money math

Agents, underwriters, lenders

Look at the locations in forecast counties first. Skip the quiet ones. No yearly data contract.

5¢per location
$25to screen 500 locations
$0contract or monthly fee

How it works

Three steps. Worst first.

1

Send your list

Up to 500 addresses in one go.

2

Get a status each

The county forecast status, A to F.

3

Work the C, D and F first

Run it again after each forecast update.

What you get back

One county status per location.

A No or lowB ModerateC ElevatedD SevereF Extreme
Sample layout · 12 of 500 rows
IDLocationCounty statusMeaning

Sample layout with made-up statuses, to show the shape of a result. It is not a live call.

Easiest way to start

Just ask your AI.

Copy this, paste it into ChatGPT or Claude, and it does the work for you. It turns your list of locations into a list of county statuses, with one small test first.

Copy, paste into ChatGPT or Claude
Using the TrueFixR storm API (https://data.truefixr.com/llms.txt), give each location on my spreadsheet its county forecast status. Show 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 list of property addresses in a spreadsheet and I want the county forecast status (A to F) for each one.

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: the route is POST https://data.truefixr.com/v1/portfolio/risk. The body is JSON like {"locations":[{"lat":30.27,"lon":-97.74,"label":"my id"}],"window":"24h"}. It takes up to 500 locations per call and returns one county status per location, in the same order. It costs $0.05 per location. A call with no key answers 402 with the price and charges nothing. Statuses are county-level, not address-level. A no or low risk, B moderate, C elevated, D severe, F extreme. It is a forecast: it could happen, it is not a promise.

The route needs latitude and longitude, not street addresses. Please: (1) show me how to turn my addresses into latitude and longitude with a free geocoder, (2) show me step by step how to send the list, in the simplest way for someone who does not code, (3) test with only 5 properties first and tell me the cost, (4) put the results back next to my addresses in a spreadsheet I can open.

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.

About the status

A status that looks ahead.

The status is the forecast label for the county each location sits in, a quick screen of which locations need attention. It is not an address-level or property-level forecast. For the structure value and people at each address, use ML Storm Forecast by Address. It is forecast risk: it could happen, it is not a promise. Run the scan again after each forecast refresh to see the status change.

Copy, paste into ChatGPT or Claude
Using the TrueFixR storm API (https://data.truefixr.com/llms.txt), find the locations on my list in counties with status C, D or F. Ask before any paid call. 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), take my list of properties and use POST /v1/portfolio/risk to find the ones in counties with status C, D or F. These are the locations to look at first. Start with the free preview, tell me the exact price before any paid call, and ask before you make one. Remind me it is forecast risk: it could happen, it is not a promise.

Have a developer?

Up to 500 addresses per request.

Your list is sent fresh each time and is not stored on our server. Add your own label to each row so you can match results back.

For developers: the request

Request

POST /v1/portfolio/risk

request body
{
  "locations": [
    { "lat": 30.27, "lon": -97.74, "label": "optional, your own reference" }
  ],
  "window": "24h"
}

You get back

One county status per location, in the same order you sent them.

response shape
{
  "results": [
    { "lat": 30.27, "lon": -97.74, "county": "Travis", "state": "TX", "grade": "B" }
  ]
}

Response shape as published in the API's own example. A real paid call costs money, so this page does not run one.

Try before you pay

See the price first.

Ask without a key and you are told the price. Nothing is charged.

For developers: what you see before you pay
curl
curl -i -X POST https://data.truefixr.com/v1/portfolio/risk \
  -H "Content-Type: application/json" \
  -d '{"locations":[{"lat":30.27,"lon":-97.74,"label":"hq"}],"window":"24h"}'
response, no key
HTTP/2 402
content-type: application/json
payment-required: eyJ4NDAyVmVyc2lvbiI6Mi... (same object as the body, trimmed)

{"x402Version":2, "error":"Payment required",
 "accepts":[{"scheme":"exact", "network":"eip155:8453", "amount":"50000", ...}],
 ...}

Real response from the live API, trimmed. The price is $0.05 per location (amount 50000 in atomic USDC, 6 decimals). With a key, the same request returns the statuses.

Have a developer?

CSV in. CSV out.

Reads your property list, sends 500 at a time, writes one results file. Set TRUEFIXR_API_KEY to your key.

For developers: the full CSV script

Input file

properties.csv
id,lat,lon
P0001,30.27,-97.74
P0002,32.78,-96.80
scan.py
import csv, os, requests

URL = os.environ.get("TRUEFIXR_URL", "https://data.truefixr.com/v1/portfolio/risk")
KEY = os.environ["TRUEFIXR_API_KEY"]
BATCH = 500  # max locations per call

with open("properties.csv", newline="") as f:  # columns: id,lat,lon
    rows = list(csv.DictReader(f))

out = []
for i in range(0, len(rows), BATCH):
    chunk = rows[i:i + BATCH]
    r = requests.post(
        URL,
        headers={"Authorization": f"Bearer {KEY}"},
        json={
            "locations": [{"lat": float(p["lat"]), "lon": float(p["lon"]), "label": p["id"]} for p in chunk],
            "window": "24h",
        },
        timeout=120,
    )
    r.raise_for_status()  # a 402 here means the balance cannot cover this batch
    results = r.json()["results"]
    assert len(results) == len(chunk), "expected one result per location"
    for p, res in zip(chunk, results):
        out.append({"id": p["id"], "lat": p["lat"], "lon": p["lon"],
                    "county": res.get("county"), "state": res.get("state"), "grade": res.get("grade")})
    print(f"batch {i // BATCH + 1}: {len(chunk)} locations scored")

with open("results.csv", "w", newline="") as f:
    w = csv.DictWriter(f, fieldnames=["id", "lat", "lon", "county", "state", "grade"])
    w.writeheader()
    w.writerows(out)
print(f"wrote results.csv, {len(out)} rows")

How this was tested: both scripts were run against a local mock server that returns the same response shape, with a 1,203-row file. They sent 3 batches (500, 500 and 203), wrote 1,203 result rows, and produced identical output files. No paid call was made. Python needs requests. JavaScript needs Node 18 or newer.

What it costs

$0.05 per location.

Prepaid balance. No contract, no seats. Pay only for the locations you send.

One full batch

500 x $0.05

$25.00

A 2,000 property list (4 calls)

2,000 x $0.05

$100.00

A 10,000 property list (20 calls)

10,000 x $0.05

$500.00

How to use it

Three steps.

Get a key

Add a prepaid balance on the get started page. Start with a free preview if you like.

Export your list

One row per property: an ID you choose, plus its location. Save it as a spreadsheet file.

Run the script, join on ID

Run the code (or let your AI do it). Match the grades back to your list by ID. Re-run it whenever you want a fresh scan.

Honest limits

What a grade is, and is not.

Forecast risk

The status says what could happen soon in the county. It comes from probabilistic forecasts that refresh several times a day. It is not a statement that anything has happened.

Not a damage prediction

A county status is not a property score, an inspection or a damage assessment. Use it to decide which locations to look at first.

A quick scan, not a full pull

This route is a fast snapshot across a list. For address-level forecasts use ML Storm Forecast by Address. For one property's past, use Storm History by Address.

Limits per call

Up to 500 locations per call, with US coordinates. Batch larger lists in chunks, as the code above does. If your balance runs out, the call stops until you add more.

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