Bubble Sync avatar
Bubble Sync

Pricing

Pay per event

Go to Apify Store
Bubble Sync

Bubble Sync

Developed by

Hpix

Hpix

Maintained by Community

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) or upsert (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 and bubble_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 fieldBubble field

  • nameproduct_name
  • priceproduct_price
  • descriptionproduct_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

  1. Use the Instagram Reels Scraper, or any other social media scraper
  2. Open the Integrations tab and add a new integration
  3. Search for the Bubble Sync Actor and provide the required parameters
  4. 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