Apple Ads (Apple Search Ads)
This page contains the setup guide and reference information for the Apple Ads source connector.
Prerequisites
- An Apple Ads account with an administrator who can invite users with API permissions.
- Your Apple Ads organization id (
orgId), shown in the Apple Ads UI. Each Airbyte source syncs data for a singleorgId. - An OAuth client id and client secret generated for an API user (see Step 1 below).
Setup guide
Step 1: Create an API user and OAuth credentials in Apple Ads
The connector authenticates to the Apple Ads Campaign Management API using OAuth 2 client credentials. An account administrator creates an API user, generates a key pair, and produces a client id and client secret. Apple's full guide is at Implementing OAuth for the Apple Ads API. The high-level steps are:
- From Apple Ads, sign in as an account administrator and go to Account Settings → User Management.
- Click Invite Users and assign the user an API user role.
- Generate a private and public key pair, upload the public key for the API user, and create a client secret.
- Note the resulting Client ID and Client Secret. You'll enter them into Airbyte in Step 2.
Step 2: Set up the source connector in Airbyte
- In Airbyte, click Sources and then click + New source.
- Select Apple Ads from the Source type dropdown and enter a name for the source.
- For Org Id, enter the
orgIdof your Apple Ads organization (found in the Apple Ads UI). - Enter the Client ID and Client Secret from Step 1.
- For Start Date and End Date, enter dates in
YYYY-MM-DDformat. If End Date is blank, Airbyte syncs up to today. Apple's reporting API limits how far back daily data is available; requests for dates outside the supported window return no data. - For Time Zone, select either
UTC(Coordinated Universal Time) orORTZ(Organization Time Zone). The default isUTC. - For Lookback Window, enter a value between 1 and 30. Apple Ads applies a 30-day attribution window, so the default of 30 ensures late-attributed conversions are captured on each incremental sync. Lower values shorten incremental syncs but may miss late attributions.
- For Exponential Backoff Factor, enter a value between 1 and 20. This controls how aggressively the connector backs off when Apple's API returns rate-limit (
429) or server (500) errors. The default is 5; increase it for very large accounts that frequently hit rate limits. - (Optional) For Number of Workers, enter a value between 1 and 20 (default
2). This controls how many partitions (campaigns or ad groups) the connector fetches in parallel. Increase it for accounts with many campaigns or ad groups to shorten sync time, at the cost of higher API request volume. - (Optional) For Token Refresh Endpoint, override the default Apple OAuth token endpoint. Use this only if you proxy outbound requests; most users should leave it at the default.
- Click Set up source.
Supported sync modes
The Apple Ads source connector supports the following sync modes:
Supported streams
The Apple Ads source connector exposes the following streams. For full schema and field details, see the Apple Ads API reference.
Object streams
campaigns— all campaigns in the organization.adgroups— ad groups across all campaigns.keywords— targeting keywords across all ad groups.ads— ads across all ad groups.
Daily report streams
The connector requests daily reports from Apple's Reports API, grouped by countryOrRegion. Apple supports hourly, daily, weekly, and monthly granularity, but this connector only requests daily.
campaigns_report_daily— campaign-level daily metrics.adgroups_report_daily— ad-group-level daily metrics.keywords_report_daily— keyword-level daily metrics.ads_report_daily— ad-level daily metrics.
Report streams use date as the cursor field and default to (date, campaignId) as the primary key. Because each row is also broken out by countryOrRegion, the connector exposes a separate countryorregion field. If your account targets multiple countries or regions, add countryorregion to the primary key in the connection's stream settings to deduplicate correctly.
Performance considerations
- Apple's API enforces rate limits and recommends exponential retry. The connector automatically retries
429and500responses; tune the Exponential Backoff Factor to control how aggressively it backs off. - For accounts with many campaigns or ad groups, increase Number of Workers to fetch partitions in parallel and reduce sync time.
- Apple Ads applies a 30-day attribution window. Reducing Lookback Window below 30 days shortens incremental syncs but may miss late conversions.
Reference
Config fields reference
Changelog
Expand to review
| Version | Date | Pull Request | Subject |
|---|---|---|---|
| 1.1.3 | 2026-05-05 | 76973 | Fix ads_report_daily broken incremental sync, remove incorrect keyword error predicate, and enable concurrent partition processing to reduce heartbeat timeouts |
| 1.1.2 | 2026-04-28 | 77141 | Update dependencies |
| 1.1.1 | 2026-04-21 | 76507 | Update dependencies |
| 1.1.0 | 2026-04-01 | 69218 | Add two new streams - ads & ads_report_daily |
| 1.0.11 | 2026-03-31 | 75879 | Update dependencies |
| 1.0.10 | 2026-03-24 | 75015 | Update dependencies |
| 1.0.9 | 2026-03-10 | 74512 | Update dependencies |
| 1.0.8 | 2026-03-03 | 74180 | Update dependencies |
| 1.0.7 | 2026-02-03 | 72690 | Update dependencies |
| 1.0.6 | 2026-01-20 | 71888 | Update dependencies |
| 1.0.5 | 2026-01-14 | 71435 | Update dependencies |
| 1.0.4 | 2025-12-18 | 70810 | Update dependencies |
| 1.0.3 | 2025-11-25 | 69891 | Update dependencies |
| 1.0.2 | 2025-11-18 | 69577 | Update dependencies |
| 1.0.1 | 2025-10-29 | 68392 | Update dependencies |
| 1.0.0 | 2025-10-21 | 66557 | Update adgroups_report_daily and keywords_report_daily to use global state cursor |
| 0.8.10 | 2025-10-14 | 67979 | Update dependencies |
| 0.8.9 | 2025-10-07 | 67173 | Update dependencies |
| 0.8.8 | 2025-09-30 | 66272 | Update dependencies |
| 0.8.7 | 2025-09-12 | TBD | Update to CDK v7 |
| 0.8.6 | 2025-08-23 | 65312 | Update dependencies |
| 0.8.5 | 2025-08-09 | 64663 | Update dependencies |
| 0.8.4 | 2025-07-19 | 63453 | Update dependencies |
| 0.8.3 | 2025-07-12 | 63087 | Update dependencies |
| 0.8.2 | 2025-06-15 | 61626 | Update dependencies |
| 0.8.1 | 2025-05-17 | 60627 | Update dependencies |
| 0.8.0 | 2025-05-13 | 60241 | Add token refresh endpoint override configuration override |
| 0.7.9 | 2025-05-10 | 59888 | Update dependencies |
| 0.7.8 | 2025-05-03 | 59308 | Update dependencies |
| 0.7.7 | 2025-04-26 | 58712 | Update dependencies |
| 0.7.6 | 2025-04-19 | 58275 | Update dependencies |
| 0.7.5 | 2025-04-12 | 57658 | Update dependencies |
| 0.7.4 | 2025-04-05 | 57158 | Update dependencies |
| 0.7.3 | 2025-03-29 | 56573 | Update dependencies |
| 0.7.2 | 2025-03-25 | 56383 | add countryorregion to report schemas |
| 0.7.1 | 2025-03-22 | 56109 | Update dependencies |
| 0.7.0 | 2025-03-20 | 55839 | countryOrRegion metadata info included |
| 0.6.0 | 2025-03-20 | 55785 | Add timezone config parameter |
| 0.5.1 | 2025-03-08 | 55366 | Update dependencies |
| 0.5.0 | 2025-03-05 | 55210 | Remove primary keys |
| 0.4.3 | 2025-03-01 | 54873 | Update dependencies |
| 0.4.2 | 2025-02-24 | 54646 | Fix paginator settings for incremental report streams |
| 0.4.1 | 2025-02-22 | 54284 | Update dependencies |
| 0.4.0 | 2025-02-20 | 54170 | Externalize backoff factor and lookback window configurations |
| 0.3.3 | 2025-02-15 | 53920 | Update dependencies |
| 0.3.2 | 2025-02-14 | 53685 | Fix granularity to daily |
| 0.3.1 | 2025-02-08 | 53422 | Update dependencies |
| 0.3.0 | 2025-02-03 | 53136 | Update API version to V5 |
| 0.2.9 | 2025-02-01 | 52899 | Update dependencies |
| 0.2.8 | 2025-01-25 | 52197 | Update dependencies |
| 0.2.7 | 2025-01-18 | 51745 | Update dependencies |
| 0.2.6 | 2025-01-11 | 51249 | Update dependencies |
| 0.2.5 | 2024-12-28 | 50469 | Update dependencies |
| 0.2.4 | 2024-12-21 | 50155 | Update dependencies |
| 0.2.3 | 2024-12-14 | 49561 | Update dependencies |
| 0.2.2 | 2024-12-12 | 47751 | Update dependencies |
| 0.2.1 | 2024-11-08 | 48440 | Set authentication grant_type to client_credentials |
| 0.2.0 | 2024-10-01 | 46288 | Migrate to Manifest-only |
| 0.1.20 | 2024-09-28 | 46153 | Update dependencies |
| 0.1.19 | 2024-09-21 | 45803 | Update dependencies |
| 0.1.18 | 2024-09-14 | 45474 | Update dependencies |
| 0.1.17 | 2024-09-07 | 45326 | Update dependencies |
| 0.1.16 | 2024-08-31 | 45013 | Update dependencies |
| 0.1.15 | 2024-08-24 | 44654 | Update dependencies |
| 0.1.14 | 2024-08-17 | 44322 | Update dependencies |
| 0.1.13 | 2024-08-12 | 43912 | Update dependencies |
| 0.1.12 | 2024-08-10 | 43514 | Update dependencies |
| 0.1.11 | 2024-08-03 | 43195 | Update dependencies |
| 0.1.10 | 2024-07-27 | 42660 | Update dependencies |
| 0.1.9 | 2024-07-20 | 42225 | Update dependencies |
| 0.1.8 | 2024-07-13 | 41722 | Update dependencies |
| 0.1.7 | 2024-07-10 | 41546 | Update dependencies |
| 0.1.6 | 2024-07-09 | 40832 | Update dependencies |
| 0.1.5 | 2024-06-25 | 40364 | Update dependencies |
| 0.1.4 | 2024-06-22 | 40186 | Update dependencies |
| 0.1.3 | 2024-06-04 | 38967 | [autopull] Upgrade base image to v1.2.1 |
| 0.1.2 | 2024-05-21 | 38502 | [autopull] base image + poetry + up_to_date |
| 0.1.1 | 2023-07-11 | 28153 | Fix manifest duplicate key (no change in behavior for the syncs) |
| 0.1.0 | 2022-11-17 | 19557 | Initial release with campaigns, adgroups & keywords streams (base and daily reports) |