Marketing teams often need to analyze their online advertising data in conjunction with other data to generate actionable insights. This may be sales data or data related to other marketing channels. To do this, all the data needs to be in a single database or data warehouse for easy access and analysis.

Facebook Ads is a widely used online advertising platform that provides useful data about your online advertising efforts. You may often need to transfer this data to a database or data warehouse for easy access and analysis. If you are looking for simple ways to move your Facebook Ads data, you have landed at the right place. In this post, you will learn two methods to move data from Facebook Ads to PostgreSQL, among the most popular relational databases. 

Understanding Facebook Ads

Facebook Ads
Image Source: AmoCRM

Facebook Ads is an online advertising platform that allows companies to create and manage engaging ad campaigns that run on Facebook. Businesses can reach their online audience through highly targeted ads in various media formats (images, videos, carousels, and more).  This capability combined with Facebook’s vast network has made it one of the most popular platforms for advertising online.

Facebook Ads’ Insights API is an exceptional tool that provides significant data that is of immense use when properly extracted, transformed, and loaded to an appropriate interface. The data and insights provided through this API need to be fine-tuned to be made sense of. This data needs to be strategically mapped to various tables in a database system. 

Understanding PostgreSQL

Image Source: Cyclonis

PostgreSQL is a popular object-relational database management system that offers enterprise-grade features with a strong focus on extensibility. It runs on all major operating systems such as Unix and Windows. It is open-source, fully ACID-compliant, and fully supports foreign keys, joins, etc., in multiple languages. It is available in cloud-based deployments by most major cloud providers.

Loading data from Facebook Ads to PostgreSQL will give you the power of SQL to slice and dice your advertising data to unearth actionable insights.


  1. An active Facebook Ads account.
  2. A database has to be set up in PostgreSQL.
Solve your data integration problems with Hevo’s reliable, no-code, automated pipelines with 150+ connectors.
Get your free trial right away!

Methods to Load Data from Facebook Ads to PostgreSQL

Method 1: Writing custom scripts to manually load data from Facebook Ads to PostgreSQL database 

Prerequisites for this method:

  1. Install the PostgreSQL instance in your local system. To do this, follow the steps in this link:
  2. Install the latest Python programming language. Link for the tutorial:
  3. Install an Editor to write the script that will perform the required operations (Optional). It can be any Editor or even a Python Development IDE.

Additional points to remember:

  1. Facebook Ads Insights can be called through PHP or directly through CURL as well, though Python has the most intensive library to manipulate the data.
  2. A Facebook developer account needs to be registered and an Ad campaign should be running to receive the data from the API.

Once all these points are in place, you need to follow the four steps mentioned below to load data from Facebook Ads to PostgreSQL database:

  1. Get a Facebook developer account
  2. Retrieve Ad campaign details
  3. Create a PostgreSQL table
  4. Map Facebook Ads data to PostgreSQL table

Step 1: Get a Facebook developer account

To retrieve the data from the Facebook Ads Insights, you will need a Facebook developer account registered and then follow the Facebook API documentation to set up the account. These details can be found in this link:

Step 2: Retrieve Ad campaign details

After the account is set up and you have your Ad campaign running, you need to get the details and insights of the campaign such as the impressions, click-through-rates, etc. To retrieve these details and many more, you need to write the following code in Python:

from facebook_business.objects import AdCampaign

campaign = AdCampaign('<AD_CAMPAIGN_ID>')
params = {    
  'date_preset': AdCampaign.Preset.last_7_days,
insights = campaign.get_insights(params=params)

As an output of this code, you should receive the data in JSON format. The data might look like this in the API call.

Facebook Ads to PostgreSQL: Output of Ad campaign details in JSON format

Step 3: Create a PostgreSQL table

The data from the Ad Insights API can then be mapped to a table in PostgreSQL instance, but before that, the table should be created with appropriate table names for the data to be stored.

The table and database can be developed from the Python script itself. This link will take you through the process of setting it up and also create the table with corresponding columns required from the API insights:

Step 4: Map Facebook Ads data to PostgreSQL table

After the connection to PostgreSQL is established and the table is created, the Ad Insights data can then be inserted into the table. The following  Python script can be used to do this. This script will help you to do the following:

  • Connect to the PostgreSQL database
  • Create a new Db object by which the data can be manipulated
  • Insert the SQL string to the PostgreSQL database
  • Take into account appropriate exceptions
# remove the last comma and end SQL with a semicolon
values_str = values_str[:-2] + ";"

# concatenate the SQL string
table_name = "your_tablename"
sql_string = "INSERT INTO %s (%s)nVALUES %s" % (    

# connect to the PostgreSQL DB
  # declare a new PostgreSQL connection object    
  conn = connect(        
    dbname = "",        
    user = "",        
    host = "",        
    password = "",        
    # attempt to connect for 3 seconds then raise exception        
    connect_timeout = 3    

  cur = conn.cursor()    
  print ("ncreated cursor object:", cur)

except (Exception, Error) as err:    
  print ("npsycopg2 connect error:", err)    
  conn = None    
  cur = None

# Insert the Sql string to the db

# only attempt to execute SQL if cursor is valid
if cur != None:
      cur.execute( sql_string )        
      print ('nfinished INSERT INTO execution')

  except (Exception, Error) as error:        
      print("nexecute_sql() error:", error)        

  # close the cursor and connection    

This code successfully loads the Facebook Ads Insights data to PostgreSQL database. 

Facebook Ads to PostgreSQL: Output of Facebook Ads data in PostgreSQL table

The above snapshot is an illustrative output of this approach. The Table columns of the PostgreSQL database can be changed as required and the columns can be any of the keys from the JSON data received from the Facebook Ads API. (Example: JSON data shown above)

Limitations of Manual Method to Move Data from Facebook Ads to PostgreSQL

  1. Effort intensive: Using custom code to move data from Facebook Ads to PostgreSQL database requires you to learn and bring together many different technologies. Given the learning curve involved, your data projects’ timelines can be impacted.
  2. Not real-time: This process does not help you bring data in real-time. You would have to develop a cron job and write extra code to bring data in real-time.
  3. No data transformation: The data cannot be transformed appropriately using this method. For example, you may need to standardize time zones in order to perform efficient analysis. This approach does not cover that.
  4. Constant monitoring & maintenance: In case there are some changes in the API at Facebook’s end, it will result in irretrievable data loss. Hence, this approach requires constant monitoring and maintenance of the systems involved.

Method 2: Transfer data from Facebook Ads to PostgreSQL with Hevo

Hevo Data, a No-code Data Pipeline can help you move data from Facebook Ads (among 150+ sources) swiftly to PostgreSQL for free. Hevo is fully managed and it completely automates the process of monitoring and replicating the changes on the secondary database rather than making the user write the code repeatedly. Its fault-tolerant architecture ensures that the data is handled in a secure, consistent manner with zero data loss. Hevo allows you to not only export & load data but also transform & enrich your data & make it analysis-ready in a jiff.

Now you can transfer data from Facebook Ads to PostgreSQL for Free using Hevo!

Hevo focuses on two simple steps to move your data from Facebook Ads to PostgreSQL:

Configure Source: Connect Hevo Data with Facebook Ads by providing a unique name for your Pipeline, along with details about your authorized Facebook Ads account. You can also choose the historical sync duration for your Facebook Ads data.

Configure Facebook Ads Source
Image Source: Self

Integrate Data: Complete Facebook Ads to PostgreSQL migration by providing your destination name, account name, region of your account, database username and password, database and schema name, and the Data Warehouse name.

Configure PostgreSQL
Image Source: Self
Get Started with Hevo for free

Check Out What Makes Hevo Amazing:

  • Secure: Hevo has a fault-tolerant architecture that ensures that the data is handled in a secure, consistent manner with zero data loss.
  • Schema Management: Hevo takes away the tedious task of schema management & automatically detects schema of incoming data and maps it to the destination schema.
  • Minimal Learning: Hevo, with its simple and interactive UI, is extremely simple for new customers to work on and perform operations.
  • Hevo Is Built To Scale: As the number of sources and the volume of your data grows, Hevo scales horizontally, handling millions of records per minute with very little latency.
  • Incremental Data Load: Hevo allows the transfer of data that has been modified in real-time. This ensures efficient utilization of bandwidth on both ends.
  • Live Support: The Hevo team is available round the clock to extend exceptional support to its customers through chat, email, and support calls.
  • Live Monitoring: Hevo allows you to monitor the data flow and check where your data is at a particular point in time.
Sign up here for a 14-day Free Trial!


PostgreSQL is a very versatile RDBMS that can be used to aggregate structured data to derive useful insights and Facebook Ads is a source of useful data that can be managed efficiently on PostgreSQL database. Depending on the particular use case and data requirement, you may choose to replicate data from Facebooks Ads to PostgreSQL using one of the approaches detailed above. You may build a custom code-based data pipeline or use an automated ETL tool like Hevo to quickly start moving data for analysis.

Visit our Website to Explore Hevo

Want to take Hevo for a spin? Sign Up for a 14-day free trial and experience the feature-rich Hevo suite first hand. Have a look at our unbeatable pricing, which will help you choose the right plan for you. You can now transfer data from sources like Facebook Ads to PostgreSQL for Free using Hevo!

What are your thoughts on moving data from Facebook Ads to PostgreSQL? Let us know in the comments.

Freelance Technical Content Writer, Hevo Data

With a focus on freelance writing, Sai delves into the realms of data integration and data analysis, offering informative and comprehensive content tailored to business solving problems related to data management.

No-code Data Pipeline for PostgreSQL