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.
Table of Contents
- Access Requirements
- What You Can Export
- Size Limits and Delivery
- Creating an Export
- What's Inside the ZIP
- Reading the QC Column
- Time Step, Gaps, and Estimation
- Timezones and Daylight Saving
- Ice-Obstructed Readings
- Photo Exports
- Troubleshooting
- Need Help?
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.
Depth, elevation, and precipitation as spreadsheets you can open in Excel or Google Sheets.
Native .dat timeseries, evenly spaced and ready to import, plus an optional climate file.
A daily weather pack in native .pcp, .tmp, .hmd, .wnd, and .slr files.
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.
Creating an Export
- Click the download icon in the top navigation bar.

- Choose what you're downloading for. The panel underneath tells you exactly what you'll get.

- 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.

- Set your date range with a preset or with custom start and end times.

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

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

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

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

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 example86JR8P2H+H93F_depth_UTC.csvswmm/:.dattimeseries and climate files, if you selected SWMMswat/:.pcp,.tmp,.hmd,.wnd, and.slrfiles, if you selected SWAT+photos/: trail camera stills and field uploads, organized by siteqa_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.
| Value | Meaning |
|---|---|
measured | A 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. |
interpolated | Estimated while resampling onto the even time step, because no reading landed on that timestamp. |
zero_filled | A rainfall slot with no record, treated as dry because you chose the zero-fill policy. |
reanalysis | A modeled climate value from ERA5 rather than a reading from the monitor at your site. |
ice_affected | Inside a marked ice-obstruction window, kept because this export did not exclude them. |
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.
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_affectedin theqccolumn, 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 seeing | What 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.