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.0.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.0-py3-none-any.whl (27.4 kB view details)

Uploaded Python 3

File details

Details for the file facebook_ads_reports-0.9.0.tar.gz.

File metadata

  • Download URL: facebook_ads_reports-0.9.0.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.0.tar.gz
Algorithm Hash digest
SHA256 7e7088fc3aa574f8178d835d10c0b8db664729afe7f3a876b4e616e916c8f9fc
MD5 553473c5cd3f01a140bbdcbce0450d0f
BLAKE2b-256 d3986afe8e8d94008dcc26422eebf213f879ec3005c8e452368fc18eaba021ad

See more details on using hashes here.

File details

Details for the file facebook_ads_reports-0.9.0-py3-none-any.whl.

File metadata

  • Download URL: facebook_ads_reports-0.9.0-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.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5626c26d9df3e06b9ba048914f6271ee9b3d884857fd6a0fd27a23bab5df0b8b
MD5 bd271b0878d3ed426da8cdf3663c5635
BLAKE2b-256 ed2ef197706f5206fbd8c812d885475bcb77f1a16fd58c7583693c33ad1928d6

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