Bulk Data Download

This page walks you through Bulk Data Download: pulling water level, rainfall, climate, model-ready files, and photos out of the Hyfi portal across many sites and long date ranges. Exports are built in the background and delivered by email.

Bulk Data Download overview

Table of Contents

Access Requirements

To use Bulk Data Download, you need ADMIN access on your team. If you don't see the download icon in the navigation bar, email support@hyfi.io and we'll add the access for you.

Exports are always emailed to the address you are signed in with. You cannot send an export to someone else's address. Forward them the download link instead.

What You Can Export

Start by telling the page what the data is for. Each option sets sensible defaults for everything below it, and you can still change any individual setting afterwards.

CSV / Excel CSV export option

Depth, elevation, and precipitation as spreadsheets you can open in Excel or Google Sheets.

SWMM SWMM export option

Native .dat timeseries, evenly spaced and ready to import, plus an optional climate file.

SWAT+ SWAT+ export option

A daily weather pack in native .pcp, .tmp, .hmd, .wnd, and .slr files.

Photos Photos export option

Trail camera stills and field photo uploads, without the numbers.

There is no Custom button to press. Change any setting after picking one of the four above and the page moves to a custom mix on its own, deselecting the preset. Nothing you have chosen is lost; the receipt on the right always lists exactly what the export contains.

Size Limits and Delivery

Sites per export No limit. Pick as many as you need
Date range Up to 3 years (1095 days)
Trail camera stills About one per hour, up to 20,000 per site
Field photos Up to 300 per site
Download link Stays live for 14 days

Large exports take a few minutes to build. You do not need to keep the page open. Close the tab and wait for the email.

There is no cap on how many sites you can pick, because site count is not what makes an export too big. What matters is the total number of rows, which is your sites multiplied by your parameters multiplied by how many time steps fit in the date range. The receipt estimates this as you go and warns you if the export is heading past what one run can build, along with what to change: a shorter range, fewer sites or parameters, or a coarser interval.

Need more than the limits above? Email support@hyfi.io and we can run it for you.

Creating an Export

  1. Click the download icon in the top navigation bar.
    Download icon in the navigation bar


  2. Choose what you're downloading for. The panel underneath tells you exactly what you'll get.
    Choosing an export purpose


  3. Select your sites. Search by site name, such as "Telegraph over River Rouge", or by Hyfi site code, the short plus code that identifies each location, such as "86JR8P2H+H93F". The site code also appears in every exported filename, so it is worth recognising even if you normally search by name. You can also use Select all. The list flags sites that have a trail camera or field photos.
    Selecting sites


  4. Set your date range with a preset or with custom start and end times.
    Setting the date range


  5. Pick which measurements you want. Depth, elevation, and precipitation are on by default; More measurements opens temperature, humidity, wind, solar radiation, and evapotranspiration.
    Choosing measurements


  6. Optional. Open Advanced options to change the time step, timezone, gap handling, or estimation method. Most people never need to.
    Advanced options panel


  7. Check the summary on the right. It lists every file you're about to receive and every setting that produced them.
    Export summary panel


  8. Click Request export. You'll see a confirmation, and the email arrives when the files are built.
    Export requested confirmation

What's Inside the ZIP

Every export arrives as a single ZIP. Depending on what you asked for, it contains:

  • csv/: one file per site and measurement, named with the site code, the measurement, and the timezone, for example 86JR8P2H+H93F_depth_UTC.csv
  • swmm/: .dat timeseries and climate files, if you selected SWMM
  • swat/: .pcp, .tmp, .hmd, .wnd, and .slr files, if you selected SWAT+
  • photos/: trail camera stills and field uploads, organized by site
  • qa_report.json: a machine-readable summary of coverage, with expected and actual point counts, percent estimated, percent missing, and the largest gap for every site and measurement

Each CSV also opens with a header block recording the site, coordinates, datum, agency, time range, timezone, units, time step, estimation method, and maximum gap. If you hand the file to a colleague or a reviewer, those settings travel with it.

Reading the QC Column

Every row in every CSV carries a qc column saying where that value came from. This is the fastest way to tell real readings from estimated ones.

ValueMeaning
measuredA real reading from the monitor, or from the agency that owns the gauge, carried through with the same processing and quality control you see in the portal. Not a raw unchecked value, and not estimated.
interpolatedEstimated while resampling onto the even time step, because no reading landed on that timestamp.
zero_filledA rainfall slot with no record, treated as dry because you chose the zero-fill policy.
reanalysisA modeled climate value from ERA5 rather than a reading from the monitor at your site.
ice_affectedInside a marked ice-obstruction window, kept because this export did not exclude them.
Rows inside a gap longer than your maximum-gap setting, and rows removed by ice exclusion, are left out of the file entirely rather than written as blanks. You still get one file per site and measurement; the timestamps simply jump across the gap.

With a 10-minute interval and a 2-hour maximum gap, a four-hour outage looks like this in the CSV. Nothing marks the gap in the rows themselves, so it is worth knowing to expect it:

date,time,value,qc
06/14/2026,13:50,3.180,measured
06/14/2026,14:00,3.210,measured
06/14/2026,18:00,2.940,measured     <-- four hours later, no rows in between
06/14/2026,18:10,2.930,measured

The same outage in qa_report.json, where it is recorded explicitly:

{
  "site_code": "86JR8P2H+H93F",
  "parameter": "depth",
  "expected_points": 52560,
  "actual_points": 51705,
  "pct_interpolated": 5.52,
  "pct_missing": 1.63,
  "largest_gap_minutes": 240,
  "gaps_exceeding_max_gap": [
    { "start": "2026-06-14T14:00:00Z", "end": "2026-06-14T18:00:00Z", "gapMinutes": 240 }
  ]
}

Time Step, Gaps, and Estimation

Monitors do not all report at the same moment, so an export resamples every site onto one even time step. That is what lets the files line up in a model without a cleanup pass first.

  • Output interval: every 5, 10, 15, or 30 minutes, or hourly.
  • Estimation method: how a value between two readings is worked out, either linear, nearest, or previous.
  • Maximum gap: how long an outage can be before the export stops estimating across it. Anything longer is left out entirely rather than given an invented shape, as shown in the example above.
  • Rainfall gaps: leave blank, or fill with zero. This is the difference between "we don't know" and "it didn't rain," and it changes a model's totals, so choose it deliberately.

SWAT+ files are daily, so the interval, maximum gap, and estimation settings do not apply to them.

Timezones and Daylight Saving

You can export in UTC or in any fixed US offset: Eastern, Central, Mountain, Pacific, Alaska, or Hawaii. Standard and daylight are listed separately, so you choose EST or EDT, CST or CDT, and so on.

Every option is a fixed offset. Timestamps will not shift for daylight saving partway through the series. This is deliberate, because a series that jumps an hour in March is a series a model cannot use, but it does mean a spring or autumn export will be an hour off local wall-clock time on one side of the change. Pick the variant your data is in. The timezone appears in every filename and in the header of every file, so there is no ambiguity later.

Ice-Obstructed Readings

When ice or snow sits over a Hyfi monitor, the water level it reports is not the water level. You mark those periods yourself, on the site chart: open a site during ice season, click the snowflake button above the chart, and drag across the affected stretch of the timeline. Hyfi staff can mark them too, but in practice the people who know a site is iced over are the people watching it.

Any team member can mark ice, on any Hyfi site, whenever the charted date range overlaps October through May. It is not limited to administrators.

Once a window is marked, you decide what an export does with it:

  • Remove them (the default): those rows are left out of the file.
  • Keep and flag them: the values stay, marked ice_affected in the qc column, so you can judge them yourself.

The qa_report.json records how many ice windows applied to each site and how many points each one affected.

Photo Exports

Photo exports come in two kinds, and you can include either or both:

  • Trail camera stills: automatic images from the trail camera at the site, sampled at roughly one per hour.
  • Field photos: images uploaded by people visiting the site.

The site list shows which sites have a trail camera and which have field uploads, so you can narrow the selection before you commit. Photo exports get large quickly, and the page warns you before you request one that will take a while.

If you ask for photos only and none of the sites you picked has any, the page says so and holds the submit button rather than emailing you an empty ZIP.

Troubleshooting

What you're seeingWhat to do
No download icon in the navigation bar You do not have ADMIN access on this team. Email support@hyfi.io and we'll add it.
"Access Restricted" when you open the page Same cause as above: the export is limited to team administrators.
The email hasn't arrived Large exports take several minutes. Check your spam folder. If it's been more than 20 minutes, write to support@hyfi.io with the time you requested it.
The download link no longer works Links expire after 14 days. Request the export again.
A site you selected has no data in the file The summary panel warns when a selected site has no data in your date range, usually because it was installed after the range ended or removed before it started.
The submit button says 0 of your sites have photos None of the selected sites has a trail camera or any field uploads, so the export would be empty. Pick sites the list flags with a camera or photo icon, or include measurements as well.
The receipt warns the export is too big to build Shorten the date range, drop some sites or parameters, or choose a coarser time step. Any one of them brings the row count down; the estimate updates as you change it.
More rows are marked interpolated than you expected That reflects resampling onto the even time step, not missing data. Check pct_missing and largest_gap_minutes in qa_report.json for the real coverage picture.

Need Help?

If you're having trouble downloading data, or you need an export larger than what one run can build, email support@hyfi.io and we'll help.