Skip to content

Quick Start

Basic Usage

from asa_api_client import AppleSearchAdsClient

# Create client from environment variables
client = AppleSearchAdsClient.from_env()

# Use as context manager (recommended)
with client:
    # List campaigns
    campaigns = client.campaigns.list()

    for campaign in campaigns:
        print(f"{campaign.id}: {campaign.name} ({campaign.status})")

Filtering Results

Use the Selector class to filter results:

from asa_api_client.models import Selector

with client:
    # Find enabled campaigns
    selector = Selector().where("status", "==", "ENABLED")
    enabled = client.campaigns.find(selector)

    # Multiple conditions
    selector = (
        Selector()
        .where("status", "==", "ENABLED")
        .where("countriesOrRegions", "CONTAINS_ANY", ["US", "GB"])
    )
    campaigns = client.campaigns.find(selector)

Pagination

For large result sets, use iteration:

with client:
    # Automatic pagination
    for campaign in client.campaigns.iter_all():
        print(campaign.name)

Resource Hierarchy

Access nested resources through their parents:

with client:
    # Get ad groups for a campaign
    ad_groups = client.campaigns(campaign_id).ad_groups.list()

    # Get keywords for an ad group
    keywords = client.campaigns(campaign_id).ad_groups(ad_group_id).keywords.list()

Error Handling

from asa_api_client import (
    AppleSearchAdsError,
    AuthenticationError,
    NotFoundError,
    RateLimitError,
)

with client:
    try:
        campaign = client.campaigns.get(123)
    except NotFoundError:
        print("Campaign not found")
    except RateLimitError as e:
        print(f"Rate limited, retry after {e.retry_after}")
    except AuthenticationError:
        print("Invalid credentials")
    except AppleSearchAdsError as e:
        print(f"API error: {e}")