LinkedIn Ads

tap-linkedin-ads from singer-io

LinkedIn Ad Platform

The tap-linkedin-ads extractor pulls data from LinkedIn Ads that can then be sent to a destination using a loader.

Available Variants

Getting Started


If you haven't already, follow the initial steps of the Getting Started guide:

  1. Install Meltano
  2. Create your Meltano project

Installation and configuration

  1. Add the tap-linkedin-ads extractor to your project using
    meltano add
  2. meltano add extractor tap-linkedin-ads
  3. Configure the tap-linkedin-ads settings using
    meltano config
  4. meltano config tap-linkedin-ads set --interactive
  5. Test that extractor settings are valid using
    meltano config
  6. meltano config tap-linkedin-ads test

Next steps

If you run into any issues, learn how to get help.


The current capabilities for tap-linkedin-ads may have been automatically set when originally added to the Hub. Please review the capabilities when using this extractor. If you find they are out of date, please consider updating them by making a pull request to the YAML file that defines the capabilities for this extractor.

This plugin has the following capabilities:

  • catalog
  • discover
  • state

You can override these capabilities or specify additional ones in your meltano.yml by adding the capabilities key.


The tap-linkedin-ads settings that are known to Meltano are documented below. To quickly find the setting you're looking for, click on any setting name from the list:

You can override these settings or specify additional ones in your meltano.yml by adding the settings key.

Please consider adding any settings you have defined locally to this definition on MeltanoHub by making a pull request to the YAML file that defines the settings for this plugin.

Accounts (accounts)

  • Environment variable: TAP_LINKEDIN_ADS_ACCOUNTS

A comma separated list of account IDs, e.g. "id1, id2, id3"

Client ID (client_id)

  • Environment variable: TAP_LINKEDIN_ADS_CLIENT_ID

The API client ID.

Date Window Size (date_window_size)

  • Environment variable: TAP_LINKEDIN_ADS_DATE_WINDOW_SIZE

The date window to request date from. The default is 30 days.

Page Size (page_size)

  • Environment variable: TAP_LINKEDIN_ADS_PAGE_SIZE

The page size for requests. Default, 100.

Client Secret (client_secret)

  • Environment variable: TAP_LINKEDIN_ADS_CLIENT_SECRET

Your client secret.

Access Token (access_token)

  • Environment variable: TAP_LINKEDIN_ADS_ACCESS_TOKEN

Your access token.

User Agent (user_agent)

  • Environment variable: TAP_LINKEDIN_ADS_USER_AGENT

The user agent to send with requests.

Refresh Token (refresh_token)

  • Environment variable: TAP_LINKEDIN_ADS_REFRESH_TOKEN

Your refresh token.

Authentication Setup Details

The tap uses a LinkedIn provided access_token in the config settings to make API requests. Access tokens expire after 60 days and require a user to manually authenticate again. If the tap receives a 401 invalid token response, the error logs will state that your access token has expired and to re-authenticate your connection to generate a new token. This is described more in LinkedIn OAuth 2.0 Docs.

The API user account should be assigned one of the following roles:

  • VIEWER (Recommended)

The API user account should be assigned the following permissions for the API endpoints:

  • accounts, account_users, video_ads, campaign_groups, campaigns, creatives:
    • r_ads: read ads (Recommended)
    • rw_ads: read-write ads
  • ad_analytics_by_campaign, ad_analytics_by_creative:
    • r_ads_reporting: read ads reporting

NOTE: Legacy permissions (r_ad_campaigns) have been migrated to the new permissions (r_ads and r_ads_reporting) based on this permissions mapping.

To generate the access_token:

  1. Login to LinkedIn as the API user.
  2. Create an API App here:
  • App Name: tap-linkedin-ads
  • Company: search and find your company LinkedIn page
  • Privacy policy URL: link to company privacy policy
  • Business email: developer/admin email address
  • App logo: Stitch (or Company) logo
  • Products: Select Marketing Developer Platform (checkbox)
  • Review/agree to legal terms and create app
  1. Verify App:
  • Provide the verify URL to your Company's LinkedIn Admin to verify and authorize the app.
  • Once verified, select the App in the Console here.
  • Review the “Auth” tab:
  • Record client_id and client_secret (for later steps).
  • Review permissions and ensure app has the permissions (above).
  • Oauth 2.0 settings: Provide a redirect_uri (for later steps):
  • Review the “Products” tab and ensure “Marketing Developer Platform” has been added and approved (listed in the “added products” section).
  • Review the “Usage & limits” tab. This shows the daily application and user/member limits with percent used for each resource endpoint.
  1. Authorize App: The authorization token lasts 60-days before expiring. The tap app will need to be reauthorized when the authorization token expires.
  1. Run the following curl command with the parameters replaced to return your access_token. The access_token expires in 2-months.
> curl -0 -v -X POST\
  -H "Accept: application/json"\
  -H "application/x-www-form-urlencoded"\
  -d "grant_type=authorization_code"\
  -d "code=YOUR_CODE"\
  -d "client_id=YOUR_CLIENT_ID"\
  -d "client_secret=YOUR_CLIENT_SECRET"\
  -d "state=YOUR_STATE_KEY"\
  -d "redirect_uri=YOUR_REDIRECT_URI"

Something missing?

This page is generated from a YAML file that you can contribute changes to.

Edit it on GitHub!

Looking for help?

If you're having trouble getting the tap-linkedin-ads extractor to work, look for an existing issue in its repository, file a new issue, or join the Meltano Slack community and ask for help in the


meltano add extractor tap-linkedin-ads

Maintenance Status

  • Maintenance Status
  • Stars
  • Forks
  • Open Issues
  • Open PRs
  • Contributors
  • License


  • Stitch Data

Meltano Stats

  • Total Executions (Last 3 Months)
  • Projects (Last 3 Months)

PyPI Stats

  • PyPI Downloads
  • PyPI Package Version


  • api