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:
- Open a brew’s detail view
- Tap the menu in the toolbar
- Select Export as JSON
- Share or save the JSON file
Single brew export is always available to all users.
Bulk Export
Export all your brew data from Settings:
- Navigate to Settings > Data & Storage
- Tap Export Data
- Choose to include flow data (optional)
- Select Export Home Brews or Export Cafe Brews
Premium Restrictions
| User Tier | Single Brew | Bulk Export |
|---|---|---|
| Free | Any brew | Last 30 days only |
| Premium | Any brew | All 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 suffix | Unit |
|---|---|
*Grams | Grams (g) |
*Celsius | Celsius (°C) |
*Seconds | Seconds (s) |
*Bars | Bar pressure |
This ensures data consistency for external tools and integrations.
Recipe Fields by Style
| Field | Filter | Espresso |
|---|---|---|
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:
| Type | Pattern |
|---|---|
| Single brew | brew-{bean-name}-{timestamp}.json |
| Cafe brew | cafe-brew-{cafe-name}-{timestamp}.json |
| Bulk export | home-brews-{count}-{timestamp}.json |