Instagram Ads

Communicate with your existing customers and to reach new ones. Learn more about Instagram\'s ads products and achieve your advertising goals.

You need a Instagram account to create and run ads on Instagram, see Ad Account. Your Instagram account needs to have a profile image and cannot be a Private Account. Three ways to make an Instagram account for ad:

  • Business Manager: If you have an Instagram account or create an account, use Business Manager to claim the ownership of that account, then use the Business Manager or Facebook Marketing APIs to assign agency or to assign ad accounts. If you have more than one Instagram accounts, this is the best choice.
  • Page's Instagram Account: You can connect an Instagram account to a Facebook Page using Page UI. This is a simple option for small businesses.
  • Page Backed Instagram Account: If you do not have an Instagram account and do not want to create one for organic content, and you have a Facebook Page, you can create a "shadow" Instagram account. It is based on that Page using Marketing APIs to run ads. Nobody can log in to that Instagram account though.

The following table shows options for each kind of Instagram account.

Requirements Manage with BM Manage with Page Page+IG Account

Advertiser needs to have an IG account

Yes

Yes

No

Advertiser needs to have Business Manager set up

Yes

No

No

Require some manual steps on Facebook interfaces

Yes, to claim an IG account to BM.

Yes, to claim an IG account to Page.

No

Can add post (media)

Yes, with App

Yes, with App

No

Can comment as the Instagram profile

Yes, with App or Marketing APIs

Yes, with App or Marketing APIs

No

Can read or delete comments for ad posts (media) using APIs

Yes

Yes

Yes

Can run ads with an ad account owned by a user

No

Yes

Yes

Can run ads with an ad account owned by a business

Yes

Yes

Yes

Business Manager owned Instagram Accounts

This is the recommended method, because you can not only run ads with it, but also maintain your presence on Instagram with organic content. Once you login Instagram, you can add non-ad posts, reply to comments as that Instagram profile, and so on.

If you own the Instagram account, claim it as an asset in Business Manager. If the Instagram account is owned by someone else, the owner should claim it to their own business first, then assign your business as an agency.

Claim an Instagram Account for a Business

To claim an Instagram account for a business, you need the username and password of the account. In Business Manager claim the Instagram account.

Assign Agency to an Instagram Account

If a business owns an Instagram account and another business wants to run ads on its behalf, assign it as an agency by clicking on the "Assign Agency" button and entering the agency's business ID.

You can also do this with an API call. The business param is mandatory. The caller needs to be an ADMIN of the business owning this Instagram account. The caller does not need access to the business specified in business.

curl \
-F "access_token=<ACCESS_TOKEN>"\
-F "business=<BUSINESS_ID>"\
"https://graph.facebook.com/<API_VERSION>/<INSTAGRAM_ACCOUNT_ID>/agencies"

You can also delete an agency from an Instagram account by sending an HTTP DELETE request to the same edge. Same permissions are required as above.

curl -X DELETE -G \
-d "access_token=<ACCESS_TOKEN>"\
-d "business=<BUSINESS_ID>"\
"https://graph.facebook.com/<API_VERSION>/<INSTAGRAM_ACCOUNT_ID>/agencies"

By sending an HTTP GET request, you can get all the agency businesses of a given Instagram account. The caller needs to be at least an EMPLOYEE of the business owning this Instagram account.

curl -G \
-d "access_token=<ACCESS_TOKEN>"\
"https://graph.facebook.com/<API_VERSION>/<INSTAGRAM_ACCOUNT_ID>/agencies"

Assign Ad Accounts to an Instagram Account

Once you have access to an Instagram Account in Business Manager you can assign one or more Ad Accounts to it. After assigning an Ad Account all users of the business who can run ads for that Ad Accounts can run ads on the Instagram account. Click on the "Add Ad Accounts" button, and select which ad accounts you wish to associate.

You can also perform this task using API by sending a POST HTTP request. The business and account_id parameters are required. The user calling this API must be at least an ADMIN of the business. The ad account needs to be owned by this business, or accessible by this business while owned by the business which owns the Instagram account.

For example, if your business gets access to an ad account and an Instagram account from a client, you can assign them together within your business. But you cannot assign an ad account belonging to one client's business to an Instagram account belonging to another business, even if your business have admin access to both of them.

curl \
-F "access_token=<ACCESS_TOKEN>"\
-F "business=<BUSINESS_ID>"\
-F "account_id=<AD_ACCOUNT_ID>"\
"https://graph.facebook.com/<API_VERSION>/<INSTAGRAM_ACCOUNT_ID>/authorized_adaccounts"

To drop an ad account from an Instagram's associations, send a DELETE HTTP request with the same permissions as above:

curl -X DELETE -G \
-d "access_token=<ACCESS_TOKEN>"\
-d "business=<BUSINESS_ID>"\
-F "account_id=<AD_ACCOUNT_ID>"\
"https://graph.facebook.com/<API_VERSION>/<INSTAGRAM_ACCOUNT_ID>/authorized_adaccounts"

You can see which ad accounts for a given business are associated with an Instagram account. The business parameter is required. The user calling this API must be at least an EMPLOYEE of this business. Only ad accounts of the given business and associated with the given Instagram account will be returned. If there are ad accounts of other businesses also associated with this Instagram account, you won't get them in the response. You can send a GET HTTP request:

curl -G \
-d "access_token=<ACCESS_TOKEN>"\
-d "business=<BUSINESS_ID>"\
"https://graph.facebook.com/<API_VERSION>/<INSTAGRAM_ACCOUNT_ID>/authorized_adaccounts"

Get Associated Instagram Accounts

To check all the Instagram accounts owned by a business or that can be accessed by a business, make an HTTP GET call:

curl -G \
-d "access_token=<ACCESS_TOKEN>"\
-d "fields=username,profile_pic" \
"https://graph.facebook.com/<API_VERSION>/<BUSINESS_ID>/instagram_accounts"

You can call this API only on the business which owns the app, which is in the access token used, if your app's Marketing API Access level is not STANDARD. You can query other businesses if your app is on STANDARD level.

To check all the Instagram accounts associated with an Ad Account, make an HTTP GET call to:

curl -G \
-d "access_token=<ACCESS_TOKEN>"\
-d "fields=username,profile_pic" \
"https://graph.facebook.com/<API_VERSION>/act_<ADACCOUNT_ID>/instagram_accounts"

The response of these two API calls contains an array of Instagram accounts, each may contain the following fields:

Field Name Description Type

id

The Instagram account id, required for creating ads

numeric string

username

The Instagram user name

string

profile_pic

A URL pointing to the profile picture of this Instagram account

string

For example:

{
  "data": [
    {
      "username": "jaspersmarket",
      "profile_pic": "https://igcdn-photos-a-a.akamaihd.net/hphotos-ak-xaf1/t51.2885-19/11311930_826942667396992_856534255_a.jpg",
      "id": "1023317097692584"
    }
  ],
  "paging": {
    "cursors": {
      "before": "MTM4OTY1MDkwNzkyMTE4NQ==",
      "after": "MTAyMzMxNzA5NzY5MjU4NA=="
    }
  }
}

There is no user-to-Instagram account permission. Any users in your business who have permission to run ads using an ad account linked to an Instagram account can run ads for that Instagram account.

Use the access token of a user or system user who can access the associated Ad Account to create ad units below.

Page Connected Instagram Accounts

If the advertiser has an Instagram account, the owner of this Instagram account can use Facebook Page Manager to connect the Instagram account to a Facebook Page, then whoever has advertiser role on this Page can run ads for this Instagram account.

Connect the Instagram Account with a Facebook Page

Your Instagram account needs to have a profile image and cannot be a Private Account.

Using Facebook, get the Settings tab. On the left side, there is an "Instagram Ads" link. Clicking on that, under "Connect an Instagram Account for Advertising" section, there is an "Add an Account" button. From there, you can either claim the Instagram account of yours by entering the name and password, or create a new Instagram account.

Each Page can have at most one Instagram account connected. So once an Instagram account is connected to a Page, you would not see the "Add an Account" button any more. Instead, only "Remove Account" can be used.

There is no API for this step.

Obtain the Instagram Account ID

Once an Instagram is connected to a Page, you can see the connection at the Page Setting UI, but you cannot see the Instagram account ID.

To get the Instagram account ID for ad creation, you can call the Page Instagram Accounts API to get the Instagram account connected to a Page.

curl -G \
-d "access_token=<ACCESS_TOKEN>"\
-d "fields=id,username,profile_pic" \
"https://graph.facebook.com/<API_VERSION>/<PAGE_ID>/instagram_accounts"

The returned result contains one Instagram account as described above.

Create Ads

You can use any ad accounts, either owned by a user or by a business, as far as you have access, to create ads on the Page connection Instagram accounts.

  • You need to have at least an advertiser role on the Page. No permission on the Instagram account directly is needed.
  • When creating an ad creative, you will need to provide both an instagram_actor_id and a page_id. If the instagram_actor_id is the Instagram account id of a Page connected Instagram account, you must use the connected Page's id as the page_id. You cannot use a Page connected Instagram account with another Page together in an ad creative.

A Page can have at most one PBIA, as well as at most one Page Connected Instagram account.

Page Backed Instagram Account

We recommend you create Instagram accounts to run ads with those accounts, post or comment with that profile, and build your community organically. Some advertisers do not want to create and maintain Instagram accounts for simplicity, or want to have ads and organic content to be hosted by different Instagram accounts.

In this case, use "Page Backed Instagram Account" (PBIA), which can be created with the API, and can be used to create ads on Instagram. It will look like running ads from a Facebook Page, although it's actually from a "shadow" Instagram account for that Facebook Page.

Creating

To create a PBIA with a Facebook Page,

  • You need to have at least an ADVERTISER role on this Page, i.e. MANAGER or CONTENT_CREATOR are also fine;
  • This Page does not have a PBIA created already, as each Page may have at most one PBIA. You can use the existing PBIA directly in this case, no matter who created that PBIA before. The PBIA can be accessed by anyone who has access to the Page itself. So you may want to check whether a Page has a PBIA already before callling the following API to create one.

To create a PBIA, send an HTTP POST request to

curl \
-F "access_token=<ACCESS_TOKEN>"\
"https://graph.facebook.com/<API_VERSION>/<PAGE_ID>/page_backed_instagram_accounts"

It will return an Instagram account ID if successful, or an error, if this Page has a PBIA already.

Reading

To find whether a Facebook Page has the PBIA created already, sent an HTTP GET request to

curl -G \
-d "access_token=<ACCESS_TOKEN>"\
-d "fields=username,profile_pic" \
"https://graph.facebook.com/<API_VERSION>/<PAGE_ID>/page_backed_instagram_accounts"

It will return an Instagram account object as described above if there is one, or empty response otherwise.

Using

Once a PBIA is created, you can use its ID as the instagram_actor_id in your ad creative, in the same way as those IDs of any other Instagram accounts. There is no need to assign any ad accounts to the PBIA. When you create an ad creative using such an Instagram account, you can use any ad accounts that you have access, and you need to have at least the ADVERTISER role on the Page backing this PBIA. One requirement is that the page_id of your ad creative must be the Page that this PBIA is based on.

A Page can have at most one PBIA, as well as at most one Page Connected Instagram account.

When using an ad account not owned by a business (via Business Manager), if a Page has a Page Connected Instagram account, you cannot use its PBIA to create ads: you have to use that Page Connected Instagram account. When creating ads for an ad account owned by a business, this restriction does not apply.

This Instagram account will have the same name and profile picture as the Page. Once the Page has name or profile picture changed, this Instagram account will be updated automatically.

No one can login to this Instagram account to manage posts. To see or manage “comments” and “likes” of your ad posts, you can

  • Get the instagram_permalink_url from your ad creative, then view the ad post. You cannot add post or comment with this PBIA profile.
  • Use Power Editor to see comments and delete comments of the ad post.
  • Use Instagram Ads Post Moderation API to get comments and delete comments of the ad post. You cannot add post or comment with this API.

FAQs

Instagram Account

Q. Does my Instagram handle have to be public in order to run Ads?

A. Yes, you cannot run ads for private handles.

Targeting, Placement, Budget

Q: Can we create a custom audience of my Instagram account followers?

A: No, we currently don't support targeting based on Instagram information, including followers. Targeting is similar to what Facebook offers.

Q. Can I re-market ads to people based on video ads they saw on Instagram?

A. Instagram specific video view re-marketing, known as custom segments, is currently not available via API. It can only be accessed via IO campaigns and have restrictions on spend and budget.

Q. Is Instagram available for retargeting via FBX or DPA?

A. FBX is not available on Instagram. Dynamic Ads on Instagram is available. You can use Website Custom Audience targeting to reach people who visited or engaged on your website.

Q. What are the default placements for Facebook ads?

A. Instagram is among the default placements. Note that the default placements may change without notice.

Q: Is there a minimum spend requirement for self-serve ads?

A: The minimum spend budget on Instagram is same as Facebook self serve ads, with different limits per currency and limits based on bid_amount.

Ad Creative

Q: Are Facebook Page IDs required even if I'm using Instagram only placement? Will this appear anywhere in the ads?

A: Facebook Page ID is required to create ads for Instagram. The Page info won't appear anywhere on Instagram. When you create an ad creative, an unpublished post is created. You see the unpublished post from the page when you query promotable feed using the Page ID.

Q. Can we create Carousal ads via API, Power Editor, or Ad Manager?

A. Carousal ads are available with API. It is also being rolled out to PE and AM users gradually.

Q: Is “call to action” required or optional in link_data?

A: It is optional during creation by API. If it is not provided, we will use LEARN_MORE as the type, and the link from link_data as the link, to create a default CTA.

Q: What call-to-action buttons are available for link ads? What about Mobile App Installs?

A: The following CTA buttons are available today.

Website Clicks and Video Views:

  • Book Now
  • Contact Us
  • Download
  • Learn More
  • Shop Now
  • Sign Up
  • Watch More
  • Donate More (coming soon)

Mobile App Installs:

  • Book Now
  • Download
  • Install Now
  • Learn More
  • Listen Now
  • Play Game
  • Shop Now
  • Sign Up
  • Use App
  • Watch More
  • Watch Video

Q: Can my call to action button link to a Facebook Page or Instagram profile?

A: No, we discourage you from creating WEBSITE_CLICKS ads that link to your Facebook Page or Instagram profile. This may result in API error and it also creates a poor experience. For example, when linking to Instagram account many users are not logged on via the in-app browser and will be asked to log in again. To promote your Facebook Page with a Facebook ad, use PAGE_LIKES ads instead.

Review

Q: Why is my ad getting rejected on Instagram but not on Facebook?

A: The ad review policies are the same for Facebook and Instagram. However, as we make Instagram available to more businesses, we want the same high-quality ad experience on Instagram that we have on Facebook. This requires understanding more about how the community interacts with different kinds of advertiser content on Instagram. Since it takes time to build the same kind of models that drive Facebook ads, for the short-term we rely on human review to filter out a small percentage of ads and provide suggestions for improvement. Our ultimate goal is to make running a campaign across Facebook and Instagram a seamless experience and to make ads a relevant, valuable part of the Instagram product.

Features and Limitations

Q: I added an Instagram account to my business manager but I still can't see it with the connectionobjects endpoint. What's wrong?

A: Connection Objects is not supported for Instagram accounts. In general, we suggest {business_id}/{assets} endpoints over connectionobjects. The act_adaccount_id/connectionobjects endpoint includes user-based and ad account-based objects, thus may be misleading. Specially for Instagram, we suggest {business_id}/instagram_accounts, act_{adaccount_id}/instagram_accounts, and {page id}/instagram_accounts endpoints.

Q. Do all Facebook objectives work on Instagram as well?

A. Currently there are some objectives available on Instagram. You can find the latest list here. Some others will come soon and our docs will be updated when we add more objectives to the platform.

Q: How do we get insights for Instagram ads?

A. Use the /insights API with breakdowns=placement. This will give you the results per placement when you use mixed placement.

Q. How does reach estimate work for Instagram?

A. Reach estimates provided in Power Editor and the API are designed to give partners guidance with what we think they can reasonably expect in our new self-serve ecosystem. Instagram community comes first and we are starting out conservatively and expect to evolve as we build deeper learnings.

It is important to highlight that all policies that apply to using reach and frequency estimate for Facebook also apply to Instagram.

Q: Are view tags and click tags supported on Instagram?

A: View tags are not publicly available. If a view tag by an approved vendor is permitted on Facebook mobile campaigns, it is also allowed for Instagram ads. Click tracking tags only fire when the ad is served on Facebook desktop and therefore cannot be used with Instagram ads. Ad creative's url_tag field can be used with Instagram ads.

Q. Can I use 3rd party tracking for Instagram Ads?

A. You can always use it but note we do not optimize for 3rd party tracking. To make sure that the 3rd party tracking tool can track Instagram ads properly, use Ad creative's url_tag field with utm_source=instagram.

Resources