Built on asa-api-client 0.2.1 (full Apple Search Ads API v5 coverage). This release adds AI-assisted optimization and surfaces the complete reachable v5 resource set as CLI commands.
✨ New features
AI-powered optimization
asa optimize negatives— pull search-term reports across campaigns, classify relevance with an AI model (Anthropic or Gemini via PydanticAI), and optionally apply suggestions as campaign-level negative keywords. Supports filtering, CSV export, and--dry-run.
New v5 lookup & reference commands
asa apps search— find advertisable apps and theiradamIdasa geo search— find geo locations for targetingasa countries list— supported countries and ad languages
Creative & catalog commands
asa ads list/get/create/update/delete— view and manage ads (creatives) within ad groupsasa product-pages list/get/locales— custom product pages (CPP) and their per-locale details
Account & billing commands
asa budget-orders list/get— view budget ordersasa auth orgs— list organizations your credentials can access
🐛 Fixes
asa --versionnow derives both the CLI andasa-api-clientversions from package metadata, so it stays accurate without manual updates.- Adapted report metric fields to the v5 API (
installs→tap_installs,conversion_rate→tap_install_rate,avg_cpa→total_avg_cpi).
⬆️ Dependencies
- Adopted
asa-api-client0.2.1 (from 0.1.6). - Upgraded
pydantic-aito 1.99 and refreshed transitive dependencies (aiohttp, cryptography, urllib3, requests, authlib, pyjwt, idna, and others).
Notes
- Ad creation validates the creative-type/product-page pairing client-side;
CREATIVE_SETis not yet supported (asset selection). Use--dry-runto preview create payloads. - The generic Custom Reports endpoint is intentionally not surfaced — Apple disabled
GET /custom-reports(403) in March 2026 in favour of Insights; the impression-share POST/poll flow remains available viaasa impression-share.
Full changelog: v0.2.0...v0.3.0