Four ways to export Facebook ads data from Meta, the limits of each, and when to share a report instead of a file.
You can export Facebook ads data four ways: from the tables in Ads Manager, from a custom report in Meta Ads Reporting, from the Marketing API, or by pulling a report into a spreadsheet. For a one-off file, use Ads Manager or Ads Reporting. For a number you need every week, schedule a report or use the API.
The right method depends on three things: how often you need the data, how many ad accounts it covers, and whether the person receiving it has access to your ad account. This guide goes through each method, what it limits, and what to use when the goal is to share results instead of sending files.
Madgicx reports are shared by link or PDF, not sent as exports.
Short answer: pick a method
| You need | Use | The limit to know |
|---|---|---|
| A one-time file of one account's results | Export from Ads Manager or Ads Reporting | You repeat it by hand each time you need fresh numbers |
| The same report in your inbox every week | A scheduled report in Ads Reporting | Cross-account reports can't be scheduled for email |
| Data in your own database or script | The Marketing API (Ads Insights) | Needs an app, the ads_read permission and code |
| Data in a spreadsheet you build on | Export a file and import it, or call the API from your own script | Meta's own tools don't keep the sheet updated for you |
| Results a client or boss can read | A shared report instead of a file | A file goes stale the moment you send it |
Ads Manager table export
The quickest route is the table you already look at in Ads Manager. Set the date range, choose the columns and breakdowns you want, and use the export option on the table. You get what is on screen, which makes this the best method for a quick check or a file you will open once.
Before you export, check two settings that change what ends up in the file:
- Filters: by default, Meta's Had delivery filter shows only ads that were delivered with at least one impression. Ads that got no delivery in the date range are not in the table, so they are not in the file either.
- Breakdowns: Meta's breakdown categories are Level, Time, Demographics, Geography, Delivery and Actions, and you cannot combine two breakdowns from the same category. Age (under Delivery) with Day (under Time) works; two Demographics breakdowns do not.
Plan your breakdowns before you export. If you need the data cut two ways that Meta does not allow in one table, you need two exports.
Reporting export
For anything you will repeat, build a report in Meta Ads Reporting. According to Meta's guide to recurring reports, you open Ads Reporting from the main menu under Analyze and report, and you create a custom report from the Export dropdown, under the Export data header, with Create custom report.
The advantage is that the report is saved. You choose the columns and breakdowns once, and you can schedule it:
- Open the report in Ads Reporting.
- Use the link in the top-left corner under the report name to reach the schedule email option.
- Turn on the schedule email, add the subscriber and click apply.
- Click Save.
The report can be emailed to you or to someone else. You need administrator, advertiser or analyst access to the ad account linked to the report, and cross-account reports can't be scheduled for email. If you manage several ad accounts, that means one scheduled report per account.
The Marketing API
The Marketing API is the route for anyone who wants raw numbers in their own system. The Ads Insights API returns performance data for Meta ads, and you can read it at four levels: ad account, campaign, ad set and ad.
A request has three parts:
- Parameters, such as the time range and the attribution window (for example
date_preset=last_7d). - Fields, which are the metrics you want back (for example
clicks). - Breakdowns, such as
gender.
Three things to know before you start. You need an app and the ads_read permission. A plain GET request returns basic metrics for the ad object, typically for the past 30 days, so you must set the time range yourself if you want something else. And Meta's developer policies apply to any solution that includes Ads Insights data, so read the Meta Platform Terms and Developer Policies for the Marketing API before you build on it.
The API suits a developer or an analyst who is comfortable with scripts. It is more setup than an export, and it pays off when you want the same numbers on a schedule, in a warehouse, or next to data from other sources.
Excel and Sheets
Spreadsheets are where most people end up, so it helps to be clear about what Meta's tools do here. Meta's exports and reports give you a file to open in Excel or import into Google Sheets. They do not keep a sheet updated by themselves. To get a live sheet, you need your own script on top of the API or a third-party connector.
For lead ads, you have one more option. Meta says you can still download your leads data from Ads Manager or Meta Business Suite without a CRM integration, and you can connect a CRM so new leads appear in one place without downloading a CSV each time.
When you work with an exported file, a few habits save time later:
- Keep one tab per export and never edit the raw data. Do your math in a second tab.
- Write the date range and the filters in the file name, so you can tell two exports apart next month.
- Check that totals match Ads Manager before you build on the file.
- Record which attribution window the numbers used. Two exports with different windows will not match, and neither is wrong.
If you need clean data before you feed it into a spreadsheet or a model, see our guide to preparing ad data for AI.
Limits of each method
| Method | What it limits |
|---|---|
| Ads Manager table export | Only what is in the table: the date range, filters and columns on screen, with breakdowns from different categories only |
| Scheduled report in Ads Reporting | Emailed on a schedule, but not for cross-account reports, and only to people you add as subscribers |
| Marketing API | Needs an app, ads_read permission and code; default window is about 30 days |
| Lead ads download | Covers lead data only, not ad performance |
| Sending the file to someone | The way Meta lists to share a report without giving ad account access, and it is a snapshot |
One more limit sits behind all of these: conversions Meta can't attribute show up as "Uncategorized" when you break results down by conversion, and Meta says statistical modeling may fill in breakdowns when conversion data is missing or partial. If a breakdown does not add up to your total, that is a likely reason. Meta's breakdowns and metrics guide explains both.
FAQ
How do I export Facebook ads data?
Use the export option on a table in Ads Manager for a quick file, or create a custom report in Meta Ads Reporting under the Export dropdown. For ongoing needs, schedule the report or use the Marketing API.
Can I schedule a Facebook ads report to email me?
Yes. Open a report in Ads Reporting, turn on the schedule email, add the subscriber, click apply and save. You need administrator, advertiser or analyst access to the ad account, and cross-account reports can't be scheduled for email.
How do I get Facebook ads data through the API?
Use the Ads Insights API. You need an app and the ads_read permission, then you request insights at the ad account, campaign, ad set or ad level with parameters, fields and breakdowns. By default it returns basic metrics, typically from the past 30 days.
Why can't I combine two breakdowns in one export?
Meta does not allow two breakdowns from the same category, such as two under Demographics. You can combine breakdowns from different categories, such as Age (under Delivery) and Day (under Time).
How can I share Facebook ads results without giving access to my ad account?
Meta says to export the report and send the file. A shared report by link or PDF, such as Madgicx's One-Click Report, avoids sending a new file each time.
Does Madgicx export to Google Sheets?
No. Madgicx shares reports by link or PDF and answers questions about your data in Copilot, and its MCP connects your data to an AI assistant.





