Skip to main content

ETL module for Facebook Ads API v23 with lightweight native Python data processing

Project description

Facebook Ads Reports Helper

A Python ETL driver for Facebook Marketing API v23 data extraction and transformation. Simplifies the process of extracting Facebook Ads data and converting it to structured data formats with comprehensive utility functions.

PyPI version Last Commit Issues License

Features

  • Facebook Marketing API v23: 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
  • Flexible Data Export: Built-in CSV and JSON export utilities
  • Lightweight Architecture: No pandas dependency for faster installations and smaller footprint
  • Type Hints: Full type hint support with strict mypy compliance for better IDE experience
  • Data Processing Utilities: Helper functions for data transformation and export

Installation

pip install facebook-ads-reports

Quick Start

1. Set up credentials

Option A: Configuration file

Create a secrets/fb_business_config.json file with your Facebook Ads API credentials:

{
  "app_id": "YOUR_APP_ID",
  "app_secret": "YOUR_APP_SECRET",
  "access_token": "YOUR_ACCESS_TOKEN",
  "ad_account_id": "act_1234567890",
  "base_url": "https://graph.facebook.com/v23.0"
}

Option B: Environment variable

Set the FACEBOOK_ADS_CONFIG_JSON environment variable with your credentials as JSON:

export FACEBOOK_ADS_CONFIG_JSON='{"app_id": "YOUR_APP_ID", "app_secret": "YOUR_APP_SECRET", "access_token": "YOUR_ACCESS_TOKEN", "ad_account_id": "act_1234567890", "base_url": "https://graph.facebook.com/v23.0"}'

2. Basic usage

from datetime import date, timedelta
from facebook_ads_reports import MetaAdsReport, MetaAdsReportModel
from facebook_ads_reports.utils import load_credentials, save_report_to_csv, save_report_to_json

# Load credentials
credentials = load_credentials()
client = MetaAdsReport(credentials_dict=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
data = 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 using utility function
save_report_to_csv(data, "ad_performance_report.csv")

# Save to JSON using utility function
save_report_to_json(data, "ad_performance_report.json")

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:
# data = client.get_insights_report(ad_account_id, custom_report, start_date, end_date)

Examples

Check the examples/ directory for comprehensive usage examples:

  • basic_usage.py - Simple report extraction

Requirements

  • Python 3.10-3.12
  • requests >= 2.32.4

License

GPL 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-2.0.0.tar.gz (25.2 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-2.0.0-py3-none-any.whl (26.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: facebook_ads_reports-2.0.0.tar.gz
  • Upload date:
  • Size: 25.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.4 CPython/3.12.3 Linux/5.15.167.4-microsoft-standard-WSL2

File hashes

Hashes for facebook_ads_reports-2.0.0.tar.gz
Algorithm Hash digest
SHA256 b0cc525891134f21c79f330ed05632cc28d53b92a37f01e081cd1e81d888f6db
MD5 2f2999df407580885f7987784edb7283
BLAKE2b-256 d68a983f23ba07945f90eb2b946aeae2832932906dde398a2eb118e8859ab4a4

See more details on using hashes here.

File details

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

File metadata

  • Download URL: facebook_ads_reports-2.0.0-py3-none-any.whl
  • Upload date:
  • Size: 26.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.4 CPython/3.12.3 Linux/5.15.167.4-microsoft-standard-WSL2

File hashes

Hashes for facebook_ads_reports-2.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 fa96053551235af684cf4333b4bfb89cd8a9476651a4d639cec692e1c8f2ec8c
MD5 b10871d65c2d9d657b4c3bdc92c3b95c
BLAKE2b-256 c13c3dd6046ae7d0dc467ad219bbe58de0c7b9b42262c62fba51f915cb2dbe1c

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