
Bubble Sync
Pricing
Pay per event

Bubble Sync
Seamlessly sync data from Apify datasets to Bubble.io databases with flexible field mapping and upsert/append modes.
0.0 (0)
Pricing
Pay per event
0
1
1
Last modified
3 days ago
ℹ️ About
An integration Actor for seamlessly syncing data from Apify runs to Bubble.io databases. Perfect for integrating web scraping results directly into your Bubble applications with flexible field mapping and two different sync modes.
✨ Features
- Two sync modes: Append new records or upsert (update/insert) existing ones
- Field mapping: Transform field names from your Apify dataset to match Bubble table schema
- Batch processing: Efficiently handles large datasets
- Flexible matching: Configure custom ID fields for record matching during upserts
⚙️ Inputs
Required Parameters
- bubble_api_token: Your private API token from Bubble app settings (see the tutorial here)
- bubble_base_url: Base URL to your Bubble Data API (e.g.,
https://myapp.bubbleapps.io
) - bubble_table: Name of the table in your Bubble app to sync to (e.g.
Products
) - sync_mode: Choose between
append
(add new records) orupsert
(update existing/create new) - datasetId: Apify dataset ID to sync from (set automatically when running as an integration)
Optional Parameters
- dataset_id_field: Field name in your Apify dataset used for matching records (required for upsert mode)
- bubble_id_field: Field name in your Bubble table to match against (required for upsert mode)
- field_mappings: Array of key-value pairs to map field names from dataset to Bubble table
Example Input
{"bubble_api_token": "your_secret_token_here","bubble_base_url": "https://myapp.bubbleapps.io","bubble_table": "Products","sync_mode": "upsert","dataset_id_field": "product_id","bubble_id_field": "external_id","field_mappings": [{"key": "name","value": "product_name"},{"key": "price","value": "product_price"}],"datasetId": "your_dataset_id_here"}
🔄 Sync Modes
Append Mode
- Purpose: Add new records to your Bubble table
- Use case: When you want to continuously add new data without checking for duplicates
- Requirements: Only basic connection parameters needed
Upsert Mode
- Purpose: Update existing records or create new ones based on matching criteria
- Use case: When you want to keep your Bubble data in sync and avoid duplicates
- Requirements: Must specify both
dataset_id_field
andbubble_id_field
for record matching
🗺️ Field Mapping
Field mapping allows you to transform field names from your Apify dataset to match your Bubble table structure:
Dataset field → Bubble field
name
→product_name
price
→product_price
description
→product_desc
If no mapping is provided for a field, it will be sent with its original name.
📝 Use Cases
- Social Media Analytics: Import scraped social media posts, engagement metrics, and user data for analytics and
- Lead Generation: Import scraped contact information to your CRM
- E-commerce: Sync scraped product data to your Bubble store
- Content Management: Sync scraped articles or posts to your content database
- Market Research: Import competitor data or market analysis results
- Real Estate: Sync property listings from various sources
💡 Tips
- Use append mode for time-series data or when duplicates are acceptable
- Use upsert mode for maintaining clean, deduplicated datasets
- Test with a small dataset first to verify field mappings work correctly
⚠️ Important Notes
- API Limits: Bubble.io has rate limits on their API. The Actor includes batching to help manage this
- Field Types: Ensure your Apify dataset field types match your Bubble table schema
- Required Fields: Make sure all required fields in your Bubble table are present in the dataset or mapped correctly
📃 Changelog
Got a feature suggestion? Create an issue and let me know!
v0.0.1
- Initial release
❓ FAQ
Can I sync multiple datasets to the same Bubble table?
Yes! You can run the Actor multiple times with different dataset IDs. Use upsert mode to avoid duplicates.
What happens if a field mapping is incorrect?
The Actor will attempt to send the data to Bubble. If Bubble rejects it due to field name issues, you'll see an error in the logs.
Can I sync to multiple Bubble tables at once?
Currently, each run syncs to one table. To sync to multiple tables, run the Actor multiple times with different bubble_table
values.
🔗 Integration Examples
Scraping Reels from Instagram
- Use the Instagram Reels Scraper, or any other social media scraper
- Open the Integrations tab and add a new integration
- Search for the Bubble Sync Actor and provide the required parameters
- Run the scraper Actor, and you'll see the results in your Bubble table!
You can check out Apify's official documentation here.
🛠️ Troubleshooting
Common Issues
- "dataset_id_field must be provided when sync_mode is upsert": Make sure to specify the ID field when using upsert mode
- "bubble_id_field must be provided when sync_mode is upsert": Specify the matching field in your Bubble table
- Authentication errors: Verify your API token and ensure it has the correct permissions
- Field not found: Check that your field mappings match your Bubble table structure
👀 See Also
- Bubble.io API Documentation
- TikTok Scraper: An efficient crawler for scraping TikTok Profiles and their videos.
- Instagram Reels Scraper: An efficient crawler for scraping Instagram Reels and Posts.
On this page
Share Actor: