Every API here is available over the APIs.io API and to AI agents over MCP.
openapi: 3.2.0
info:
title: Metricool Analytics Api Service API
description: 'Metricool API
The base URL for all endpoints is: https://app.metricool.com/api
All endpoints require authentication.'
version: 2.0.0
servers:
- url: https://app.metricool.com/api
tags:
- name: Analytics Api Service
paths:
/v2/analytics/aggregation:
get:
tags:
- Analytics Api Service
operationId: aggregation
parameters:
- name: network
in: query
required: true
schema:
type: string
- name: metric
in: query
required: true
schema:
type: string
- name: from
in: query
required: true
schema:
type: string
- name: to
in: query
required: true
schema:
type: string
- name: timezone
in: query
required: false
schema:
type: string
- name: subject
in: query
required: false
schema:
type: string
- name: scope
in: query
required: false
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/JsonOkResponseDouble'
summary: Aggregation
x-summary-source: derived
/v2/analytics/brand-summary/posts:
get:
tags:
- Analytics Api Service
operationId: getBrandSummaryPosts
parameters:
- name: from
in: query
required: true
schema:
minLength: 1
type: string
- name: to
in: query
required: true
schema:
minLength: 1
type: string
- name: timezone
in: query
required: false
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/JsonOkListResponseBrandSummaryPost'
summary: Get brand summary posts
x-summary-source: derived
/v2/analytics/campaigns/tiktokads:
get:
tags:
- Analytics Api Service
operationId: getTiktokAdsCampaigns
parameters:
- name: from
in: query
required: true
schema:
type: string
- name: to
in: query
required: true
schema:
type: string
- name: timezone
in: query
required: false
schema:
type: string
- name: metrics[]
in: query
required: true
schema:
type: array
items:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/JsonOkListResponseCampaign'
summary: Get tiktok ads campaigns
x-summary-source: derived
/v2/analytics/distribution:
get:
tags:
- Analytics Api Service
operationId: distribution
parameters:
- name: network
in: query
required: true
schema:
type: string
- name: metric
in: query
required: true
schema:
type: string
- name: from
in: query
required: true
schema:
type: string
- name: to
in: query
required: true
schema:
type: string
- name: timezone
in: query
required: false
schema:
type: string
- name: subject
in: query
required: false
schema:
type: string
- name: scope
in: query
required: false
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/JsonOkListResponseDistributionItem'
summary: Distribution
x-summary-source: derived
/v2/analytics/hashtags:
get:
tags:
- Analytics Api Service
operationId: getPopularHashtags_1
parameters:
- name: network
in: query
required: false
schema:
type: string
- name: q
in: query
required: false
schema:
type: string
- name: limit
in: query
required: false
schema:
type: integer
format: int32
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/JsonOkListResponseHashtag'
summary: Get popular hashtags 1
x-summary-source: derived
/v2/analytics/timelines:
get:
tags:
- Analytics Api Service
summary: Returns a time series for a concrete metric during a period of time
operationId: timeline_2
parameters:
- name: network
in: query
description: 'network Supported values: <ul>
<li>tiktok</li>
<li>tiktokads</li>
<li>pinterest</li>
<li>youtube</li>
<li>facebook</li>
<li>gmb</li>
<li>instagram</li>
<li>linkedin</li>
<li>twitter</li>
<li>twitch</li>
</ul>'
required: true
schema:
type: string
- name: metric
in: query
description: 'metric Supported values: Metrics are case insensitive<ul>
<li>For TikTokAds: impressions, cost, clicks, conversions, cpm, cpc, ctr</li>
<li>For TikTok Videos: videos, views, comments, shares, interactions, likes, reach, engagement, impressionSources, averageVideoViews</li>
<li>For TikTok Account: video_views, profile_views, followers_count, followers_delta_count, likes, comments, shares</li>
<li>For Pinterest: impression save pin_click outbound_click video_mrc_view video_avg_watch_time video_v50_watch_time quartile_95_percent_view pins</li>
<li>For Pinterest (accounts): followers, following, delta followers</li>
<li>For Youtube: views, interactions, likes, dislikes, comments, shares </li>
<li>For Facebook (metrics for stories): storiesCount
<li>For Facebook (metrics for posts): count, interactions, engagement, impressionsunique, impressions, clicks, comments, shares, reactions
<li>For Facebook (metrics for reels): blue_reels_play_count, post_impressions_unique, post_video_likes_by_reaction_type, post_video_social_actions, engagement, count </li>
<li>For Facebook (account metrics): page_posts_impressions, page_actions_post_reactions_total, postsCount, postsInteractions, likes, pageFollows, pageImpressions, pageImpressions.M, pageImpressions.F, pageImpressions.U, pageImpressions.13-17, pageImpressions.18-24, pageImpressions.25-34, pageImpressions.35-44, pageImpressions.45-54, pageImpressions.55-64, pageImpressions.65+, pageViews, page_daily_follows_unique, page_daily_unfollows_unique</li>
<li>For GMB: business_impressions_maps, business_impressions_search, business_impressions_total, business_direction_requests, call_clicks, website_clicks, clicks_total, business_conversations, business_bookings, business_food_orders, business_actions_total</li>
<li>For Instagram (account metrics): email_contacts, get_directions_clicks, phone_call_clicks, text_message_clicks, clicks_total, postsCount, postsInteractions, delta_followers, followers_gained, followers_lost</li>
<li>For Instagram (posts metrics): count, interactions, engagement, reach, impressions, likes, comments, saves, shares</li>
<li>For Instagram (reels metrics): count, comments, likes, saved, shares, engagement, impressions, reach, interactions, videoviews</li>
<li>For Instagram (breakdown metrics, correct subject and scope are needed): comments, likes, profile_links_taps, reach, saved, saves, shares, total_interactions, views</li>
<li>For Linkedin (account metrics [company]): followers, paidFollowers, companyImpressions, deltaFollowers, impressionCount, shareCount, clickCount, likeCount, commentCount, postsCount</li>
<li>For Linkedin (posts metrics [company]): posts, clicks, likes, comments, shares, engagement, impressions, interactions</li>
<li>For Linkedin (newsletters metrics [company]): posts, clicks, likes, comments, shares, engagement, impressions, interactions</li>
<li>For Linkedin (account metrics [personal]): followers, deltaFollowers, reaction, comment, reshare, impression</li>
<li>For Linkedin (posts metrics [personal]): count, comment, reshare, impression, reaction, engagement, interactions</li>
<li>For Threads (posts metrics): count, views, likes, replies, reposts, engagement, quotes, interactions, shares</li>
<li>For Bluesky (posts metrics): posts_count, interactions, likes, replies, reposts, quotes</li>
<li>For Twitter (account metrics): followers, friends, postsCount</li>
<li>For Twitch (account metrics): followers, deltaFollowers, subscribers, tier1, tier2, tier3, gifts, videos, views, duration</li>
<li>For Twitter (posts metrics): engagement, impressions, interactions, likes, retweets, replies, quotes, profileClicks, linkClicks. Note: this is a per-day rollup under subject=posts, distinct from the tweet-level aggregate ''engagement'' returned by subject=tweet on the /aggregation endpoint (used by DataStudio)</li>
</ul>'
required: true
schema:
type: string
- name: from
in: query
description: From Date and time ISO 8601 format. e.g. 2021-01-01T10:00:00+01:00
required: true
schema:
type: string
- name: to
in: query
description: From Date and time in ISO 8601 format. e.g. 2021-09-10T03:30:00+01:00
required: true
schema:
type: string
- name: timezone
in: query
description: (Optional) The timezone used for the date range to search. ('Europe/Madrid')
required: false
schema:
type: string
- name: subject
in: query
description: 'Is a filter when we retrieve data. Some examples: ''posts'', ''reels'', ''account''. Each network defines its own ''subjects''. Mandatory for Instagram, where the valid values are: account, posts, reels, stories, competitors, collabs. For breakdowns the possible subjects are: media_product_type, follow_type and contact_button_type'
required: false
schema:
type: string
- name: scope
in: query
description: 'Is a second filter. Some examples: ''viewed'', ''published''. It is used for Youtube and for Instagram metrics breakdown, for the breakdowns the possible values are: BOOK_NOW, CALL, DIRECTION, EMAIL, INSTANT_EXPERIENCE, TEXT, UNDEFINED, FOLLOWER, NON_FOLLOWER, UNKNOWN, AD, CAROUSEL_CONTAINER, POST, REEL, STORY'
required: false
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/JsonOkListResponseTimelineSeries'
components:
schemas:
TimelineSeries:
type: object
properties:
metric:
type: string
values:
type: array
items:
$ref: '#/components/schemas/SeriesValue'
aggregate:
$ref: '#/components/schemas/TimelineAggregate'
SeriesValue:
type: object
properties:
dateTime:
type: string
format: date-time
value:
type: number
format: double
TimelineAggregate:
type: object
properties:
aggregation:
type: string
value:
type: number
format: double
JsonOkResponseDouble:
type: object
properties:
metadata:
type: object
page:
$ref: '#/components/schemas/JsonPaging'
data:
type: number
format: double
JsonOkListResponseCampaign:
type: object
properties:
metadata:
type: object
page:
$ref: '#/components/schemas/JsonPaging'
data:
type: array
items:
$ref: '#/components/schemas/Campaign'
JsonOkListResponseTimelineSeries:
type: object
properties:
metadata:
type: object
page:
$ref: '#/components/schemas/JsonPaging'
data:
type: array
items:
$ref: '#/components/schemas/TimelineSeries'
Campaign:
type: object
properties:
network:
type: string
providerCampaignId:
type: string
name:
type: string
status:
type: string
enum:
- ACTIVE
- PAUSED
- REMOVED
objective:
type: string
created:
$ref: '#/components/schemas/DateTimeInfo'
updated:
$ref: '#/components/schemas/DateTimeInfo'
start:
$ref: '#/components/schemas/DateTimeInfo'
stop:
$ref: '#/components/schemas/DateTimeInfo'
dailyBudget:
type: number
format: double
lifetimeBudget:
type: number
format: double
currency:
type: string
biddingStrategyType:
type: string
metrics:
type: object
additionalProperties:
type: object
BrandSummaryPost:
type: object
properties:
id:
type: string
network:
type: string
networkConnection:
type: string
text:
type: string
link:
type: string
picture:
type: string
publicationDate:
$ref: '#/components/schemas/DateTimeInfo'
type:
type: string
metrics:
type: object
additionalProperties:
type: object
JsonOkListResponseDistributionItem:
type: object
properties:
metadata:
type: object
page:
$ref: '#/components/schemas/JsonPaging'
data:
type: array
items:
$ref: '#/components/schemas/DistributionItem'
JsonPaging:
type: object
properties:
next:
type: string
DistributionItem:
type: object
properties:
key:
type: string
value:
type: number
format: double
JsonOkListResponseHashtag:
type: object
properties:
metadata:
type: object
page:
$ref: '#/components/schemas/JsonPaging'
data:
type: array
items:
$ref: '#/components/schemas/Hashtag'
JsonOkListResponseBrandSummaryPost:
type: object
properties:
metadata:
type: object
page:
$ref: '#/components/schemas/JsonPaging'
data:
type: array
items:
$ref: '#/components/schemas/BrandSummaryPost'
DateTimeInfo:
required:
- dateTime
type: object
properties:
dateTime:
type: string
description: 'Local Date-time represented with a certain timezone '
timezone:
type: string
description: Timezone applied to the datetime
Hashtag:
type: object
properties:
name:
type: string
postsCount:
type: integer
format: int64