Install
openclaw skills install pinterest-ads-cliPinterest Ads data analysis and reporting via pinterest-ads-cli. Use when the user wants to check Pinterest ad performance, pull campaign/ad group/ad stats,...
openclaw skills install pinterest-ads-cliYou have access to pinterest-ads-cli, a read-only CLI for the Pinterest REST API v5. Use it to query ad accounts, pull performance analytics, inspect campaigns and ads, analyze audiences, browse product catalogs, discover trending search terms, and review billing across Pinterest advertising.
# Check if the CLI is available
pinterest-ads-cli --help
# List accessible ad accounts
pinterest-ads-cli accounts
# Get a specific ad account
pinterest-ads-cli account 123456789
If the CLI is not installed, install it:
npm install -g pinterest-ads-cli
The CLI requires a Pinterest OAuth2 access token. Most commands need the ads:read scope. Additional scopes may be required for specific commands: catalogs:read for catalog commands, user_accounts:read for trends, and billing:read for billing data. Credentials are resolved in this order:
--credentials <path> flag (per-command)PINTEREST_ADS_ACCESS_TOKEN~/.config/pinterest-ads-cli/credentials.jsonThe credentials JSON file format:
{
"access_token": "YOUR_ACCESS_TOKEN"
}
Before running any command, verify credentials are configured by running pinterest-ads-cli accounts. If it fails with a credentials error, ask the user to set up authentication.
Ad Account
+-- Campaign
| +-- Ad Group
| +-- Ad
| +-- Keyword
+-- Audience
+-- Customer List
+-- Conversion Tag
+-- Billing Profile
+-- Order Line
+-- Lead Form
Catalog resources (catalogs, feeds, product groups) are not scoped to an ad account and are accessed at the top level.
Pinterest analytics returns monetary metrics in micro-currency units (1/1,000,000 of the ad account's currency). Fields like SPEND_IN_MICRO_DOLLAR, CPC_IN_MICRO_DOLLAR, and ECPM_IN_MICRO_DOLLAR must be divided by 1,000,000 to get the actual amount. Despite the DOLLAR suffix in field names, values are in the ad account's configured currency (USD, GBP, EUR, etc.).
Example: SPEND_IN_MICRO_DOLLAR: 5000000 means 5.00 in the account's currency.
All commands output pretty-printed JSON by default. Use --format compact for single-line JSON (useful for piping).
Pagination uses cursor-based --bookmark values returned in the response. Pass the bookmark from a previous response to get the next page.
# List ad accounts
pinterest-ads-cli accounts
pinterest-ads-cli accounts --page-size 50
# Get a specific ad account
pinterest-ads-cli account 123456789
List ad accounts the user has access to.
| Option | Description | Default |
|---|---|---|
--page-size <n> | Results per page (max 250) | 25 |
--bookmark <cursor> | Pagination cursor | -- |
Get details of a specific ad account. Takes the ad account ID as a required argument.
pinterest-ads-cli account <ad-account-id>
# List campaigns
pinterest-ads-cli campaigns 123456789
pinterest-ads-cli campaigns 123456789 --entity-statuses ACTIVE,PAUSED
pinterest-ads-cli campaigns 123456789 --order DESCENDING --page-size 100
# List ad groups
pinterest-ads-cli adgroups 123456789
pinterest-ads-cli adgroups 123456789 --campaign-ids campaign_1,campaign_2
# List ads
pinterest-ads-cli ads 123456789
pinterest-ads-cli ads 123456789 --campaign-ids campaign_1 --entity-statuses ACTIVE
List campaigns for an ad account.
pinterest-ads-cli campaigns <ad-account-id>
| Option | Description | Default |
|---|---|---|
--campaign-ids <ids> | Filter by campaign IDs (comma-separated) | -- |
--entity-statuses <statuses> | Filter by status (comma-separated, e.g. ACTIVE,PAUSED) | -- |
--page-size <n> | Results per page (max 250) | 25 |
--order <order> | Sort order: ASCENDING or DESCENDING | -- |
--bookmark <cursor> | Pagination cursor | -- |
List ad groups for an ad account.
pinterest-ads-cli adgroups <ad-account-id>
| Option | Description | Default |
|---|---|---|
--campaign-ids <ids> | Filter by campaign IDs (comma-separated) | -- |
--ad-group-ids <ids> | Filter by ad group IDs (comma-separated) | -- |
--entity-statuses <statuses> | Filter by status (comma-separated) | -- |
--page-size <n> | Results per page (max 250) | 25 |
--order <order> | Sort order: ASCENDING or DESCENDING | -- |
--bookmark <cursor> | Pagination cursor | -- |
List ads for an ad account.
pinterest-ads-cli ads <ad-account-id>
| Option | Description | Default |
|---|---|---|
--campaign-ids <ids> | Filter by campaign IDs (comma-separated) | -- |
--ad-group-ids <ids> | Filter by ad group IDs (comma-separated) | -- |
--ad-ids <ids> | Filter by ad IDs (comma-separated) | -- |
--entity-statuses <statuses> | Filter by status (comma-separated) | -- |
--page-size <n> | Results per page (max 250) | 25 |
--order <order> | Sort order: ASCENDING or DESCENDING | -- |
--bookmark <cursor> | Pagination cursor | -- |
# List keywords for an ad account
pinterest-ads-cli keywords 123456789
pinterest-ads-cli keywords 123456789 --ad-group-id adgroup_1
List targeting keywords for an ad account.
pinterest-ads-cli keywords <ad-account-id>
| Option | Description | Default |
|---|---|---|
--ad-group-id <id> | Filter by ad group ID | -- |
--page-size <n> | Results per page (max 250) | 25 |
--bookmark <cursor> | Pagination cursor | -- |
# List audiences
pinterest-ads-cli audiences 123456789
# List customer lists
pinterest-ads-cli customer-lists 123456789
List audiences for an ad account.
pinterest-ads-cli audiences <ad-account-id>
| Option | Description | Default |
|---|---|---|
--page-size <n> | Results per page (max 250) | 25 |
--order <order> | Sort order: ASCENDING or DESCENDING | -- |
--bookmark <cursor> | Pagination cursor | -- |
List customer lists for an ad account.
pinterest-ads-cli customer-lists <ad-account-id>
| Option | Description | Default |
|---|---|---|
--page-size <n> | Results per page (max 250) | 25 |
--order <order> | Sort order: ASCENDING or DESCENDING | -- |
--bookmark <cursor> | Pagination cursor | -- |
# List all conversion tags
pinterest-ads-cli conversion-tags 123456789
# Get a specific conversion tag
pinterest-ads-cli conversion-tag 123456789 tag_abc
List conversion tags for an ad account. No pagination options -- returns all tags.
pinterest-ads-cli conversion-tags <ad-account-id>
Get a specific conversion tag.
pinterest-ads-cli conversion-tag <ad-account-id> <tag-id>
# List billing profiles
pinterest-ads-cli billing-profiles 123456789
pinterest-ads-cli billing-profiles 123456789 --is-active
# List order lines
pinterest-ads-cli order-lines 123456789
# Get a specific order line
pinterest-ads-cli order-line 123456789 orderline_abc
List billing profiles for an ad account.
pinterest-ads-cli billing-profiles <ad-account-id>
| Option | Description | Default |
|---|---|---|
--is-active | Only return active profiles (boolean flag) | false |
--page-size <n> | Results per page (max 250) | 25 |
--bookmark <cursor> | Pagination cursor | -- |
List order lines for an ad account.
pinterest-ads-cli order-lines <ad-account-id>
| Option | Description | Default |
|---|---|---|
--page-size <n> | Results per page (max 250) | 25 |
--order <order> | Sort order: ASCENDING or DESCENDING | -- |
--bookmark <cursor> | Pagination cursor | -- |
Get a specific order line.
pinterest-ads-cli order-line <ad-account-id> <order-line-id>
# List lead forms
pinterest-ads-cli lead-forms 123456789
# Get a specific lead form
pinterest-ads-cli lead-form 123456789 leadform_abc
List lead generation forms for an ad account.
pinterest-ads-cli lead-forms <ad-account-id>
| Option | Description | Default |
|---|---|---|
--page-size <n> | Results per page (max 250) | 25 |
--order <order> | Sort order: ASCENDING or DESCENDING | -- |
--bookmark <cursor> | Pagination cursor | -- |
Get a specific lead form.
pinterest-ads-cli lead-form <ad-account-id> <lead-form-id>
Catalog commands are not scoped to an ad account.
# List catalogs
pinterest-ads-cli catalogs
# List catalog feeds
pinterest-ads-cli feeds
# List catalog product groups
pinterest-ads-cli product-groups
List catalogs.
| Option | Description | Default |
|---|---|---|
--page-size <n> | Results per page (max 250) | 25 |
--bookmark <cursor> | Pagination cursor | -- |
List catalog feeds.
| Option | Description | Default |
|---|---|---|
--page-size <n> | Results per page (max 250) | 25 |
--bookmark <cursor> | Pagination cursor | -- |
List catalog product groups.
| Option | Description | Default |
|---|---|---|
--page-size <n> | Results per page (max 250) | 25 |
--bookmark <cursor> | Pagination cursor | -- |
Discover trending search terms by region. Does not require an ad account ID.
# Growing trends in the US
pinterest-ads-cli trends US --trend-type growing
# Monthly trends filtered by interest
pinterest-ads-cli trends US --trend-type monthly --interests fashion --limit 20
# Seasonal trends filtered by demographics
pinterest-ads-cli trends GB --trend-type seasonal --genders female --ages 25-34
Get trending search terms for a region.
pinterest-ads-cli trends <region>
| Option | Description | Default |
|---|---|---|
--trend-type <type> | Required. Trend type: growing, monthly, yearly, seasonal | -- |
--interests <interests> | Filter by interests (comma-separated) | -- |
--genders <genders> | Filter by genders (comma-separated) | -- |
--ages <ages> | Filter by age groups (comma-separated) | -- |
--limit <n> | Number of results | 50 |
Note: the trends command does not support --bookmark pagination. Use --limit to control the number of results.
Analytics commands pull performance metrics for ad accounts, campaigns, ad groups, and ads. All analytics commands require --start-date, --end-date, and --columns.
# Account-level analytics
pinterest-ads-cli analytics 123456789 \
--start-date 2026-03-01 \
--end-date 2026-03-15 \
--columns SPEND_IN_MICRO_DOLLAR,IMPRESSION_1,CLICKTHROUGH_1 \
--granularity DAY
# Campaign-level analytics
pinterest-ads-cli campaign-analytics 123456789 \
--campaign-ids campaign_1,campaign_2 \
--start-date 2026-03-01 \
--end-date 2026-03-15 \
--columns SPEND_IN_MICRO_DOLLAR,IMPRESSION_1,CLICKTHROUGH_1
# Ad group-level analytics
pinterest-ads-cli adgroup-analytics 123456789 \
--ad-group-ids adgroup_1 \
--start-date 2026-03-01 \
--end-date 2026-03-15 \
--columns SPEND_IN_MICRO_DOLLAR,IMPRESSION_1
# Ad-level analytics
pinterest-ads-cli ad-analytics 123456789 \
--ad-ids ad_1 \
--start-date 2026-03-01 \
--end-date 2026-03-15 \
--columns SPEND_IN_MICRO_DOLLAR,IMPRESSION_1
Get ad account-level analytics.
pinterest-ads-cli analytics <ad-account-id>
| Option | Description | Default |
|---|---|---|
--start-date <date> | Required. Start date (YYYY-MM-DD) | -- |
--end-date <date> | Required. End date (YYYY-MM-DD) | -- |
--columns <cols> | Required. Metrics (comma-separated) | -- |
--granularity <gran> | TOTAL, DAY, HOUR, WEEK, MONTH | DAY |
--click-window-days <n> | Click attribution window: 0, 1, 7, 14, 30, 60 | -- |
--view-window-days <n> | View attribution window: 0, 1, 7, 14, 30, 60 | -- |
Get campaign-level analytics.
pinterest-ads-cli campaign-analytics <ad-account-id>
| Option | Description | Default |
|---|---|---|
--campaign-ids <ids> | Required. Campaign IDs (comma-separated) | -- |
--start-date <date> | Required. Start date (YYYY-MM-DD) | -- |
--end-date <date> | Required. End date (YYYY-MM-DD) | -- |
--columns <cols> | Required. Metrics (comma-separated) | -- |
--granularity <gran> | TOTAL, DAY, HOUR, WEEK, MONTH | DAY |
Get ad group-level analytics.
pinterest-ads-cli adgroup-analytics <ad-account-id>
| Option | Description | Default |
|---|---|---|
--ad-group-ids <ids> | Required. Ad group IDs (comma-separated) | -- |
--start-date <date> | Required. Start date (YYYY-MM-DD) | -- |
--end-date <date> | Required. End date (YYYY-MM-DD) | -- |
--columns <cols> | Required. Metrics (comma-separated) | -- |
--granularity <gran> | TOTAL, DAY, HOUR, WEEK, MONTH | DAY |
Get ad-level analytics.
pinterest-ads-cli ad-analytics <ad-account-id>
| Option | Description | Default |
|---|---|---|
--ad-ids <ids> | Required. Ad IDs (comma-separated) | -- |
--start-date <date> | Required. Start date (YYYY-MM-DD) | -- |
--end-date <date> | Required. End date (YYYY-MM-DD) | -- |
--columns <cols> | Required. Metrics (comma-separated) | -- |
--granularity <gran> | TOTAL, DAY, HOUR, WEEK, MONTH | DAY |
Columns documented in README: SPEND_IN_MICRO_DOLLAR, IMPRESSION_1, CLICKTHROUGH_1, CPC_IN_MICRO_DOLLAR, ECPM_IN_MICRO_DOLLAR, CTR, TOTAL_CONVERSIONS
The CLI passes column names directly to the Pinterest API v5 without validation. Refer to the Pinterest Analytics API docs for all available columns (e.g., video metrics, engagement metrics, web conversion metrics). Column names use uppercase with underscores (e.g., VIDEO_MRC_VIEWS_1, TOTAL_ENGAGEMENT). Monetary columns end in _IN_MICRO_DOLLAR -- divide by 1,000,000.
Only the account-level analytics command supports attribution window options (--click-window-days and --view-window-days). The campaign, ad group, and ad-level analytics commands do not support these options in the CLI (this is a CLI limitation; the Pinterest API supports attribution windows on all analytics endpoints).
pinterest-ads-cli accounts to find accessible accountsanalytics with a recent date range and key columns like SPEND_IN_MICRO_DOLLAR,IMPRESSION_1,CLICKTHROUGH_1,CTRanalytics to see overall performancecampaigns to list campaigns, then campaign-analytics for campaign-level breakdownadgroup-analytics or ad-analytics for underperforming entitiesanalytics with --click-window-days and --view-window-days to understand attributionkeywords to review targetingaudiences to see existing audiencescustomer-lists to see customer list audienceskeywords with --ad-group-id to see targeting keywords for specific ad groupsconversion-tags to list active conversion tagsconversion-tag to get details on a specific taganalytics with TOTAL_CONVERSIONS column to see conversion performancecatalogs to list catalogsfeeds to inspect catalog feedsproduct-groups to see product groupingstrends with the appropriate region code (e.g., US, GB, CA)--trend-type (growing, monthly, yearly, seasonal)--interests, --genders, or --agesbilling-profiles to see billing configurations (add --is-active for active only)order-lines to see order linesorder-line with a specific ID for detailsads:read scope--credentials flag, PINTEREST_ADS_ACCESS_TOKEN env var, or ~/.config/pinterest-ads-cli/credentials.jsonads:read scopeSPEND_IN_MICRO_DOLLAR, not SPEND)