Singer tap for extracting data from the LinkedIn Ads Marketing API.
Built with the Meltano Singer SDK.
catalog
state
discover
about
stream-maps
schema-flattening
Setting | Required | Default | Description |
---|---|---|---|
access_token | True | None | The token to authenticate against the API service |
start_date | True | None | The earliest record date to sync |
end_date | False | 2023-05-09 02:04:18.151589 | The latest record date to sync |
user_agent | False | tap-linkedin-ads <api_user_email@your_company.com> | API ID |
accounts | True | None | LinkedInAds Account ID |
campaign | True | None | LinkedInAds Campaign ID |
creative | True | None | LinkedInAds Creative ID |
campaign_group | True | None | LinkedInAds Campaign Group ID |
owner | True | None | LinkedInAds Owner ID |
stream_maps | False | None | Config object for stream maps capability. For more information check out Stream Maps. |
stream_map_config | False | None | User-defined config values to be used within map expressions. |
flattening_enabled | False | None | 'True' to enable schema flattening and automatically expand nested properties. |
flattening_max_depth | False | None | The max depth to flatten schemas. |
A full list of supported settings and capabilities is available by running: tap-linkedin-ads --about
The owner
setting is required for pulling data from the VideoAds endpoint. You can find the owner ID by making a
request to the adAccounts endpoint:
https://api.linkedin.com/rest/adAccounts?q=search&start=0&count=10
The owner ID can be found in the response under "reference": "urn:li:organization:{OWNER}
"
pipx install git+https://github.com/MeltanoLabs/tap-linkedin-ads.git@main
The tap requires a LinkedInAds OAuth 2.0 access token to make API requests
The access token requires the following permissions:
r_ads
: read ads
rw_ads
: read-write ads
r_ads_reporting
: read ads reporting
Access tokens expire after 60 days and require a user to manually authenticate again. See the LinkedInAds API docs for more info
The AdAnalytics endpoint in the LinkedInAds API can call up to 20 columns at a time, we can create child classes which have 20 columns in them, we can merge their output with get records function.
The creatives endpoint requires X-Restli-Protocol to be set to 2.0.0. The request URL for tap-linkedin-ads uses parentheses ‘()’. '(' and ')' are typically encoded in a request URL, but are not when the X-Restli-Protocol is 2.0.0. An SDK update for expanded escape characters is currently WIP [link github issue]
add_metadata_columns:
Setting this config to 'true' adds the_SDC_BATCHED_AT
,_SDC_DELETED_AT
and_SDC_EXTRACTED_AT
metadata columns to the loaded tables
The licensor grants you a non-exclusive, royalty-free, worldwide, non-sublicensable, non-transferable license to use, copy, distribute, make available, and prepare derivative works of the software.
tap-linkedin-ads --version
tap-linkedin-ads --help
tap-linkedin-ads --config CONFIG --discover > ./catalog.json
This project uses parent-child streams. Learn more about them here.
pipx install poetry
poetry install
Create tests within the lib_tap_linkedin_ads_sdk/tests
subfolder and
then run:
poetry run pytest
You can also test the tap-linkedin-ads
CLI interface directly using poetry run
:
poetry run tap-linkedin-ads --help
Testing with Meltano
Note: This tap will work in any Singer environment and does not require Meltano. Examples here are for convenience and to streamline end-to-end orchestration scenarios.
Next, install Meltano (if you haven't already) and any needed plugins:
# Install meltano
pipx install meltano
# Initialize meltano within this directory
cd tap-linkedin-ads
meltano install tap-linkedin-ads
Now you can test and orchestrate using Meltano:
# Test invocation:
meltano invoke tap-linkedin-ads --version
# OR run a test `elt` pipeline:
meltano elt tap-linkedin-ads target-jsonl
See the dev guide for more instructions on how to use the SDK to develop your own taps and targets.