Bing Ads to BigQuery: How to Move Your Data
Move Bing Ads into BigQuery with Airbyte. Why a 90 day pause kills the refresh token, choosing report aggregation grain, and filtering accounts by predicate.

Moving Bing Ads into BigQuery lets you compare Microsoft Advertising against your other channels on terms you set rather than terms each platform sets for itself. Microsoft reports the conversions it attributed to Microsoft, and joining spend to your own revenue data is the only way to check that.
This guide covers the managed path with Airbyte. The connector is straightforward to configure and has one operational behaviour that will break your pipeline months later if nobody knows about it, plus a stream naming convention that quietly decides your data volume.
Bing Ads to BigQuery at a glance:
Why move data from Bing Ads to BigQuery?
Two situations account for most of these pipelines.
The first is honest channel comparison. Microsoft Advertising is rarely anybody's largest channel, which is exactly why it gets judged on its own dashboard rather than against everything else. Putting its spend beside Google, Meta and your own revenue data is how you find out whether it deserves more budget or less.
The second is agency or multi-account reporting, where one login covers many advertisers and somebody needs a consolidated view. The account filtering below is built for that case. If you only need this month's campaign performance for one account, the Microsoft interface already shows it.
What do you need before you start?
One item needs a specific role, and one is an operational commitment rather than a setting:
A Microsoft developer token. Requested from the Microsoft Advertising Developer Portal while signed in with Super Admin credentials. An application typically needs one universal token regardless of how many users it supports, so this is a one-time request rather than a per-person task. The Bing Ads source documentation covers the process.
OAuth credentials and a tenant. A client identifier, client secret and refresh token from an application registered in the Azure portal. If your application uses a custom tenant rather than Microsoft's common tenant, supply that in the tenant field, since it forms part of the authentication URL.
A commitment to sync regularly. Microsoft refresh tokens are valid for 90 days, and a connection that goes that long without syncing has to be re-authorised from scratch. That is a real constraint on how you treat a paused pipeline, covered below.
A BigQuery service account and dataset. With the BigQuery User and BigQuery Data Editor roles. Set the dataset location to match your other paid media and revenue datasets, since comparison is the point and BigQuery only joins within a location.
If you manage several advertisers, note the account names predicates setting, which filters accounts by an operator of contains or equals against the account name, and accepts multiple pairs.
How do you build a Bing Ads to BigQuery pipeline in Airbyte?
Step 1: Choose your report grain
Decide whether your analysis needs hourly, daily, weekly or monthly aggregation, because each is a separate stream and selecting several means storing the same spend several times over. Daily is the usual answer, since weekly and monthly can be derived from it while hourly rarely earns its volume.
Step 2: Configure the Bing Ads source
Click Sources in the left navigation, then New Source, and select Bing Ads, following adding a source. On Airbyte Cloud you can authenticate directly; on self-managed, supply the client identifier, client secret, refresh token and developer token, plus the tenant if yours is custom. Add account name predicates here if you are filtering.
Step 3: Configure the BigQuery destination
Click Destinations, then New Destination, and select BigQuery, following adding a destination. Supply the project, dataset and service account key. Batched standard inserts is the default and is adequate, because advertising reports are small by warehouse standards unless you selected hourly aggregation across many accounts.
Step 4: Create the connection and schedule daily
Click Connections, then New connection, select your streams and an incremental sync mode where available. Daily is the right cadence, and it also keeps the connection active, which matters more here than on most sources.
The Bing Ads API applies limits across all Microsoft Advertising clients rather than per account, so a slow sync during a busy period is expected rather than a sign of misconfiguration.
Why does a paused pipeline break permanently?
Because Microsoft refresh tokens are valid for 90 days and rotate each time they are used. Airbyte saves the rotated token whenever it refreshes the access token, so a connection syncing at least once every 90 days stays authenticated indefinitely without anybody thinking about it.
Go longer than 90 days without a sync and the refresh token expires. At that point no amount of retrying helps, because the credential itself is dead: you have to repeat the full authorisation process to obtain a new one, which on self-managed Airbyte means going back through the Azure consent flow.
That changes how you should treat this pipeline. Disabling a connection over a quiet quarter, or pausing during a campaign break, is not free the way it is elsewhere. If Microsoft Advertising is seasonal for you, keep the connection running on a slow schedule rather than switching it off, because a weekly sync costs almost nothing and preserves the credential.
How do the report streams work?
A report's aggregation window is indicated in its name, so the account performance report appears as separate hourly, daily, weekly and monthly streams rather than one stream with a setting. That is unusually explicit and easy to over-select, because ticking all four looks harmless in the catalogue.
It is not harmless. Each stream is a full copy of the same spend at a different grain, so selecting all four quadruples both the sync work and the storage for no analytical gain, since weekly and monthly totals are a sum away from the daily figures you already have.
Take daily and derive the rest in views, unless somebody has a specific need for intraday patterns. If they do, take hourly for the specific report that needs it rather than across the board, because hourly across many accounts is where this dataset stops being small.
Frequently asked questions
My connection stopped working after a long pause. Why?
The Microsoft refresh token expired. They are valid for 90 days, so a connection that does not sync within that window needs the full authorisation process repeated to get a new one.
Do I need to rotate the refresh token myself?
No. Tokens rotate on each use and Airbyte saves the rotated one automatically, so a regularly syncing connection stays authenticated without intervention.
Who can get a developer token?
Somebody with Super Admin credentials, via the Microsoft Advertising Developer Portal. An application typically needs one universal token regardless of how many users it supports.
Should I select hourly, daily, weekly and monthly reports?
No. Each is a separate copy of the same spend at a different grain. Take daily and derive weekly and monthly in views, adding hourly only where intraday analysis genuinely requires it.
Can I do this without writing code?
Yes. The setup above is entirely UI-driven. You will want BigQuery views joining spend to your revenue data and to your other advertising channels.
Get your Bing Ads data into BigQuery
Take daily reports and derive the other grains, filter accounts by predicate if you manage several, and keep the connection syncing even during quiet periods, because a refresh token that lapses past 90 days cannot be recovered without going through authorisation again.
Airbyte's connector catalog includes 600+ pre-built connectors, so paid search can sit beside the other channels you compare it against. For the largest of those, see Google Ads to Snowflake, and for paid social, Facebook Ads to Snowflake.
Integrate with 700+ apps using Airbyte
Move data from 700+ sources into warehouses, lakes, and beyond. Set up pipelines in minutes with pre-built connectors and the Connector Builder.
