Bubble lets you export data through the built-in Data tab CSV export, the Data API for programmatic access, and custom export buttons for end users. This tutorial walks through each method so you can back up records, generate reports, or migrate data out of your Bubble app reliably and on schedule.
Overview: Exporting Data from Bubble
This tutorial covers every method for getting data out of your Bubble application. Whether you need a quick CSV backup, a download button for your users, or an automated scheduled export, you will learn the exact steps to set each one up. The guide is aimed at non-technical founders who want full control over their data.
Prerequisites
- A Bubble app with at least one Data Type containing records
- Editor access to your Bubble app
- Basic understanding of Bubble Data Types and fields
- A Bubble account on any plan (paid plan needed for backend workflows)
Step-by-step guide
Export CSV from the Data tab
Export CSV from the Data tab
Open your Bubble editor and click the Data tab in the left sidebar. Select App data at the top. Choose the Data Type you want to export from the dropdown. You will see your records listed in a table. Click the Export button in the top-right area of the data table. Bubble will generate a CSV file containing all records for that Data Type. The download will start automatically. Note that this export includes all fields visible to you as the editor, regardless of Privacy Rules.
Pro tip: If you have thousands of records, the CSV export may take a minute. Do not navigate away from the page until the download completes.
Expected result: A CSV file downloads to your computer containing all records for the selected Data Type.
Build a user-facing export button
Build a user-facing export button
Go to the Design tab and drag a Button element onto your page. Label it something like 'Download Report'. Switch to the Workflow tab and create a new workflow: When Button Download Report is clicked. Bubble does not natively export CSV from the frontend, so install a CSV export plugin like '1T - CSV Creator' from the plugin marketplace. After installing, add the workflow action: Plugins → Create CSV. Configure the data source as a Do a Search for on your target Data Type, and map each column to the fields you want. The plugin generates a downloadable file.
Pro tip: Add constraints to your search so users only export their own data. Use 'Created By = Current User' as a constraint to respect data ownership.
Expected result: Clicking the button generates and downloads a CSV file containing the searched records.
Enable the Data API for programmatic access
Enable the Data API for programmatic access
Go to Settings in the left sidebar, then click the API tab. Check the box for 'Enable Data API'. Below that, you will see a list of all your Data Types. Check the ones you want to expose via the API. Each checked type becomes accessible at a URL like https://yourapp.bubbleapps.io/api/1.1/obj/datatype. You can use GET requests to retrieve records, with optional constraints passed as URL parameters. Copy your API token from the same page — you will need it in the Authorization header for any API requests.
Pro tip: Never share your API token publicly. Use it only in server-side scripts or backend services, not in client-side code.
Expected result: Your Data Types are accessible via REST API endpoints that return JSON data.
Schedule automated data exports with backend workflows
Schedule automated data exports with backend workflows
Go to Settings → API tab and enable Backend workflows if not already enabled. Navigate to the Workflow tab and click the Pages dropdown at the top, then select Backend workflows. Create a new API workflow named 'scheduled_export'. Inside this workflow, add actions to Do a Search for your target Data Type, then use the API Connector to send this data to an external service like Google Sheets via their API or a webhook endpoint. Create a recurring schedule by adding a 'Schedule API Workflow' action within the backend workflow that re-schedules itself for the next day or week. Include a termination condition to prevent infinite loops.
Expected result: Your backend workflow runs on schedule, exporting fresh data to your chosen external service automatically.
Verify exported data integrity
Verify exported data integrity
After any export, open the CSV or JSON output and verify the record count matches what you see in the Data tab's App data view. Check that all expected fields are present and that special characters exported correctly. For API exports, verify pagination — Bubble's Data API returns a maximum of 100 records per request by default. Use the cursor parameter to paginate through all records. Compare a few specific records between the export and your app to confirm accuracy.
Pro tip: For large datasets, the Data API cursor-based pagination is more reliable than trying to export everything in a single request.
Expected result: Your exported data matches the records in your Bubble database with correct field values and complete record counts.
Complete working example
1DATA EXPORT METHODS SUMMARY2=====================================34METHOD 1: MANUAL CSV EXPORT5 Data tab → App data → Select Data Type6 Click Export → CSV downloads automatically7 Includes all fields, all records8 No Privacy Rules applied (editor-level access)910METHOD 2: USER-FACING EXPORT BUTTON11 Install: 1T - CSV Creator plugin (or similar)12 Design tab → Add Button element13 Workflow: When Button is clicked14 → Plugins → Create CSV15 → Data source: Do a Search for [Data Type]16 → Map columns to fields17 → Constraint: Created By = Current User18 Result: CSV file downloads for the user1920METHOD 3: DATA API21 Settings → API tab → Enable Data API22 Check Data Types to expose23 Endpoint: GET https://app.bubbleapps.io/api/1.1/obj/[type]24 Headers: Authorization: Bearer [API token]25 Pagination: cursor parameter for 100+ records26 Response: JSON with results array2728METHOD 4: SCHEDULED BACKEND EXPORT29 Settings → API tab → Enable Backend workflows30 Backend workflows → New API workflow: scheduled_export31 Actions:32 1. Do a Search for [Data Type]33 2. API Connector → POST to external service34 3. Schedule API Workflow (self) → next run date35 4. Only when: termination condition is not met36 Trigger: Schedule API Workflow from frontend37 → Workflow: scheduled_export38 → Scheduled date: Current date/time + 1 day3940VERIFICATION CHECKLIST:41 Record count matches Data tab42 All fields present in export43 Special characters preserved44 Pagination handled for 100+ records45 Privacy Rules considered for user exportsCommon mistakes when exporting Data from Your Bubble App
Why it's a problem: Forgetting to paginate Data API responses
How to avoid: Use the cursor parameter in subsequent requests to retrieve all records, looping until remaining_count reaches zero
Why it's a problem: Exposing sensitive fields in user-facing exports
How to avoid: Add constraints to your search and map only the specific fields needed in your CSV column configuration
Why it's a problem: Not adding a termination condition to recursive scheduled exports
How to avoid: Add an Only When condition that checks a flag or date limit so the workflow stops re-scheduling when no longer needed
Best practices
- Always verify record counts after export to ensure completeness
- Use constraints on user-facing exports so users only download their own data
- For large datasets, prefer the Data API with pagination over CSV export
- Store API tokens securely and never expose them in frontend code
- Add date filters to scheduled exports to avoid processing the entire database each time
- Test exports with a small dataset first before running on production data
- Document which fields are included in each export for future reference
Still stuck?
Copy one of these prompts to get a personalized, step-by-step explanation.
I need to export all user data from my Bubble.io app as a CSV file. I have about 5,000 records. What is the best method and how do I handle pagination if using the API?
Help me create a workflow that lets users click a button to download their own order history as a CSV file. I want to include order date, product name, quantity, and total price fields.
Frequently asked questions
Can I export data from Bubble's free plan?
Yes. The manual CSV export from the Data tab works on all plans including Free. However, backend workflow scheduling requires a paid plan.
Does the CSV export include deleted records?
No. The Data tab CSV export only includes active records. Deleted records are not recoverable through the export feature.
How many records can I export at once?
The Data tab CSV export has no hard limit but may slow down with very large datasets. The Data API returns 100 records per request, requiring cursor-based pagination for larger exports.
Can I export files and images along with my data?
The CSV export includes file and image URLs as text. You would need a separate process to download the actual files from those URLs.
Is there a way to schedule automatic CSV exports?
Bubble does not have a built-in scheduled CSV export. Use a backend workflow to query your data on a schedule and send it to an external service like Google Sheets or an email attachment.
Can RapidDev help set up automated data exports?
Yes. RapidDev can configure automated export pipelines including scheduled backend workflows, API integrations, and external storage for your Bubble app data.
Do Privacy Rules affect data exports?
Manual CSV exports from the Data tab bypass Privacy Rules since you have editor access. User-facing exports and API exports respect Privacy Rules unless you use a backend workflow with Ignore Privacy Rules enabled.
Talk to an Expert
Our team has built 600+ apps. Get personalized help with your project.
Book a free consultation