LinkedIn Ads
Advertising
LinkedIn Ads data, published as LinkedIn Ads publishes it. Ingest delivers this data to a data warehouse you own as 4 tables, and updates it on the schedule you choose. There is no code to write and nothing to install.
What you get
| Table | Each row is |
|---|---|
ad_accountsad_accounts | Every ad account the signed-in member can reach, from the LinkedIn Ads "search for accounts" finder. This is the anchor of the connector: the account ids it yields are what the campaign group, campaign and creative resources are fetched against, so nobody has to paste an account id. Re-read in full on every run, which is what picks up newly created accounts. |
campaign_groupscampaign_groups | Campaign groups in each ad account (transformer child of ad_accounts). One request per account discovered on the parent resource; the account id comes from the parent's own record. The audit-stamp times are LinkedIn's native Unix epoch MILLISECONDS, kept as bigint and not cast to a timestamp. |
campaignscampaigns | Campaigns in each ad account (transformer child of ad_accounts). One request per account discovered on the parent resource. `runSchedule.start` and the audit-stamp times are LinkedIn's native Unix epoch MILLISECONDS, kept as bigint; the targeting criteria and offsite preferences are kept as JSON because their shape varies per campaign. |
creativescreatives | Creatives in each ad account (transformer child of ad_accounts), from the "criteria" finder. One request per account discovered on the parent resource. The primary key is LinkedIn's own creative URN, which is globally unique. `createdAt` and `lastModifiedAt` are Unix epoch MILLISECONDS, kept as bigint; the review block and serving hold reasons are kept as JSON. |
How it works
- Choose LinkedIn Ads. Connect your LinkedIn Ads account once, from Ingest.
- Pick where it goes. BigQuery, Snowflake, Databricks, Redshift and 10 more, in an account you own.
- Pick a schedule. Daily is the default, and weekly and monthly are there too.
- Ingest runs it from then on. If a run fails, your dashboard shows which table and why.
Questions
- Do I need an account with LinkedIn Ads?
- Yes. You connect your own LinkedIn Ads account once, from Ingest, and the data comes from what that account can see.
- Which warehouses can LinkedIn Ads data go to?
- Amazon S3, Google Cloud Storage, Azure Blob Storage, Apache Iceberg, Ingest Managed Lakehouse, MotherDuck, Postgres, Amazon Athena, Databricks, Redshift, BigQuery, ClickHouse, MySQL / generic SQL and Snowflake, in an account you own.
- How fresh is the data?
- As fresh as your schedule: daily by default, or weekly or monthly. Schedules as often as every 15 minutes are on the Enterprise plan.
- Will running it again create duplicate rows?
- No. Each row is stored once, by its key: when a run reads a row that is already there, it replaces that copy instead of adding a second one.
- Do I need to write code?
- No. Ingest builds, runs and maintains the connector. Someone with access to your warehouse connects it once, following a short guide.
For your data team: technical reference
Connector linkedin_ads, version 0.1.0, a REST source, status beta, authentication oauth2.
Vendor documentation: https://learn.microsoft.com/en-us/linkedin/marketing/integrations/ads/getting-started
Configuration
No configuration required.
Resources
| Resource | Status | Plan | Write | Primary key | Overrides |
|---|---|---|---|---|---|
ad_accountsEvery ad account the signed-in member can reach, from the LinkedIn Ads "search for accounts" finder. This is the anchor of the connector: the account ids it yields are what the campaign group, campaign and creative resources are fetched against, so nobody has to paste an account id. Re-read in full on every run, which is what picks up newly created accounts. | beta | full | merge | id | - |
campaign_groupsCampaign groups in each ad account (transformer child of ad_accounts). One request per account discovered on the parent resource; the account id comes from the parent's own record. The audit-stamp times are LinkedIn's native Unix epoch MILLISECONDS, kept as bigint and not cast to a timestamp. | beta | parent_child | merge | id | - |
campaignsCampaigns in each ad account (transformer child of ad_accounts). One request per account discovered on the parent resource. `runSchedule.start` and the audit-stamp times are LinkedIn's native Unix epoch MILLISECONDS, kept as bigint; the targeting criteria and offsite preferences are kept as JSON because their shape varies per campaign. | beta | parent_child | merge | id | - |
creativesCreatives in each ad account (transformer child of ad_accounts), from the "criteria" finder. One request per account discovered on the parent resource. The primary key is LinkedIn's own creative URN, which is globally unique. `createdAt` and `lastModifiedAt` are Unix epoch MILLISECONDS, kept as bigint; the review block and serving hold reasons are kept as JSON. | beta | parent_child | merge | id | - |
Where this lands, and what else connects
Setting up the destination is its own short guide, one per warehouse or lake: Amazon S3, Google Cloud Storage, Azure Blob Storage, Apache Iceberg, Ingest Managed Lakehouse, MotherDuck, Postgres, Amazon Athena, Databricks, Redshift, BigQuery, ClickHouse, MySQL / generic SQL, Snowflake.
Get LinkedIn Ads data into your warehouse
Last updated .