Use time range in Ad Insights of Facebook Marketing API

I can't comment on the approach you're using as I have not used it myself. However, here is an alternative approach which I have used with success:

https://graph.facebook.com/v2.5/act_xyz/insights?level=<yourLevel>&fields=ad_id,ad_name,impressions&time_range[since]=2016-02-15&time_range[until]=2016-02-16&limit=25

where <yourLevel> can be one of: ad, adset, campaign

Also note that I am using straight up http requests in java which is why I show you the request itself. Hopefully you can extrapolate to your own solution.


Using the same endpoint you've shown in your question

act_0123456789/ads?fields=insights{ad_id,ad_name,impressions}

The way to specify a time range would be

act_0123456789/ads?fields=insights.time_range({"since":"2017-08-07","until":"2017-08-14"}){ad_id,ad_name,impressions}

(of course, those two dates are provided just as an example)


Easiest way of doing this is

act_0123456789?fields=ads{insights.time_range({"since":"2019-03-03","until":"2019-03-03"}).time_increment(1){impressions}}

Remove .time_increment(1) if you don't want day by day data

you can use {} for subfields like

 act_0123456789?fields=campaigns{ads{name,insights,adcreatives{image_url}}}

you can use . and () for parameters like; always make sure you use you use fields only after parameters like this order .(){}

act_0123456789?fields=campaigns.limit(1).time_range({"since":"2019-03-03","until":"2019-03-03"}).time_increment(1).breakdowns(country){ads{name,insights.time_range({"since":"2019-03-03","until":"2019-03-03"}).time_increment(1).breakdowns(country),adcreatives{image_url}}}