Skip to main content

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.

PyPI version Last Commit Issues License

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 metadata
  • MetaAdsReportModel.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 → int64 or float64 based 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

facebook_ads_reports-0.9.1.tar.gz (26.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

facebook_ads_reports-0.9.1-py3-none-any.whl (27.4 kB view details)

Uploaded Python 3

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

Hashes for facebook_ads_reports-0.9.1.tar.gz
Algorithm Hash digest
SHA256 a6ac96223b2724c44becb9277955a5bbb34c25883f56296bb65ee475908fce6b
MD5 1736b55c65a784e22ea8ee8cdc96c7a4
BLAKE2b-256 5e8c1238bffd1dd892ec4cb6d8078d7124a26c33851802e09d5ee1dca5e491ba

See more details on using hashes here.

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

Hashes for facebook_ads_reports-0.9.1-py3-none-any.whl
Algorithm Hash digest
SHA256 07ec2a6dbd38bd3f8422804d00b7d75c206f608cb0e5a3693198411fef9f333e
MD5 d5839cd360095d4a38bd7179278aaa38
BLAKE2b-256 68b2dd916e5498aa45e7095c8e3a938bfeb85ba63a5d4676f50b637bb07aa642

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page