Get an analytics dashboard
Everything an analytics dashboard needs in one call: window totals, follower growth, a per-day series, top posts, recent posts and, optionally, the same figures for the previous period.
Daily and total metrics use received attribution: each day holds the engagement that arrived that day, on any post, so totals is always the sum of daily.
topPosts and recentPosts list posts published in the window with their lifetime metrics. A post cross-posted to several platforms appears once per platform.
All dates are UTC days. Requires the Analytics add-on.
Authorization
bearerAuth API key authentication: send your Zernio API key in the Authorization header, prefixed with Bearer.
In: header
Query Parameters
Profile ID, or "all" for every profile you can access.
"all"Platform to cover (e.g. "instagram"), or "all".
"all"First day of the window (YYYY-MM-DD, inclusive).
dateLast day of the window (YYYY-MM-DD, inclusive). May equal fromDate. The window covers at most 366 days.
dateSet to "previous_period" to also return previousTotals and previousFollowers for the window of the same length that ends the day before fromDate.
Value in
- "previous_period"
How many top posts to return, ranked by engagement (likes, comments, shares and saves, the same sum as daily engagement).
0 <= value <= 255How many of the most recently published posts to return.
0 <= value <= 2510Response Body
application/json
application/json
application/json
import Zernio from '@zernio/node';const zernio = new Zernio({ apiKey: process.env.ZERNIO_API_KEY });const { data } = await zernio.analytics.getAnalyticsDashboard({ query: { fromDate: '2026-09-01', toDate: '2026-09-30', },});console.log(data);{ "dateRange": { "fromDate": "2026-09-01", "toDate": "2026-09-02" }, "totals": { "impressions": 5400, "reach": 4100, "likes": 320, "comments": 41, "shares": 18, "saves": 25, "clicks": 60, "views": 2200, "engagementRate": 7.48 }, "followers": { "current": 12840, "gained": 96, "byAccount": [ { "accountId": "64e1f0a9c2b4d5e6f7a8b9c0", "platform": "instagram", "current": 12840, "gained": 96 } ] }, "daily": [ { "date": "2026-09-01", "impressions": 2900, "reach": 2200, "engagement": 210, "views": 1200, "followersGained": 0 }, { "date": "2026-09-02", "impressions": 2500, "reach": 1900, "engagement": 194, "views": 1000, "followersGained": 96 } ], "topPosts": [ { "postId": "65f1c0a9e2b4d5f6a7b8c9d0", "platform": "instagram", "publishedAt": "2026-09-01T15:00:00.000Z", "metrics": { "impressions": 3100, "reach": 2600, "likes": 210, "comments": 22, "shares": 9, "saves": 14, "clicks": 30, "views": 1500, "engagementRate": 8.23 } } ], "recentPosts": [], "dataAsOf": "2026-09-02T23:10:00.000Z"}Get Google Business Profile search keywords
Returns search keywords that triggered impressions for a Google Business Profile location. Data is aggregated monthly. Keywords below a minimum impression threshold set by Google are excluded. Max 18 months of historical data. Requires the Analytics add-on.
Get Facebook Page demographics
Returns the follower breakdown of a connected Facebook Page by country and/or city, from Meta's latest daily snapshot. Country keys are ISO 3166-1 alpha-2 codes; city keys are "City, Region, Country" strings as Meta returns them. Meta removed age and gender demographics for Pages (page_fans_gender_age) on November 15 2025 with no replacement, so only country and city are available. Meta reports small counts at a privacy floor, so the long tail can show identical low values. Requires the Analytics add-on.