Reddit Ads¶
Reddit Ads is a platform that allows businesses and marketers to create, manage, and analyze advertising campaigns on Reddit.
omniload supports Reddit Ads as a source.
URI format¶
The URI format for Reddit Ads as a source is as follows:
redditads://?access_token=<access_token>&account_ids=<account_ids>
URI parameters:¶
access_token(required): The OAuth2 access token used for authentication with the Reddit Ads API. This token grants access to the advertising data associated with your Reddit Ads accounts.account_ids(required): A comma-separated list of Ad Account IDs specifying the Reddit Ad Accounts for which you want to retrieve data. These IDs uniquely identify the Reddit Ad Accounts associated with your business.
Reddit Ads requires an access_token and account_ids to retrieve data from the Reddit Ads API v3. Please follow these steps to obtain the access_token and account_ids.
Create a Reddit developer application to obtain an access token¶
Go to Reddit App Preferences and log in with your Reddit account.
Click “create another app…” at the bottom of the page.
Fill out the form:
Name: Your application name
Type: Select “web app”
Redirect URI: A valid redirect URI for your OAuth flow (e.g.,
http://localhost:8080/callback)
Click “create app” and note your client_id (shown under the app name) and client_secret.
Tables¶
Reddit Ads source allows ingesting the following sources into separate tables:
Table |
PK |
Inc Key |
Inc Strategy |
Details |
|---|---|---|---|---|
id |
- |
replace |
Retrieves all ad accounts accessible by the authenticated user. |
|
id |
- |
replace |
Retrieves campaigns for each ad account. |
|
id |
- |
replace |
Retrieves ad groups for each ad account. |
|
id |
- |
replace |
Retrieves ads for each ad account. |
|
id |
- |
replace |
Retrieves ad posts (creatives) for each ad account. |
|
id |
- |
replace |
Retrieves custom audiences for targeting. |
|
id |
- |
replace |
Retrieves saved audience configurations. |
|
id |
- |
replace |
Retrieves conversion tracking pixels. |
|
id |
- |
replace |
Retrieves funding instruments (payment methods) for each ad account. |
|
[level_id, breakdowns] |
date |
merge |
Custom reports allow you to retrieve performance data based on specific levels, breakdowns, and metrics. |
Use these as --source-table parameter in the omniload ingest command.
Example¶
Retrieve all campaigns:
omniload ingest \
--source-uri "redditads://?access_token=token_123&account_ids=id_123,id_456" \
--source-table 'campaigns' \
--dest-uri 'duckdb:///reddit.duckdb' \
--dest-table 'dest.campaigns'
Retrieve all ad groups:
omniload ingest \
--source-uri "redditads://?access_token=token_123&account_ids=id_123" \
--source-table 'ad_groups' \
--dest-uri 'duckdb:///reddit.duckdb' \
--dest-table 'dest.ad_groups'
Custom Reports¶
The custom table uses the Reddit Ads Reports API to pull advertising performance reports. This allows you to retrieve metrics like impressions, clicks, and spend broken down by dimensions such as date, country, or community.
Format:
custom:<level>,<breakdowns>:<metrics>
Parameters:
level(required): The first element specifies the reporting level. Must be one of:account,campaign,ad_group,ad.breakdowns(optional): Comma-separated list of breakdowns after the level. Valid breakdowns:date,country,region,community,placement,device_os,gender,interest,keyword,carousel_card. Maximum 2 breakdowns per report.metrics(required): A comma-separated list of metrics to retrieve. Common metrics include:impressions,reach,clicks,spend,ecpm,ctr,cpc, and various video and conversion metrics.
[!NOTE] By default, omniload fetches data from January 1, 2020 to today’s date. You can specify a custom date range using the
--interval-startand--interval-endparameters.
[!NOTE] Monetary metrics (
spend,ecpm,cpc) are automatically converted from microcurrency to standard currency values.
Custom Reports Examples¶
Retrieve daily campaign performance data:
omniload ingest \
--source-uri "redditads://?access_token=token_123&account_ids=id_123,id_456" \
--source-table 'custom:campaign,date:impressions,clicks,spend' \
--dest-uri 'duckdb:///reddit.duckdb' \
--dest-table 'dest.campaign_daily'
The applied parameters for the report are:
level:
CAMPAIGNbreakdowns:
datemetrics:
IMPRESSIONS,CLICKS,SPEND
Retrieve ad group performance by country for a specific date range:
omniload ingest \
--source-uri "redditads://?access_token=token_123&account_ids=id_123" \
--source-table 'custom:ad_group,date,country:impressions,reach,ctr' \
--dest-uri 'duckdb:///reddit.duckdb' \
--dest-table 'dest.ad_group_country' \
--interval-start '2024-10-15' \
--interval-end '2024-12-31'
The applied parameters for the report are:
level:
AD_GROUPbreakdowns:
date,countrymetrics:
IMPRESSIONS,REACH,CTR
Retrieve account-level spend data:
omniload ingest \
--source-uri "redditads://?access_token=token_123&account_ids=id_123,id_456" \
--source-table 'custom:account,date:spend,impressions' \
--dest-uri 'duckdb:///reddit.duckdb' \
--dest-table 'dest.account_spend'
The applied parameters for the report are:
level:
ACCOUNTbreakdowns:
datemetrics:
SPEND,IMPRESSIONS
This command will retrieve data and save it to the destination table in the DuckDB database.