v2

latestOpenAPI 3.1.02026-08-075421692.0 MB
Analytics

Get Facebook Page insights

Returns page-level Facebook insights (media views, views, post engagements, video metrics, follower counts). Response shape matches /v1/analytics/instagram/account-insights so the same client handling works across platforms.

Metric names track the current (post-November 2025) Meta Graph API. The legacy page_impressions / page_fans / page_fan_adds / page_fan_removes metrics were deprecated by Meta on November 15, 2025 and are NOT accepted by this endpoint. Use the replacements below. Because Meta did not provide direct adds/removes replacements, Zernio synthesizes followers_gained / followers_lost from the daily follower snapshotter.

Max 89 days, defaults to last 30 days. Requires the Analytics add-on.

get/v1/analytics/facebook/page-insights

Query parameters

accountIdstring required

The Zernio SocialAccount ID for the connected Facebook Page.

metricsstring

Comma-separated list of metrics. Defaults to "page_media_view,page_post_engagements,page_follows,followers_gained,followers_lost".

Live Meta metrics (current names, post-Nov-2025):

  • page_media_view (replaces deprecated page_impressions)
  • page_views_total
  • page_post_engagements
  • page_video_views
  • page_video_view_time
  • page_follows (replaces deprecated page_fans)

Zernio-synthesized from daily follower snapshots (filling the Nov-2025 gap left by the page_fan_adds / page_fan_removes deprecation):

  • followers_gained
  • followers_lost

Monetization (opt-in, not in the defaults):

  • content_monetization_earnings
  • monetization_approximate_earnings

Each monetization metric is fetched with its own separate Graph call, so requesting both adds two calls. Values are approximate and Meta restates them after the fact.

content_monetization_earnings returns an object per day and always carries unit "micro_amount" plus an ISO 4217 "currency". monetization_approximate_earnings returns a bare number per day, so its unit is always "unspecified" and its "currency" is always null. The two are on different scales and are not comparable to each other. Both keep their daily "values" on every metricType and are never rescaled by Zernio.

Earnings here are Page-level daily buckets and "total" is their sum. Meta does not document whether a bucket carries that day's earnings or a running total, and every Page measured so far earned exactly 0, so reconcile "total" against the Page's own Meta export before relying on it; the daily "values" are always returned for that purpose. Per-post lifetime earnings are served by GET /v1/analytics/facebook/post-earnings.

A Page that is not enrolled in monetization, or that earned nothing, returns normal daily buckets of 0 in "metrics": Meta does not distinguish the two, so a 0 total here does NOT mean the Page is enrolled. "unavailableMetrics" covers the narrower case where Meta returned no bucket for the metric at all ("no_data") or rejected the request outright, and the metric is then omitted from "metrics" rather than reported as 0.

sincestring date

Start date (YYYY-MM-DD). Defaults to 30 days ago.

untilstring date

End date (YYYY-MM-DD). Defaults to today.

metricType'time_series' | 'total_value'

"total_value" (default) returns aggregated totals only. "time_series" returns daily values in the "values" array.

Response

Page insights data

successboolean
accountIdstring

The Zernio SocialAccount ID

platform'facebook' | 'instagram' | 'youtube' | 'linkedin' | 'tiktok'

Platform that served this response.

metricType'time_series' | 'total_value'
breakdownstring

Breakdown dimension used (only present when breakdown was requested)

metricsobject

Object keyed by metric name. For time_series: each metric has "total" (number) and "values" (array of {date, value}). For total_value: each metric has "total" (number) and optionally "breakdowns" (array of {dimension, value}).

Monetary metrics additionally carry "unit" and "currency". Zernio never rescales money: "total" and every "values[].value" are the platform's raw numbers in the stated unit. Monetary metrics also keep "values" on metricType=total_value, because their "total" is the sum of the daily buckets the platform returned over the range: keep the series so you can reconcile that sum against the platform's own reporting before invoicing on it. A metric that could not be served is absent from this object and listed in "unavailableMetrics" instead, so an unavailable metric is never reported as a zero.

dataDelaystring

Example response

{
  "success": true,
  "dataDelay": "Data may be delayed up to 48 hours"
}