I can retrieve insights for posts made directly on Instagram, but I face an issue with combined insights for posts shared on both Instagram and Facebook.

Here's the scenario: When I post a reel on Instagram and enable the option to automatically share it on Facebook, the combined views shown on Instagram reflect views from both platforms. For example, if the reel generates 10,000 views on Instagram and an additional 5,000 views on Facebook, Instagram's app displays a total of 15,000 views. However, when I call the API (GET /{ig-media-id}/insights), it only returns the 10,000 views from Instagram, excluding the 5,000 views from Facebook.

I've spent a considerable amount of time trying to figure out how to obtain the combined insights (similar to the view shown in Instagram's app) through the API but have had no luck. I am aware that this is possible since I've seen analytics platforms display the combined numbers in their reports.

What I've Tried:

  1. Using the Instagram Graph API endpoint GET /{ig-media-id}/insights to retrieve insights, but it only returns Instagram-specific data.
  2. Searching through Facebook Graph API documentation for a way to aggregate insights from both platforms.
  3. Experimenting with various metrics and parameters to ensure no data is left out.
  4. Attempting to get insights from the Facebook page itself, but these always return empty since the page isn't being used directly.

Is there a specific API endpoint or method to retrieve the combined insights for Instagram posts shared on both Instagram and Facebook? How can I get the same combined views data that Instagram displays within its app?

I'm using Meta Graph Api Explorer to test the Meta Ads API.

And the results look like this:

Request For First Page

When I add the after token into the request as a parameter, it doesn't return the token for the previous page:

Request For Second Page

here's the URL endpoint:

ads_archive?ad_reached_countries=['GE']&search_terms="A"&after= c2NyYXBpbmdfY3Vyc29yOk1UY3pNek0yTURRd01EbzRNakUyTnpZAMU9UTXpNVFl6T1RNPQZDZD 

The problem is that there is a significant discrepancy between the spending or amount displayed on the transparency page UI and the information provided by BigQuery. For example, in the specific case where I send the screenshot (Ad: https://adstransparency.google.com/advertiser/AR09575383261467639809/creative/CR03209405000446902273?region=MX&topic=political), it shows a spending range of 6k - 7k MXN, which approximates to 375 USD (since BigQuery does not yet support MXN). However, BigQuery reports a maximum spend (spend_range_max_usd) of 100 USD. Below is the specific response for this ad.

Row, Advertiser, Advertiser_Page, Advertiser_URL, Number_of_Political_Ads, gender_targeting, geo_targeting_included, spend_range_min_usd, spend_range_max_usd,

2
PARTIDO ACCIÓN NACIONAL https://adstransparency.google.com/advertiser/AR09575383261467639809?region=MX&political= https://adstransparency.google.com/advertiser/AR09575383261467639809/creative/CR03209405000446902273?region=MX&topic=political 1 Male, Female, Unknown gender Mexico 0 100

Furthermore, this issue is not limited to this particular ad. All spend responses from BigQuery show the same amount, 100 USD, or the relative to the currency.

I was expecting at least a reasonable currency exchange, or perhaps I'm missing something which is causing all the values to return 100 USD.

I wonder if anyone else has had a similar issue.

#standardSQL SELECT   CS.advertiser_name AS Advertiser,   CONCAT("https://adstransparency.google.com/advertiser/", CS.advertiser_id, "?region=MX&political=") AS Advertiser_Page,   CONCAT("https://adstransparency.google.com/advertiser/", CS.advertiser_id, "/creative/", CS.ad_id, "?region=MX&topic=political") AS Advertiser_Page,   COUNT(1) AS Number_of_Political_Ads,   CS.gender_targeting,   CS.geo_targeting_included,   spend_range_min_usd,   spend_range_max_usd, FROM   bigquery-public-data.google_political_ads.creative_stats AS CS WHERE   REGEXP_CONTAINS(CS.gender_targeting, r"Female")   AND REGEXP_CONTAINS(CS.regions, r"MX") GROUP BY   1,   2,   3,   5,   6,   7,   8 ORDER BY   spend_range_max_usd DESC; 

I leave here the diferent data you can get.

[   {     "name": "ad_id",     "mode": "NULLABLE",     "type": "STRING",     "description": "Unique id for a specific election ad.",     "fields": []   },   {     "name": "ad_url",     "mode": "NULLABLE",     "type": "STRING",     "description": "URL to view the election ad in the election Advertising on Google report.",     "fields": []   },   {     "name": "ad_type",     "mode": "NULLABLE",     "type": "STRING",     "description": "The type of the ad. Can be TEXT VIDEO or IMAGE.",     "fields": []   },   {     "name": "regions",     "mode": "NULLABLE",     "type": "STRING",     "description": "The regions that this ad is verified for or were served in.",     "fields": []   },   {     "name": "advertiser_id",     "mode": "NULLABLE",     "type": "STRING",     "description": "ID of the advertiser who purchased the ad.",     "fields": []   },   {     "name": "advertiser_name",     "mode": "NULLABLE",     "type": "STRING",     "description": "Name of advertiser.",     "fields": []   },   {     "name": "ad_campaigns_list",     "mode": "NULLABLE",     "type": "STRING",     "description": "IDs of all election ad campaigns that included the ad.",     "fields": []   },   {     "name": "date_range_start",     "mode": "NULLABLE",     "type": "DATE",     "description": "First day a election ad ran and had an impression.",     "fields": []   },   {     "name": "date_range_end",     "mode": "NULLABLE",     "type": "DATE",     "description": "Most recent day a election ad ran and had an impression.",     "fields": []   },   {     "name": "num_of_days",     "mode": "NULLABLE",     "type": "INTEGER",     "description": "Total number of days a election ad ran and had an impression.",     "fields": []   },   {     "name": "impressions",     "mode": "NULLABLE",     "type": "STRING",     "description": "Number of impressions for the election ad. Impressions are grouped into several buckets ≤ 10k 10k-100k 100k-1M 1M-10M > 10M.",     "fields": []   },   {     "name": "first_served_timestamp",     "mode": "NULLABLE",     "type": "TIMESTAMP",     "description": "The timestamp of the earliest impression for this ad.",     "fields": []   },   {     "name": "last_served_timestamp",     "mode": "NULLABLE",     "type": "TIMESTAMP",     "description": "The timestamp of the most recent impression for this ad.",     "fields": []   },   {     "name": "age_targeting",     "mode": "NULLABLE",     "type": "STRING",     "description": "Age ranges included in the ad's targeting",     "fields": []   },   {     "name": "gender_targeting",     "mode": "NULLABLE",     "type": "STRING",     "description": "Genders included in the ad's targeting.",     "fields": []   },   {     "name": "geo_targeting_included",     "mode": "NULLABLE",     "type": "STRING",     "description": "Geographic locations included in the ad's targeting.",     "fields": []   },   {     "name": "geo_targeting_excluded",     "mode": "NULLABLE",     "type": "STRING",     "description": "Geographic locations excluded in the ad's targeting.",     "fields": []   },   {     "name": "spend_range_min_usd",     "mode": "NULLABLE",     "type": "INTEGER",     "description": "Lower bound of the amount in USD spent by the advertiser on the election ad.",     "fields": []   },   {     "name": "spend_range_max_usd",     "mode": "NULLABLE",     "type": "INTEGER",     "description": "Upper bound of the amount in USD spent by the advertiser on the election ad.",     "fields": []   },   {     "name": "spend_range_min_eur",     "mode": "NULLABLE",     "type": "INTEGER",     "description": "Lower bound of the amount in EUR spent by the advertiser on the election ad.",     "fields": []   },   {     "name": "spend_range_max_eur",     "mode": "NULLABLE",     "type": "INTEGER",     "description": "Upper bound of the amount in EUR spent by the advertiser on the election ad.",     "fields": []   },   {     "name": "spend_range_min_inr",     "mode": "NULLABLE",     "type": "INTEGER",     "description": "Lower bound of the amount in INR spent by the advertiser on the election ad.",     "fields": []   },   {     "name": "spend_range_max_inr",     "mode": "NULLABLE",     "type": "INTEGER",     "description": "Upper bound of the amount in INR spent by the advertiser on the election ad.",     "fields": []   },   {     "name": "spend_range_min_bgn",     "mode": "NULLABLE",     "type": "INTEGER",     "description": "Lower bound of the amount in BGN spent by the advertiser on the election ad.",     "fields": []   },   {     "name": "spend_range_max_bgn",     "mode": "NULLABLE",     "type": "INTEGER",     "description": "Upper bound of the amount in BGN spent by the advertiser on the election ad.",     "fields": []   },   {     "name": "spend_range_min_czk",     "mode": "NULLABLE",     "type": "INTEGER",     "description": "Lower bound of the amount in CZK spent by the advertiser on the election ad.",     "fields": []   },   {     "name": "spend_range_max_czk",     "mode": "NULLABLE",     "type": "INTEGER",     "description": "Upper bound of the amount in CZK spent by the advertiser on the election ad.",     "fields": []   },   {     "name": "spend_range_min_dkk",     "mode": "NULLABLE",     "type": "INTEGER",     "description": "Lower bound of the amount in DKK spent by the advertiser on the election ad.",     "fields": []   },   {     "name": "spend_range_max_dkk",     "mode": "NULLABLE",     "type": "INTEGER",     "description": "Upper bound of the amount in DKK spent by the advertiser on the election ad.",     "fields": []   },   {     "name": "spend_range_min_huf",     "mode": "NULLABLE",     "type": "INTEGER",     "description": "Lower bound of the amount in HUF spent by the advertiser on the election ad.",     "fields": []   },   {     "name": "spend_range_max_huf",     "mode": "NULLABLE",     "type": "INTEGER",     "description": "Upper bound of the amount in HUF spent by the advertiser on the election ad.",     "fields": []   },   {     "name": "spend_range_min_pln",     "mode": "NULLABLE",     "type": "INTEGER",     "description": "Lower bound of the amount in PLN spent by the advertiser on the election ad.",     "fields": []   },   {     "name": "spend_range_max_pln",     "mode": "NULLABLE",     "type": "INTEGER",     "description": "Upper bound of the amount in PLN spent by the advertiser on the election ad.",     "fields": []   },   {     "name": "spend_range_min_ron",     "mode": "NULLABLE",     "type": "INTEGER",     "description": "Lower bound of the amount in RON spent by the advertiser on the election ad.",     "fields": []   },   {     "name": "spend_range_max_ron",     "mode": "NULLABLE",     "type": "INTEGER",     "description": "Upper bound of the amount in RON spent by the advertiser on the election ad.",     "fields": []   },   {     "name": "spend_range_min_sek",     "mode": "NULLABLE",     "type": "INTEGER",     "description": "Lower bound of the amount in SEK spent by the advertiser on the election ad.",     "fields": []   },   {     "name": "spend_range_max_sek",     "mode": "NULLABLE",     "type": "INTEGER",     "description": "Upper bound of the amount in SEK spent by the advertiser on the election ad.",     "fields": []   },   {     "name": "spend_range_min_gbp",     "mode": "NULLABLE",     "type": "INTEGER",     "description": "Lower bound of the amount in GBP spent by the advertiser on the election ad.",     "fields": []   },   {     "name": "spend_range_max_gbp",     "mode": "NULLABLE",     "type": "INTEGER",     "description": "Upper bound of the amount in GBP spent by the advertiser on the election ad.",     "fields": []   },   {     "name": "spend_range_min_nzd",     "mode": "NULLABLE",     "type": "INTEGER",     "description": "Lower bound of the amount in NZD spent by the advertiser on the election ad.",     "fields": []   },   {     "name": "spend_range_max_nzd",     "mode": "NULLABLE",     "type": "INTEGER",     "description": "Upper bound of the amount in NZD spent by the advertiser on the election ad.",     "fields": []   },   {     "name": "spend_range_min_ils",     "mode": "NULLABLE",     "type": "INTEGER",     "description": "Lower bound of the amount in ILS spent by the advertiser on the election ad.",     "fields": []   },   {     "name": "spend_range_max_ils",     "mode": "NULLABLE",     "type": "INTEGER",     "description": "Upper bound of the amount in ILS spent by the advertiser on the election ad.",     "fields": []   },   {     "name": "spend_range_min_aud",     "mode": "NULLABLE",     "type": "INTEGER",     "description": "Lower bound of the amount in AUD spent by the advertiser on the election ad.",     "fields": []   },   {     "name": "spend_range_max_aud",     "mode": "NULLABLE",     "type": "INTEGER",     "description": "Upper bound of the amount in AUD spent by the advertiser on the election ad.",     "fields": []   },   {     "name": "spend_range_min_twd",     "mode": "NULLABLE",     "type": "INTEGER",     "description": "Lower bound of the amount in TWD spent by the advertiser on the election ad.",     "fields": []   },   {     "name": "spend_range_max_twd",     "mode": "NULLABLE",     "type": "INTEGER",     "description": "Upper bound of the amount in TWD spent by the advertiser on the election ad.",     "fields": []   },   {     "name": "spend_range_min_brl",     "mode": "NULLABLE",     "type": "INTEGER",     "description": "Lower bound of the amount in BRL spent by the advertiser on the election ad.",     "fields": []   },   {     "name": "spend_range_max_brl",     "mode": "NULLABLE",     "type": "INTEGER",     "description": "Upper bound of the amount in BRL spent by the advertiser on the election ad.",     "fields": []   },   {     "name": "spend_range_min_ars",     "mode": "NULLABLE",     "type": "INTEGER",     "description": "Lower bound of the amount in ARS spent by the advertiser on the election ad.",     "fields": []   },   {     "name": "spend_range_max_ars",     "mode": "NULLABLE",     "type": "INTEGER",     "description": "Upper bound of the amount in ARS spent by the advertiser on the election ad.",     "fields": []   },   {     "name": "spend_range_min_zar",     "mode": "NULLABLE",     "type": "INTEGER",     "description": "Lower bound of the amount in ZAR spent by the advertiser on the election ad.",     "fields": []   },   {     "name": "spend_range_max_zar",     "mode": "NULLABLE",     "type": "INTEGER",     "description": "Upper bound of the amount in ZAR spent by the advertiser on the election ad.",     "fields": []   },   {     "name": "spend_range_min_clp",     "mode": "NULLABLE",     "type": "INTEGER",     "description": "Lower bound of the amount in CLP spent by the advertiser on the election ad.",     "fields": []   },   {     "name": "spend_range_max_clp",     "mode": "NULLABLE",     "type": "INTEGER",     "description": "Upper bound of the amount in CLP spent by the advertiser on the election ad.",     "fields": []   } ]``` Thanks in advance! 

I'm creating an app to use the Facebook Graph API to load posts from an Instagram Business Profile onto a website. Following Facebook's OAuth guidelines, it opens a dialog where you select your account, select your businesses, select your pages, and then grant all the permissions to the app. (I may have gotten those steps wrong, either way it's not simple.) Some of our clients use Flockler for their Instagram feeds, and connecting their account to the app only requires a single click on a "Continue as YOUR_NAME" button. After clicking the button everything else takes place within Flockler.

How are they doing that? The only info I can find on Meta for Developers is the same method I'm using: https://developers.facebook.com/docs/facebook-login/guides/advanced/manual-flow/ The URL that Flockler uses for auth is facebook.com/privacy/consent/gdp/ and searching for the terms in the URL isn't turning up anything either.

I'm using Airbyte to extract data from Facebook Marketing. I need to add a custom field to the API requests to better manage the data extraction process. The main problem is that the returned campaigns data does not include a way to map the adsets to the campaigns, so i want to add the "adsets" field to the campaigns request to then map them.

I have reviewed Airbyte documentation and forums but couldn't find clear instructions. I have also tried to use the Custom Insights but no luck.