ETL module for Facebook Ads API v22 with database-optimized DataFrame processing
Project description
Facebook Ads Reports Helper
A Python ETL driver for Facebook Marketing API v22 data extraction and transformation. Simplifies the process of extracting Facebook Ads data and converting it to database-ready pandas DataFrames with comprehensive optimization features.
Features
- Facebook Marketing API v22: Latest API version support with full compatibility
- Robust Error Handling: Comprehensive error handling with retry logic and specific exceptions
- Multiple Report Types: Pre-configured report models for common use cases
- Custom Reports: Create custom report configurations
- Database-Ready DataFrames: Optimized data types and encoding for seamless database storage
- Smart Type Detection: Dynamic conversion of metrics to appropriate int64/float64 types
- Configurable Missing Values: Granular control over NaN/NaT handling by column type
- Character Encoding Cleanup: Automatic text sanitization for database compatibility
- Zero Impression Filtering: Robust filtering handling multiple zero representations
- Type Hints: Full type hint support for better IDE experience
Installation
pip install facebook-ads-reports
Quick Start
1. Set up credentials
Create a secrets/fb_business_config.json file with your Facebook Ads API credentials:
{
"app_id": "YOUR_APP_ID",
"access_token": "YOUR_ACCESS_TOKEN",
"base_url": "https://graph.facebook.com/v22.0"
"ad_account_id": "act_1234567890",
}
2. Basic usage
from datetime import date, timedelta
from facebook_ads_reports import MetaAdsReport, MetaAdsReportModel, load_credentials
# Load credentials
credentials = load_credentials()
client = MetaAdsReport(credentials)
# Configure report parameters
ad_account_id = "act_1234567890"
start_date = date.today() - timedelta(days=7)
end_date = date.today() - timedelta(days=1)
# Extract report data with database optimization
df = client.get_insights_report(
ad_account_id=ad_account_id,
report_model=MetaAdsReportModel.ad_performance_report,
start_date=start_date,
end_date=end_date
)
# Save to CSV
df.to_csv("ad_performance_report.csv", index=False)
Available Report Models
MetaAdsReportModel.ad_dimensions_report- Ad dimensions and metadataMetaAdsReportModel.ad_performance_report- Ad performance and actions metrics
Custom Reports
Create custom report configurations:
from facebook_ads_reports import create_custom_report
custom_report = create_custom_report(
report_name="my_custom_report",
select=["ad_id", "impressions", "spend"],
from_table="ad_insights"
)
# Usage:
# df = client.get_insights_report(ad_account_id, custom_report, start_date, end_date)
Database Optimization Features
- Automatic Date Conversion: String dates →
datetime64[ns] - Dynamic Metrics Conversion: Object metrics →
int64orfloat64based on data - Preserve NULL Compatibility: NaN/NaT preserved for database NULL mapping
- Safe Conversion: Invalid values gracefully ignored
- ASCII Sanitization: Removes non-ASCII characters for database compatibility
- Length Limiting: Truncates text to 255 characters (configurable)
- Whitespace Trimming: Removes leading/trailing whitespace
Examples
Check the examples/ directory for comprehensive usage examples:
basic_usage.py- Simple report extraction
Requirements
- Python 3.10-3.12
- pandas >= 2.0.0
- python-dotenv >= 1.0.0
- requests >= 2.32.4
- tqdm >= 4.65.0
License
MIT License. See LICENSE file for details.
Support
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file facebook_ads_reports-0.9.1.tar.gz.
File metadata
- Download URL: facebook_ads_reports-0.9.1.tar.gz
- Upload date:
- Size: 26.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.3 CPython/3.12.3 Linux/5.15.167.4-microsoft-standard-WSL2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a6ac96223b2724c44becb9277955a5bbb34c25883f56296bb65ee475908fce6b
|
|
| MD5 |
1736b55c65a784e22ea8ee8cdc96c7a4
|
|
| BLAKE2b-256 |
5e8c1238bffd1dd892ec4cb6d8078d7124a26c33851802e09d5ee1dca5e491ba
|
File details
Details for the file facebook_ads_reports-0.9.1-py3-none-any.whl.
File metadata
- Download URL: facebook_ads_reports-0.9.1-py3-none-any.whl
- Upload date:
- Size: 27.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.3 CPython/3.12.3 Linux/5.15.167.4-microsoft-standard-WSL2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
07ec2a6dbd38bd3f8422804d00b7d75c206f608cb0e5a3693198411fef9f333e
|
|
| MD5 |
d5839cd360095d4a38bd7179278aaa38
|
|
| BLAKE2b-256 |
68b2dd916e5498aa45e7095c8e3a938bfeb85ba63a5d4676f50b637bb07aa642
|