Connector

Ask X Ads Questions in Claude

Ask X (Twitter) Ads questions in Claude using OWOX Data Marts. Collect X (Twitter) Ads data into a governed data mart, then get answers in Claude via OWOX's MCP server — every number traces back to analyst-written SQL.

Get Started Free

Endpoints

X Ads endpoints

10 X Ads endpoints you can import. Each lands in its own table in your warehouse.

  • Accounts

    Advertising accounts — name, business, country, timezone, and approval status.

    12 fieldsx_ads_accounts
  • Ad Performance

    Daily ad performance by placement — impressions, clicks, spend, engagements, and social actions.

    20 fieldsTime seriesx_ads_stats
  • Ad Performance by Country

    Daily ad performance broken down by country — impressions, clicks, spend, engagements, and social actions.

    21 fieldsTime seriesx_ads_stats_by_country
  • All Cards

    All card types with full creative details — type, title, destination URL, call to action, and media.

    28 fieldsx_ads_cards_all
  • Campaigns

    Your campaigns — status, budget optimization, daily and total budget, and currency.

    19 fieldsx_ads_campaigns
  • Cards

    Website and app cards — type, URI, and components.

    8 fieldsx_ads_cards
  • Line Items

    Line items within campaigns — bid strategy, goal, product type, budget, and schedule.

    33 fieldsx_ads_line_items
  • Promoted Tweets

    Tweets promoted as ads — status, approval, and links to their tweets and line items.

    8 fieldsx_ads_promoted_tweets
  • Targeting Locations

    Reference table of location IDs with names and country codes — join targeting_value with the country field in Ad Performance by Country.

    4 fieldsx_ads_targeting_locations
  • Tweets

    Original tweets used as ad creatives — text, type, language, engagement counts, and card URI.

    34 fieldsx_ads_tweets

Data schema

X Ads data schema

Accounts 12 fields · x_ads_accounts
X Ads Accounts fields
FieldTypeDescription
nameSTRINGThe name of the account
business_nameSTRINGThe business name associated with the account
timezoneSTRINGThe timezone of the account
timezone_switch_atDATETIMEWhen the timezone was last switched
country_codeSTRINGThe country code of the account (e.g. SI)
idSTRINGThe unique identifier for the account
created_atDATETIMEWhen the account was created
updated_atDATETIMEWhen the account was last updated
industry_typeSTRINGThe industry type of the account
business_idSTRINGThe business identifier associated with the account
approval_statusSTRINGThe approval status of the account (e.g. ACCEPTED)
deletedBOOLEANWhether the account is deleted
Ad Performance 20 fields · x_ads_stats
X Ads Ad Performance fields
FieldTypeDescription
idSTRINGThe unique identifier for the stats record.
dateSTRINGThe date for which the statistics were collected.
placementSTRINGThe placement type (ALL_ON_TWITTER or PUBLISHER_NETWORK).
impressionsINTEGERNumber of impressions.
tweets_sendINTEGERNumber of tweets sent.
billed_charge_local_microINTEGERBilled amount in micros.
qualified_impressionsINTEGERNumber of qualified impressions.
followsINTEGERNumber of follows.
app_clicksINTEGERNumber of app clicks.
retweetsINTEGERNumber of retweets.
unfollowsINTEGERNumber of unfollows.
likesINTEGERNumber of likes.
engagementsINTEGERNumber of engagements.
clicksINTEGERNumber of clicks.
card_engagementsINTEGERNumber of card engagements.
poll_card_voteINTEGERNumber of poll card votes.
repliesINTEGERNumber of replies.
url_clicksINTEGERNumber of URL clicks.
billed_engagementsINTEGERNumber of billed engagements.
carousel_swipesINTEGERNumber of carousel swipes.
Ad Performance by Country 21 fields · x_ads_stats_by_country
X Ads Ad Performance by Country fields
FieldTypeDescription
idSTRINGThe unique identifier for the stats record.
dateSTRINGThe date for which the statistics were collected.
placementSTRINGThe placement type (ALL_ON_TWITTER or PUBLISHER_NETWORK).
countrySTRINGLocation ID from X Ads (hex string, e.g. 96683cc9126741d1). Join with the targeting_locations node to get the human-readable name and country code.
impressionsINTEGERNumber of impressions.
tweets_sendINTEGERNumber of tweets sent.
billed_charge_local_microINTEGERBilled amount in micros.
qualified_impressionsINTEGERNumber of qualified impressions.
followsINTEGERNumber of follows.
app_clicksINTEGERNumber of app clicks.
retweetsINTEGERNumber of retweets.
unfollowsINTEGERNumber of unfollows.
likesINTEGERNumber of likes.
engagementsINTEGERNumber of engagements.
clicksINTEGERNumber of clicks.
card_engagementsINTEGERNumber of card engagements.
poll_card_voteINTEGERNumber of poll card votes.
repliesINTEGERNumber of replies.
url_clicksINTEGERNumber of URL clicks.
billed_engagementsINTEGERNumber of billed engagements.
carousel_swipesINTEGERNumber of carousel swipes.
All Cards 28 fields · x_ads_cards_all
X Ads All Cards fields
FieldTypeDescription
idSTRINGThe unique identifier for the card
nameSTRINGThe name of the card
card_typeSTRINGType of the card (e.g. IMAGE_APP_DOWNLOAD, VIDEO_WEBSITE)
card_uriSTRINGURI of the card
created_atDATETIMEISO-8601 timestamp when the card was created
updated_atDATETIMEISO-8601 timestamp when the card was last updated
deletedBOOLEANWhether the card is deleted
googleplay_app_idSTRINGGoogle Play application ID
country_codeSTRINGCountry code associated with the app or destination
wide_app_imageSTRINGURL to the wide-aspect-ratio image used by the app card
image_display_widthSTRINGWidth (in pixels) of the primary image displayed with the card
image_display_heightSTRINGHeight (in pixels) of the primary image displayed with the card
app_ctaSTRINGCall-to-action used on the app card (e.g. INSTALL, OPEN)
titleSTRINGTitle shown on the card
website_urlSTRINGCanonical website URL
website_dest_urlSTRINGDestination URL used for clicks
website_display_urlSTRINGDisplay URL shown on the card
website_shortened_urlSTRINGShortened (t.co) URL placed in the card
video_urlSTRINGURL of the video file or VMAP
video_hls_urlSTRINGHLS streaming URL
video_poster_urlSTRINGPoster image displayed before video playback
video_content_idSTRINGInternal content identifier of the video
video_owner_idSTRINGUser ID of the video owner
content_duration_secondsSTRINGVideo duration in seconds
video_widthSTRINGOriginal width of the video
video_heightSTRINGOriginal height of the video
video_poster_widthSTRINGWidth of the video poster image
video_poster_heightSTRINGHeight of the video poster image
Campaigns 19 fields · x_ads_campaigns
X Ads Campaigns fields
FieldTypeDescription
nameSTRINGThe name of the campaign
budget_optimizationSTRINGBudget optimization strategy (e.g. LINE_ITEM)
reasons_not_servableARRAYReasons why the campaign is not servable
servableBOOLEANWhether the campaign is servable
purchase_order_numberSTRINGPurchase order number
effective_statusSTRINGEffective status of the campaign (e.g. PAUSED)
daily_budget_amount_local_microINTEGERDaily budget amount in micros (nullable)
funding_instrument_idSTRINGID of the funding instrument
duration_in_daysINTEGERDuration of the campaign in days (nullable)
standard_deliveryBOOLEANWhether standard delivery is enabled (nullable)
total_budget_amount_local_microINTEGERTotal budget amount in micros (nullable)
idSTRINGThe unique identifier for the campaign
entity_statusSTRINGEntity status of the campaign
frequency_capINTEGERFrequency cap (nullable)
currencySTRINGCurrency code (e.g. USD)
created_atDATETIMETimestamp when the campaign was created
updated_atDATETIMETimestamp when the campaign was last updated
deletedBOOLEANWhether the campaign is deleted
account_idSTRINGID of the account
Cards 8 fields · x_ads_cards
X Ads Cards fields
FieldTypeDescription
idSTRINGThe unique identifier for the card.
nameSTRINGThe name of the card.
card_typeSTRINGType of the card.
card_uriSTRINGURI of the card.
created_atDATETIMEWhen the card was created.
updated_atDATETIMEWhen the card was last updated.
deletedBOOLEANWhether the card is deleted.
componentsARRAYCard components including media and buttons.
Line Items 33 fields · x_ads_line_items
X Ads Line Items fields
FieldTypeDescription
advertiser_user_idSTRINGID of the advertiser user
nameSTRINGName of the line item
placementsARRAYList of placement targets (e.g. ALL_ON_TWITTER)
start_timeDATETIMELine item start time
bid_amount_local_microINTEGERBid amount in micro-currency units
advertiser_domainSTRINGDomain of the advertiser
target_cpa_local_microINTEGERTarget CPA (cost per action) in micro-currency units
primary_web_event_tagSTRINGPrimary web event tag identifier
goalSTRINGLine item goal/objective (e.g. APP_INSTALLS)
daily_budget_amount_local_microINTEGERDaily budget in micro-currency units
product_typeSTRINGProduct type (e.g. PROMOTED_TWEETS)
end_timeDATETIMELine item end time (nullable)
funding_instrument_idSTRINGID of the funding instrument
bid_strategySTRINGBidding strategy (e.g. AUTO)
duration_in_daysINTEGERDuration in days (nullable)
standard_deliveryBOOLEANWhether standard delivery is enabled
total_budget_amount_local_microINTEGERTotal budget in micro-currency units (nullable)
objectiveSTRINGCampaign objective (duplicate of goal in some APIs)
idSTRINGUnique identifier of the line item
entity_statusSTRINGStatus of the line item (e.g. ACTIVE, PAUSED)
automatic_tweet_promotionBOOLEANWhether automatic tweet promotion is enabled
frequency_capINTEGERFrequency cap for ad serving
android_app_store_identifierSTRINGAndroid app store identifier
categoriesARRAYArray of category labels
currencySTRINGCurrency code (e.g. USD)
pay_bySTRINGPayment method (e.g. IMPRESSION)
created_atDATETIMETimestamp when the line item was created
ios_app_store_identifierSTRINGiOS app store identifier
updated_atDATETIMETimestamp when the line item was last updated
campaign_idSTRINGID of the parent campaign
creative_sourceSTRINGSource of the creative (e.g. MANUAL)
audience_expansionSTRINGAudience expansion setting (e.g. EXPANDED)
deletedBOOLEANWhether the line item is marked as deleted
Promoted Tweets 8 fields · x_ads_promoted_tweets
X Ads Promoted Tweets fields
FieldTypeDescription
line_item_idSTRINGID of the parent line item
idSTRINGUnique identifier for the promoted tweet
entity_statusSTRINGStatus of the promoted tweet (e.g., ACTIVE, PAUSED)
created_atDATETIMETimestamp when the promoted tweet was created
updated_atDATETIMETimestamp when the promoted tweet was last updated
approval_statusSTRINGApproval status of the promoted tweet (e.g., ACCEPTED, REJECTED)
tweet_idSTRINGID of the original tweet
deletedBOOLEANFlag indicating whether the promoted tweet has been deleted
Targeting Locations 4 fields · x_ads_targeting_locations
X Ads Targeting Locations fields
FieldTypeDescription
targeting_valueSTRINGUnique hex ID for this location (e.g. 96683cc9126741d1). Use this to join with the country field in stats_by_country.
nameSTRINGHuman-readable location name (e.g. United States, California).
location_typeSTRINGType of location: COUNTRIES, REGIONS, CITIES, METROS, or POSTAL_CODES.
country_codeSTRINGISO 2-letter country code (e.g. US, DE, NL).
Tweets 34 fields · x_ads_tweets
X Ads Tweets fields
FieldTypeDescription
coordinatesOBJECTThe geographic coordinates (latitude/longitude) of the tweet, if available.
retweetedBOOLEANWhether this tweet is a retweet of another tweet.
nameSTRINGA custom name or label for the tweet.
conversation_settingsSTRINGWho can reply or interact with the tweet (e.g. EVERYONE).
sourceSTRINGHTML markup indicating the client or interface used to post the tweet.
entitiesOBJECTParsed entities in the tweet (mentions, hashtags, URLs, media, etc.).
display_text_rangeARRAYStart/end indices for which portion of the tweet text to display.
favorite_countINTEGERNumber of times the tweet has been liked.
in_reply_to_status_id_strSTRINGID (as string) of the tweet this one is replying to.
geoOBJECTDeprecated geographic information, if present.
id_strSTRINGThe tweet’s unique identifier, as a string.
scopesOBJECTVisibility scopes (e.g. { followers: false }).
in_reply_to_user_idINTEGERNumeric ID of the user this tweet is replying to.
truncatedBOOLEANWhether the tweet text has been truncated.
retweet_countINTEGERNumber of times this tweet has been retweeted.
scheduled_statusSTRINGScheduled status (e.g. pending scheduling), if any.
idINTEGERThe tweet’s unique identifier, as a number.
in_reply_to_status_idINTEGERNumeric ID of the tweet this one is replying to.
possibly_sensitiveBOOLEANWhether the tweet may contain sensitive content.
nullcastBOOLEANWhether the tweet is nullcast (not shown on timeline).
created_atSTRINGCreation timestamp of the tweet.
placeOBJECTPlace (location) associated with the tweet, if any.
scheduled_atSTRINGWhen the tweet was scheduled for posting.
tweet_typeSTRINGType of tweet (e.g. PUBLISHED).
favoritedBOOLEANWhether the authenticated user has liked the tweet.
card_uriSTRINGURI of the associated Twitter Card.
full_textSTRINGThe full text content of the tweet.
langSTRINGLanguage code of the tweet (e.g. en).
contributorsARRAYArray of contributors to the tweet, if any.
in_reply_to_screen_nameSTRINGScreen name of the user this tweet is replying to.
in_reply_to_user_id_strSTRINGID (as string) of the user this tweet is replying to.
userOBJECTThe user object of the author (contains id, id_str, etc.).
tweet_idSTRINGDuplicate of id_str (the tweet’s ID as a string).
extended_entitiesOBJECTExtended media entities (e.g. video variants, additional media info).

In Claude

Ask X Ads questions in Claude

You

In which countries are our X ads seen most?

Claude

Ad Performance by Country (x_ads_stats_by_country) holds impressions and qualified_impressions for each country. I ranked countries by impressions and put clicks beside each.

It is read from your governed X Ads Data Mart through the OWOX MCP server and reflects that Data Mart's last scheduled refresh.

You

Where do people actually engage?

Claude

Dividing engagements by impressions per country gives an engagement rate for each. The Targeting Locations table maps location ids to names if you want to line this up with your targeting settings.

Trust

Data Partner You Can Trust

users

175K

Executives and data analysts across 20+ industries

G2 rating

4.9★

“A trusted data analytics partner” — verified review

npm installs

156K

In Open Source We Trust

Customers

What users are saying

Every claim has a receipt.

Real things real customers said — each quote pinned to a specific claim, straight from the quotes database.

A3re: trusting AI
Nodari RizunNodari RizunFounder & CEO, Pürblack®
“AI, by the nature of the models, will hallucinate. And because of that, you need something which will create guardrails to ensure that there are no hallucinations, that you can trust your data.”
C9re: one source of truth
Mark SimmonsMark SimmonsCMO, Pürblack®
“We had six or seven different channels and no single source of truth — it was almost impossible, a lot of guesswork.”
E7re: getting time back
Nodari RizunNodari RizunFounder & CEO, Pürblack®
“We regained time. And time is the one resource that never comes back.”

Turn X Ads Data into Answers in Claude

See how OWOX Data Marts helps you ask X Ads questions in Claude, blend it with other sources, and scale reporting without rebuilding logic.

Get Started Free