GribStream

GribStream
Fast & Efficient Historical Weather Forecast API

Leverage The National Blend of Models (NBM) & The Global Forecast System (GFS)

What is NBM?

The National Blend of Models (NBM) is a nationally consistent and skillful suite of calibrated forecast guidance based on a blend of both NWS and non-NWS numerical weather prediction model data and post-processed model guidance. The goal of the NBM is to create a highly accurate, skillful and consistent starting point for the gridded forecast.

What is GFS?

The Global Forecast System (GFS) is a National Centers for Environmental Prediction (NCEP) weather forecast model that generates data for dozens of atmospheric and land-soil variables, including temperatures, winds, precipitation, soil moisture, and atmospheric ozone concentration. The system couples four separate models (atmosphere, ocean model, land/soil model, and sea ice) that work together to accurately depict weather conditions.

🚀 Blazing Fast

Tens of thousands of points at hourly rate, for months at a time in a single http request, in seconds.

🛠️ Easy to Use

Simple API, open-source clients and clear documentation. Try it in minutes.

📈 Cost-effective

Killer pricing and performance. Extract only what you need. No need to download/archive, just consume the on-demand stream.

Features roadmap

Actively being developed, hover items for details and don't hesitate contacting us for more information.

Result formats

✅CSV

Parquet

JSON lines

Image PNG, JPG, TIFF

MP4 H.264 H.265

Locations by

✅Latitude,Longitude

Zip Code

City

Shape

Times by

✅Range

List

✅Best series

✅Asof / Time-travel

Downsampling

Interpolation / upsampling

Aggregations

Averages

Weighted averages

Time weighted averages

Minimum, maximum

Percentiles

Histograms

Notifications

Threshold based

EMA outlier

Prediction changed

To e-mail

To webhook

✅ readily available

Examples

Query the best GFS historical data for two parameters, for a three day range, for three coordinates, as of the end of the second day

start = datetime.datetime.now(datetime.UTC)
df = client.history(
    dataset='gfs',
    from_time=datetime.datetime(year=2022, month=8, day=10, hour=0),
    until_time=datetime.datetime(year=2022, month=8, day=13, hour=0),
    coordinates=[
        {"lat": 40.75, "lon": -73.98},
        {"lat": 29.75, "lon": -95.36},
        {"lat": 47.60, "lon": -122.33},
    ],
    variables=[
        {"name": "TMP", "level": "2 m above ground", "info": ""},
        {"name": "TMP", "level": "surface", "info": ""},
    ],
    # Time travel. Before as_of, forecasted_time is history, after it is the forecast at as_of
    as_of=datetime.datetime(year=2024, month=8, day=12, hour=0),
    min_horizon=0,
    max_horizon=264,
)
print(df.sort_values(['forecasted_time', 'lat', 'lon']).head(20).to_string(index=False))
print('response in:', datetime.datetime.now(datetime.UTC) - start)

Output:

            forecasted_at           forecasted_time   lat     lon  TMP|2 m above ground|  TMP|surface|
2022-08-10 00:00:00+00:00 2022-08-10 00:00:00+00:00 29.75  -95.36                 305.76        306.26
2022-08-10 00:00:00+00:00 2022-08-10 00:00:00+00:00 40.75  -73.98                 303.16        303.46
2022-08-10 00:00:00+00:00 2022-08-10 00:00:00+00:00 47.60 -122.33                 297.66        298.66
2022-08-10 00:00:00+00:00 2022-08-10 01:00:00+00:00 29.75  -95.36                 304.38        304.30
2022-08-10 00:00:00+00:00 2022-08-10 01:00:00+00:00 40.75  -73.98                 301.58        301.80
2022-08-10 00:00:00+00:00 2022-08-10 01:00:00+00:00 47.60 -122.33                 295.48        296.10
2022-08-10 00:00:00+00:00 2022-08-10 02:00:00+00:00 29.75  -95.36                 303.24        303.22
2022-08-10 00:00:00+00:00 2022-08-10 02:00:00+00:00 40.75  -73.98                 301.04        301.42
2022-08-10 00:00:00+00:00 2022-08-10 02:00:00+00:00 47.60 -122.33                 294.24        294.52
2022-08-10 00:00:00+00:00 2022-08-10 03:00:00+00:00 29.75  -95.36                 302.77        302.79
2022-08-10 00:00:00+00:00 2022-08-10 03:00:00+00:00 40.75  -73.98                 300.47        300.69
2022-08-10 00:00:00+00:00 2022-08-10 03:00:00+00:00 47.60 -122.33                 291.47        290.99
2022-08-10 00:00:00+00:00 2022-08-10 04:00:00+00:00 29.75  -95.36                 301.26        300.90
2022-08-10 00:00:00+00:00 2022-08-10 04:00:00+00:00 40.75  -73.98                 299.06        299.50
2022-08-10 00:00:00+00:00 2022-08-10 04:00:00+00:00 47.60 -122.33                 288.96        288.20
2022-08-10 00:00:00+00:00 2022-08-10 05:00:00+00:00 29.75  -95.36                 300.61        300.24
2022-08-10 00:00:00+00:00 2022-08-10 05:00:00+00:00 40.75  -73.98                 297.31        297.44
2022-08-10 00:00:00+00:00 2022-08-10 05:00:00+00:00 47.60 -122.33                 287.51        286.94
2022-08-10 06:00:00+00:00 2022-08-10 06:00:00+00:00 29.75  -95.36                 300.38        299.93
2022-08-10 06:00:00+00:00 2022-08-10 06:00:00+00:00 40.75  -73.98                 296.98        296.93
response in: 0:00:00.790859
            

Check out the full documentation and code examples on GitHub.

Query the forecast made at 2024-09-10T00:00:00Z for three parameters, ten hours out, for three coordinates:

curl -X POST 'https://gribstream.com/api/v2/gfs/history' \
-H "Content-Type: application/json" \
-H "Accept-Encoding: gzip" \
-H "Authorization: Bearer $(curl https://gribstream.com/auth/demo)" \
-d '{
    "fromTime": "2022-08-10T00:00:00Z",
    "untilTime": "2022-08-13T00:00:00Z",
    "asOf": "2022-08-12T00:00:00Z",
    "minHorizon": 0,
    "maxHorizon": 384,
    "coordinates": [
        { "lat": 40.75, "lon": -73.98 },
        { "lat": 29.75, "lon": -95.36 },
        { "lat": 47.6, "lon": -122.33 }
    ],
    "variables": [
        { "name": "TMP", "level": "2 m above ground", "info": "" },
        { "name": "TMP", "level": "surface", "info": "" }
    ]
}' | gunzip | head -20
            

Output:

forecasted_at,forecasted_time,lat,lon,TMP|2 m above ground|,TMP|surface|
2022-08-10T06:00:00Z,2022-08-10T06:00:00Z,47.60,-122.33,287.28,286.83
2022-08-10T06:00:00Z,2022-08-10T06:00:00Z,40.75,-73.98,296.98,296.93
2022-08-10T06:00:00Z,2022-08-10T06:00:00Z,29.75,-95.36,300.38,299.93
2022-08-10T06:00:00Z,2022-08-10T08:00:00Z,47.60,-122.33,286.82,286.09
2022-08-10T06:00:00Z,2022-08-10T08:00:00Z,40.75,-73.98,295.72,295.79
2022-08-10T06:00:00Z,2022-08-10T08:00:00Z,29.75,-95.36,300.22,299.79
2022-08-11T06:00:00Z,2022-08-11T07:00:00Z,47.60,-122.33,286.26,285.27
2022-08-11T06:00:00Z,2022-08-11T07:00:00Z,40.75,-73.98,296.06,296.17
2022-08-11T06:00:00Z,2022-08-11T07:00:00Z,29.75,-95.36,297.86,298.07
2022-08-10T18:00:00Z,2022-08-10T19:00:00Z,47.60,-122.33,292.47,293.05
2022-08-10T18:00:00Z,2022-08-10T19:00:00Z,40.75,-73.98,303.67,307.85
2022-08-10T18:00:00Z,2022-08-10T19:00:00Z,29.75,-95.36,308.17,310.65
2022-08-11T00:00:00Z,2022-08-11T04:00:00Z,47.60,-122.33,288.15,287.10
2022-08-11T00:00:00Z,2022-08-11T04:00:00Z,40.75,-73.98,297.95,298.00
2022-08-11T00:00:00Z,2022-08-11T04:00:00Z,29.75,-95.36,298.55,299.00
2022-08-10T18:00:00Z,2022-08-10T22:00:00Z,47.60,-122.33,295.04,295.85
2022-08-10T18:00:00Z,2022-08-10T22:00:00Z,40.75,-73.98,304.44,305.75
2022-08-10T18:00:00Z,2022-08-10T22:00:00Z,29.75,-95.36,308.14,309.55
2022-08-10T12:00:00Z,2022-08-10T14:00:00Z,47.60,-122.33,288.04,288.10
            

NBM Weather parameters

GFS Weather parameters

Per request quota calculation

Credits are calculated as:

Credits = hours * parameters * (1 + (coordinates-1) / 1000)
Or in words, hours of data, times the number of weather parameters, times bundles of 1000 coordinates.

Examples:

1
1

Calculated credits:

0

Available Plans

A Free Plan is available to get you started. Upgrade to one of our Pro plans for higher daily usage limits.

Pro Plan

Daily Limit: 24,000 credits

$9.90 / month

Pro Plan 2x

Daily Limit: 48,000 credits

$18.80 / month

Pro Plan 4x

Daily Limit: 96,000 credits

$35.70 / month

Pro Plan 8x

Daily Limit: 192,000 credits

$67.80 / month

Pro Plan 16x

Daily Limit: 384,000 credits

$128.80 / month

Pro Plan 32x

Daily Limit: 768,000 credits

$244.70 / month

Pro Plan 64x

Daily Limit: 1,536,000 credits

$464.90 / month

Pro Plan 128x

Daily Limit: 3,072,000 credits

$883.30 / month

Pro Plan 256x

Daily Limit: 6,144,000 credits

$1678.30 / month

For larger-scale usage, heavy backfills, higher performance, or additional features, contact us.