Export

The Export feature allows you to export your brew data as JSON for backup, analysis, or integration with other tools.

Overview

Beanstats provides two export options:

  • Single Brew Export: Export any individual brew as JSON
  • Bulk Export: Export all your brews at once

Single Brew Export

Export any brew from its detail view:

  1. Open a brew’s detail view
  2. Tap the menu in the toolbar
  3. Select Export as JSON
  4. Share or save the JSON file

Single brew export is always available to all users.

Bulk Export

Export all your brew data from Settings:

  1. Navigate to Settings > Data & Storage
  2. Tap Export Data
  3. Choose to include flow data (optional)
  4. Select Export Home Brews or Export Cafe Brews

Premium Restrictions

User TierSingle BrewBulk Export
FreeAny brewLast 30 days only
PremiumAny brewAll historical data

Export Options

Include Flow Data

When exporting brews that have scale data, you can optionally include the raw weight samples. This increases file size but preserves the full brew profile for analysis.

Pretty Print

JSON is formatted with indentation for human readability.

JSON Format

Home Brew Export

{
  "id": "unique-identifier",
  "timestamp": "2026-01-07T08:30:00Z",
  "bean": {
    "name": "Ethiopia Yirgacheffe",
    "roaster": "Local Roaster",
    "roastLevel": "Light",
    "tastingNotes": "Blueberry, Jasmine"
  },
  "recipe": {
    "style": "filter",
    "doseGrams": 18.0,
    "waterGrams": 300.0,
    "ratio": "1:17",
    "grindSize": "Medium-fine",
    "waterTempCelsius": 94.0,
    "brewTimeSeconds": 210,
    "bloomTimeSeconds": 45
  },
  "flowData": {
    "peakFlowRate": 4.2,
    "sampleCount": 420,
    "samples": [...]
  },
  "evaluation": {
    "rating": 4.5,
    "notes": "Great brew!"
  },
  "method": { "name": "V60" },
  "equipment": [
    { "name": "Comandante C40", "type": "Grinder" }
  ]
}

Cafe Brew Export

{
  "id": "unique-identifier",
  "timestamp": "2026-01-07T10:00:00Z",
  "cafe": {
    "name": "Local Coffee Shop",
    "location": "Downtown",
    "coordinates": {
      "latitude": 52.3702,
      "longitude": 4.8952
    }
  },
  "coffeeStyle": "Cappuccino",
  "variety": {
    "name": "Gesha",
    "originCountry": "Panama"
  },
  "evaluation": {
    "rating": 5.0,
    "notes": "Best cap in town"
  }
}

Bulk Export Wrapper

Bulk exports include metadata:

{
  "metadata": {
    "exportedAt": "2026-01-07T15:30:00Z",
    "appVersion": "1.0.0",
    "exportVersion": "1.0"
  },
  "brews": [...]
}

Units

All exported values use consistent units regardless of your display preferences:

Field suffixUnit
*GramsGrams (g)
*CelsiusCelsius (°C)
*SecondsSeconds (s)
*BarsBar pressure

This ensures data consistency for external tools and integrations.

Recipe Fields by Style

FieldFilterEspresso
doseGrams
waterGrams
yieldGrams
ratio
grindSize
waterTempCelsius
brewTimeSeconds
bloomTimeSeconds
pressureBars
preInfusionSeconds

Flow Data Format

When includeFlowData is enabled:

{
  "flowData": {
    "peakFlowRate": 4.2,
    "wasAutoCapture": true,
    "detectedPreInfusionEnd": 5.5,
    "sampleCount": 210,
    "samples": [
      { "elapsedSeconds": 0.0, "weightGrams": 0.0, "flowRate": null },
      { "elapsedSeconds": 0.1, "weightGrams": 1.2, "flowRate": 12.0 }
    ]
  }
}

File Naming

Exported files follow these naming patterns:

TypePattern
Single brewbrew-{bean-name}-{timestamp}.json
Cafe brewcafe-brew-{cafe-name}-{timestamp}.json
Bulk exporthome-brews-{count}-{timestamp}.json