Use these advanced options, your own in Custom Audiences and Lookalikes. Use any combination of targeting; by default Facebook ORs
combinations together. For "core", or basic targeting, see Targeting. Advanced targeting includes:
If you use flexible_spec
, you must also provide one of the following under targeting
:
geo_locations
: geographical targeting field from country, region, city or zipcustom_audiences
product_audience_specs
dynamic_audience_ids
See Limits.
Advertisers running housing, employment and credit ads, who are based in the United States or running ads targeted to the United States have different sets of restrictions. See Special Ad Category.
This is useful for Mobile App Install ads.
use FacebookAds\Object\AdSet;
use FacebookAds\Object\Fields\AdSetFields;
use FacebookAds\Object\Values\AdSetBillingEventValues;
use FacebookAds\Object\Values\AdSetOptimizationGoalValues;
use FacebookAds\Object\Fields\TargetingFields;
use FacebookAds\Object\Targeting;
$adset = new AdSet(null, 'act_<AD_ACCOUNT_ID>');
$adset->setData(array(
AdSetFields::NAME => 'My AdSet',
AdSetFields::OPTIMIZATION_GOAL => AdSetOptimizationGoalValues::REACH,
AdSetFields::BILLING_EVENT => AdSetBillingEventValues::IMPRESSIONS,
AdSetFields::BID_AMOUNT => 2,
AdSetFields::DAILY_BUDGET => 1000,
AdSetFields::CAMPAIGN_ID => <CAMPAIGN_ID>,
AdSetFields::TARGETING => (new Targeting())->setData(array(
TargetingFields::GEO_LOCATIONS => array(
'countries' => array(
'US',
),
),
TargetingFields::USER_DEVICE => array(
'Galaxy S6',
'One m9',
),
TargetingFields::USER_OS => array('android'),
)),
));
$adset->create(array(
AdSet::STATUS_PARAM_NAME => AdSet::STATUS_ACTIVE,
));
from facebookads.adobjects.adset import AdSet
adset = AdSet(parent_id='act_<AD_ACCOUNT_ID>')
adset.update({
AdSet.Field.name: 'My AdSet',
AdSet.Field.optimization_goal: AdSet.OptimizationGoal.reach,
AdSet.Field.billing_event: AdSet.BillingEvent.impressions,
AdSet.Field.bid_amount: 150,
AdSet.Field.daily_budget: 2000,
AdSet.Field.campaign_id: <CAMPAIGN_ID>,
AdSet.Field.targeting: {
'geo_locations': {
'countries': ['US'],
},
'user_device': [
'galaxy s6',
'one m9',
],
'user_os': ['android'],
},
})
adset.remote_create(params={
'status': AdSet.Status.active,
})
AdSet adSet = new AdAccount(act_<AD_ACCOUNT_ID>, context).createAdSet()
.setName("My AdSet")
.setOptimizationGoal(AdSet.EnumOptimizationGoal.VALUE_REACH)
.setBillingEvent(AdSet.EnumBillingEvent.VALUE_IMPRESSIONS)
.setBidAmount(2L)
.setDailyBudget(1000L)
.setCampaignId(<CAMPAIGN_ID>)
.setTargeting(
new Targeting()
.setFieldGeoLocations(
new TargetingGeoLocation()
.setFieldCountries(Arrays.asList("US"))
)
.setFieldUserDevice(Arrays.asList("Galaxy S6", "One m9"))
.setFieldUserOs(Arrays.asList("android"))
)
.setStatus(AdSet.EnumStatus.VALUE_ACTIVE)
.execute();
String ad_set_id = adSet.getId();
curl \
-F 'name=My AdSet' \
-F 'optimization_goal=REACH' \
-F 'billing_event=IMPRESSIONS' \
-F 'bid_amount=2' \
-F 'daily_budget=1000' \
-F 'campaign_id=<CAMPAIGN_ID>' \
-F 'targeting={
"geo_locations": {"countries":["US"]},
"user_device": ["Galaxy S6","One m9"],
"user_os": ["android"]
}' \
-F 'status=ACTIVE' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v2.11/act_<AD_ACCOUNT_ID>/adsets
You can combine categories, such as iPod OR iPad OR iPhone.
These categories are not mutually exclusive. If you select iOS you target all devices running iOS, including iPhone and iPod, without specifying user_device
.
For Brand Awareness Objective ads, you can't target based on mobile device type, such as feature phones or Samsung, or based on iOS version number. You can only choose Android or iOS, or all mobile phones.
Field | Description |
---|---|
type: array | Required. One or more values from OS option table below. Possible values are at Targeting Search API with Valid: |
type: array | Optional. Devices must match the value in |
type: array | Optional. Devices to exclude. Devices must match the value in |
type: array | Optional. Allowed value is |
Field | Description |
---|---|
type: string | iOS devices, including iPhone, iPad, and iPod |
type: string | iOS devices running OS version x.x and above. Options: 2.0, 3.0, 4.0, 4.3, 5.0, 6.0, 7.0, 8.0, 9.0.
Example: |
type: string | iOS devices running OS versions x.x to y.y. Options: 2.0, 3.0, 4.0, 4.3, 5.0, 6.0, 7.0, 8.0, 9.0. Example: |
type: string | Android devices |
type: string | Android devices running version x.x and above. Options: 2.0, 2.1, 2.2, 2.3, 3.0, 3.1, 3.2, 4.0, 4.1, 4.2., 4.3, 4.4, 5.0, 5.1, 6.0, 7.0, 7.1, and 8.0. Example: |
type: string | Android devices running versions x.x to y.y. Options: 2.0, 2.1, 2.2, 2.3, 3.0, 3.1, 3.2, 4.0, 4.1, 4.2., 4.3, 4.4, 5.0, 5.1, 6.0, 7.0, 7.1, and 8.0. Example: |
Target people who connected or did not connect with your brand.
Name | Description |
---|---|
type: String | Only for app-related objectives: Options:
Example: |
type: array of | Array of Facebook IDs. Target fans of your Page, people who RSVP’d to your Event, people who logged into your app with Facebook Login, or authorized your Canvas app. To set this, you must be an admin of the page or event, or developer of the app you're advertising. You can't target on past events. Example: |
type: array of | Array of Facebook IDs. Target people who are not fans of your page, have not authorized your Canvas App or have not logged into your mobile app with Facebook Login. You can also target people who did not RSVP to a future event. If you have global page and you want to exclude page fans, you can only target people who are not fans of this global page, instead of people who are not fans of your local page. To set this, you need to be an admin of the Page or event, or developer of the app being advertised. For a 'Page Likes' campaign, you must exclude your page from targeting. Restrictions: Limited to 100 values. Example: |
type: array of | Array of Facebook Object IDs. Target friends of people connected to your object. Connections are fans of your Page and people who interacted with your app. To set this, you must be to be an admin of the Page or a developer of the app being advertised. Limit is 100 IDs. Example: |
Target based on relationships, education, finances, and life events.
First query life_events
:
use FacebookAds\Object\TargetingSearch;
use FacebookAds\Object\Search\TargetingSearchTypes;
use FacebookAds\Object\Search\DemographicSearchClasses;
$result = TargetingSearch::search(
TargetingSearchTypes::TARGETING_CATEGORY,
DemographicSearchClasses::LIFE_EVENTS);
from facebookads.adobjects.targetingsearch import TargetingSearch
params = {
'type': TargetingSearch.TargetingSearchTypes.targeting_category,
'class': TargetingSearch.DemographicSearchClasses.life_events,
}
resp = TargetingSearch.search(params=params)
print(resp)
curl -G \
-d 'type=adTargetingCategory' \
-d 'class=life_events' \
-d 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v2.11/search
Add these to targeting_spec
:
curl -X POST \
-F 'name="My First AdSet"' \
-F 'daily_budget=10000' \
-F 'bid_amount=300' \
-F 'billing_event="IMPRESSIONS"' \
-F 'optimization_goal="REACH"' \
-F 'campaign_id="<AD_CAMPAIGN_ID>"' \
-F 'promoted_object={
"page_id": "<PAGE_ID>"
}' \
-F 'targeting={
"facebook_positions": [
"feed"
],
"age_max": 24,
"age_min": 20,
"behaviors": [
{
"id": 6002714895372,
"name": "All travelers"
}
],
"device_platforms": [
"mobile"
],
"genders": [
1
],
"geo_locations": {
"countries": [
"US"
],
"regions": [
{
"key": "4081"
}
],
"cities": [
{
"key": 777934,
"radius": 10,
"distance_unit": "mile"
}
]
},
"interests": [
{
"id": "<INTEREST_ID>",
"name": "<INTEREST_NAME>"
}
],
"life_events": [
{
"id": 6002714398172,
"name": "Newlywed (1 year)"
}
],
"publisher_platforms": [
"facebook",
"audience_network"
]
}' \
-F 'status="PAUSED"' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v9.0/act_<AD_ACCOUNT_ID>/adsets
We now target:
Here's another example targeting by location, demographic, relationship status and interests:
use FacebookAds\Object\AdSet;
use FacebookAds\Object\Fields\AdSetFields;
use FacebookAds\Object\Values\AdSetBillingEventValues;
use FacebookAds\Object\Values\AdSetOptimizationGoalValues;
use FacebookAds\Object\Fields\TargetingFields;
use FacebookAds\Object\Targeting;
$adset = new AdSet(null, 'act_<AD_ACCOUNT_ID>');
$adset->setData(array(
AdSetFields::NAME => 'My AdSet',
AdSetFields::OPTIMIZATION_GOAL => AdSetOptimizationGoalValues::REACH,
AdSetFields::BILLING_EVENT => AdSetBillingEventValues::IMPRESSIONS,
AdSetFields::BID_AMOUNT => 2,
AdSetFields::DAILY_BUDGET => 1000,
AdSetFields::CAMPAIGN_ID => <CAMPAIGN_ID>,
AdSetFields::TARGETING => (new Targeting())->setData(array(
TargetingFields::GEO_LOCATIONS => array(
'regions' => array(
array(
'key' => '3847',
),
),
'cities' => array(
array(
'key' => '2430536',
'radius' => 12,
'distance_unit' => 'mile'
),
),
),
TargetingFields::GENDERS => array(1,),
TargetingFields::RELATIONSHIP_STATUSES => array(2, 3, 4,),
TargetingFields::AGE_MIN => 18,
TargetingFields::AGE_MAX => 43,
TargetingFields::INTERESTS => array(
array(
'id' => 6003139266461,
'name' => 'Movies',
),
),
)),
));
$adset->create(array(
AdSet::STATUS_PARAM_NAME => AdSet::STATUS_ACTIVE,
));
from facebookads.adobjects.adset import AdSet
adset = AdSet(parent_id='act_<AD_ACCOUNT_ID>')
adset.update({
AdSet.Field.name: 'My AdSet',
AdSet.Field.optimization_goal: AdSet.OptimizationGoal.reach,
AdSet.Field.billing_event: AdSet.BillingEvent.impressions,
AdSet.Field.bid_amount: 150,
AdSet.Field.daily_budget: 2000,
AdSet.Field.campaign_id: <CAMPAIGN_ID>,
AdSet.Field.targeting: {
'geo_locations': {
'regions': [{'key': '3847'}],
'cities': [
{
'key': '2430536',
'radius': '12',
'distance_unit': 'mile',
},
],
},
'genders': [1],
'relationship_statuses': [2, 3, 4],
'age_min': 18,
'age_max': 43,
'interests': [
{
'id': 6003139266461,
'name': 'Movies',
},
],
},
})
adset.remote_create(params={
'status': AdSet.Status.active,
})
AdSet adSet = new AdAccount(act_<AD_ACCOUNT_ID>, context).createAdSet()
.setName("My AdSet")
.setOptimizationGoal(AdSet.EnumOptimizationGoal.VALUE_REACH)
.setBillingEvent(AdSet.EnumBillingEvent.VALUE_IMPRESSIONS)
.setBidAmount(2L)
.setDailyBudget(1000L)
.setCampaignId(<CAMPAIGN_ID>)
.setTargeting(
new Targeting()
.setFieldAgeMax(43L)
.setFieldAgeMin(18L)
.setFieldGenders(Arrays.asList(1L))
.setFieldGeoLocations(
new TargetingGeoLocation()
.setFieldCities(Arrays.asList(
new TargetingGeoLocationCity()
.setFieldDistanceUnit("mile")
.setFieldKey("2430536")
.setFieldRadius(12L)
))
.setFieldRegions(Arrays.asList(
new TargetingGeoLocationRegion()
.setFieldKey("3847")
))
)
.setFieldInterests(Arrays.asList(
new IDName()
.setFieldId("6003139266461")
.setFieldName("Movies")
))
.setFieldRelationshipStatuses(Arrays.asList(2L, 3L, 4L))
)
.setStatus(AdSet.EnumStatus.VALUE_ACTIVE)
.execute();
String ad_set_id = adSet.getId();
curl \
-F 'name=My AdSet' \
-F 'optimization_goal=REACH' \
-F 'billing_event=IMPRESSIONS' \
-F 'bid_amount=2' \
-F 'daily_budget=1000' \
-F 'campaign_id=<CAMPAIGN_ID>' \
-F 'targeting={
"age_max": 43,
"age_min": 18,
"genders": [1],
"geo_locations": {
"regions": [{"key":"3847"}],
"cities": [
{
"key": "2430536",
"radius": 12,
"distance_unit": "mile"
}
]
},
"interests": [{"id":6003139266461,"name":"Movies"}],
"relationship_statuses": [
2,
3,
4
]
}' \
-F 'status=ACTIVE' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v2.11/act_<AD_ACCOUNT_ID>/adsets
Name | Description |
---|---|
type: array | Array of integers representing relationship status.
Default: Restrictions: Do not use |
type: array | Array of objects with 'id' and optional 'name' fields: |
type: array | Array of objects with 'id' and optional 'name' fields |
type: array | Array of objects with 'id' and optional 'name' fields |
type: array | Array of objects with 'id' and (optional) 'name' fields |
Use Targeting Search API for all options.
Name | Description |
---|---|
type: array | Schools, colleges, and institutions. Limit: 200 education schools. Example: |
type: array | Array of integers to target based on education level.
|
type: array | Array of integers. College graduation Limit: Earliest year allowed is 1980 |
type: array | Majors. Example: Limit: 200 |
type: array | Company, organization, or workplace Example: Limit: 200 |
type: array | Self-declared work. Example: Limit: 200 |
Create a custom audience and add users. You can use the audience in targeting, either for inclusion or exclusion. Include up to 500 custom audiences in custom_audiences
and 500 custom audiences in excluded_custom_audiences
.
excluded_custom_audiences
in targeting_specs is different than excluded_custom_audiences
in APP_COMBINATION` Custom Audience.
Field | Description |
---|---|
type: array | Array of audience IDs or audience objects. |
type: array | Array of audience IDs or audience objects. |
targeting:{ "geo_locations":{ "countries":["US"], }, "age_min":25, "age_max":40, "custom_audiences":[{"id":6004192254512}]} "excluded_custom_audiences": [{"id":6004192252847}], }
Provide granular targeting on locale:
Field | Description |
---|---|
type: array | Locales, see Targeting Search, Locales. Indices in a sub-array 'locales'. Target people with language other than common language for a location. Provide an ID for the language, such as 5 for German. Limit: 50. See mapping of virtual 'locales' to language sets at Targeting Search, Locale with |
Use Broad Categories for custom targeting created or permissioned specifically for your account. To include the cooking category and small business owner category:
use FacebookAds\Object\AdSet;
use FacebookAds\Object\Fields\AdSetFields;
use FacebookAds\Object\Values\AdSetBillingEventValues;
use FacebookAds\Object\Values\AdSetOptimizationGoalValues;
use FacebookAds\Object\Fields\TargetingFields;
use FacebookAds\Object\Targeting;
$adset = new AdSet(null, 'act_<AD_ACCOUNT_ID>');
$adset->setData(array(
AdSetFields::NAME => 'My AdSet',
AdSetFields::OPTIMIZATION_GOAL => AdSetOptimizationGoalValues::REACH,
AdSetFields::BILLING_EVENT => AdSetBillingEventValues::IMPRESSIONS,
AdSetFields::BID_AMOUNT => 2,
AdSetFields::DAILY_BUDGET => 1000,
AdSetFields::CAMPAIGN_ID => <CAMPAIGN_ID>,
AdSetFields::TARGETING => (new Targeting())->setData(array(
TargetingFields::GEO_LOCATIONS => array(
'countries' => array(
'US',
),
),
TargetingFields::USER_ADCLUSTERS => array(
array(
'id' => 6002714885172,
'name' => 'Cooking',
),
array(
'id' => 6002714898572,
'name' => 'Small Business Owners',
),
),
)),
));
$adset->create(array(
AdSet::STATUS_PARAM_NAME => AdSet::STATUS_ACTIVE,
));
from facebookads.adobjects.adset import AdSet
adset = AdSet(parent_id='act_<AD_ACCOUNT_ID>')
adset.update({
AdSet.Field.name: 'My AdSet',
AdSet.Field.optimization_goal: AdSet.OptimizationGoal.reach,
AdSet.Field.billing_event: AdSet.BillingEvent.impressions,
AdSet.Field.bid_amount: 150,
AdSet.Field.daily_budget: 2000,
AdSet.Field.campaign_id: <CAMPAIGN_ID>,
AdSet.Field.targeting: {
'geo_locations': {
'countries': ['US'],
},
'user_adclusters': [
{
'id': 6002714885172,
'name': 'Cooking',
},
{
'id': 6002714898572,
'name': 'Small Business Owners',
},
],
},
})
adset.remote_create(params={
'status': AdSet.Status.active,
})
AdSet adSet = new AdAccount(act_<AD_ACCOUNT_ID>, context).createAdSet()
.setName("My AdSet")
.setOptimizationGoal(AdSet.EnumOptimizationGoal.VALUE_REACH)
.setBillingEvent(AdSet.EnumBillingEvent.VALUE_IMPRESSIONS)
.setBidAmount(2L)
.setDailyBudget(1000L)
.setCampaignId(<CAMPAIGN_ID>)
.setTargeting(
new Targeting()
.setFieldGeoLocations(
new TargetingGeoLocation()
.setFieldCountries(Arrays.asList("US"))
)
.setFieldUserAdclusters(Arrays.asList(
new IDName()
.setFieldId("6002714885172")
.setFieldName("Cooking")
,
new IDName()
.setFieldId("6002714898572")
.setFieldName("Small Business Owners")
))
)
.setStatus(AdSet.EnumStatus.VALUE_ACTIVE)
.execute();
String ad_set_id = adSet.getId();
curl \
-F 'name=My AdSet' \
-F 'optimization_goal=REACH' \
-F 'billing_event=IMPRESSIONS' \
-F 'bid_amount=2' \
-F 'daily_budget=1000' \
-F 'campaign_id=<CAMPAIGN_ID>' \
-F 'targeting={
"geo_locations": {"countries":["US"]},
"user_adclusters": [
{"id":6002714885172,"name":"Cooking"},
{"id":6002714898572,"name":"Small Business Owners"}
]
}' \
-F 'status=ACTIVE' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v2.11/act_<AD_ACCOUNT_ID>/adsets
To exclude the cooking category and small business owner category:
use FacebookAds\Object\AdSet;
use FacebookAds\Object\Fields\AdSetFields;
use FacebookAds\Object\Values\AdSetBillingEventValues;
use FacebookAds\Object\Values\AdSetOptimizationGoalValues;
use FacebookAds\Object\Fields\TargetingFields;
use FacebookAds\Object\Targeting;
$adset = new AdSet(null, 'act_<AD_ACCOUNT_ID>');
$adset->setData(array(
AdSetFields::NAME => 'My AdSet',
AdSetFields::OPTIMIZATION_GOAL => AdSetOptimizationGoalValues::REACH,
AdSetFields::BILLING_EVENT => AdSetBillingEventValues::IMPRESSIONS,
AdSetFields::BID_AMOUNT => 2,
AdSetFields::DAILY_BUDGET => 1000,
AdSetFields::CAMPAIGN_ID => <CAMPAIGN_ID>,
AdSetFields::TARGETING => (new Targeting())->setData(array(
TargetingFields::GEO_LOCATIONS => array(
'countries' => array(
'US',
),
),
TargetingFields::EXCLUSIONS => array(
TargetingFields::USER_ADCLUSTERS => array(
array(
'id' => 6002714885172,
'name' => 'Cooking',
),
array(
'id' => 6002714898572,
'name' => 'Small Business Owners',
),
),
),
)),
));
$adset->create(array(
AdSet::STATUS_PARAM_NAME => AdSet::STATUS_ACTIVE,
));
from facebookads.adobjects.adset import AdSet
adset = AdSet(parent_id='act_<AD_ACCOUNT_ID>')
adset.update({
AdSet.Field.name: 'My AdSet',
AdSet.Field.optimization_goal: AdSet.OptimizationGoal.reach,
AdSet.Field.billing_event: AdSet.BillingEvent.impressions,
AdSet.Field.bid_amount: 150,
AdSet.Field.daily_budget: 2000,
AdSet.Field.campaign_id: <CAMPAIGN_ID>,
AdSet.Field.targeting: {
'geo_locations': {
'countries': ['US'],
},
'exclusions': {
'user_adclusters': [
{
'id': 6002714885172,
'name': 'Cooking',
},
{
'id': 6002714898572,
'name': 'Small Business Owners',
},
],
},
},
})
adset.remote_create(params={
'status': AdSet.Status.active,
})
AdSet adSet = new AdAccount(act_<AD_ACCOUNT_ID>, context).createAdSet()
.setName("My AdSet")
.setOptimizationGoal(AdSet.EnumOptimizationGoal.VALUE_REACH)
.setBillingEvent(AdSet.EnumBillingEvent.VALUE_IMPRESSIONS)
.setBidAmount(2L)
.setDailyBudget(1000L)
.setCampaignId(<CAMPAIGN_ID>)
.setTargeting(
new Targeting()
.setFieldExclusions(
new FlexibleTargeting()
.setFieldUserAdclusters(Arrays.asList(
new IDName()
.setFieldId("6002714885172")
.setFieldName("Cooking")
,
new IDName()
.setFieldId("6002714898572")
.setFieldName("Small Business Owners")
))
)
.setFieldGeoLocations(
new TargetingGeoLocation()
.setFieldCountries(Arrays.asList("US"))
)
)
.setStatus(AdSet.EnumStatus.VALUE_ACTIVE)
.execute();
String ad_set_id = adSet.getId();
curl \
-F 'name=My AdSet' \
-F 'optimization_goal=REACH' \
-F 'billing_event=IMPRESSIONS' \
-F 'bid_amount=2' \
-F 'daily_budget=1000' \
-F 'campaign_id=<CAMPAIGN_ID>' \
-F 'targeting={
"exclusions": {
"user_adclusters": [
{"id":6002714885172,"name":"Cooking"},
{"id":6002714898572,"name":"Small Business Owners"}
]
},
"geo_locations": {"countries":["US"]}
}' \
-F 'status=ACTIVE' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v2.11/act_<AD_ACCOUNT_ID>/adsets
To target based on BCT plus location and demographics:
use FacebookAds\Object\AdSet;
use FacebookAds\Object\Fields\AdSetFields;
use FacebookAds\Object\Values\AdSetBillingEventValues;
use FacebookAds\Object\Values\AdSetOptimizationGoalValues;
use FacebookAds\Object\Fields\TargetingFields;
use FacebookAds\Object\Targeting;
$adset = new AdSet(null, 'act_<AD_ACCOUNT_ID>');
$adset->setData(array(
AdSetFields::NAME => 'My AdSet',
AdSetFields::OPTIMIZATION_GOAL => AdSetOptimizationGoalValues::REACH,
AdSetFields::BILLING_EVENT => AdSetBillingEventValues::IMPRESSIONS,
AdSetFields::BID_AMOUNT => 2,
AdSetFields::DAILY_BUDGET => 1000,
AdSetFields::CAMPAIGN_ID => <CAMPAIGN_ID>,
AdSetFields::TARGETING => (new Targeting())->setData(array(
TargetingFields::GEO_LOCATIONS => array(
'countries' => array(
'US',
),
),
TargetingFields::RELATIONSHIP_STATUSES => array (2),
TargetingFields::USER_ADCLUSTERS => array(
array(
'id' => 6002714886772,
'name' => 'Food & Dining',
),
),
)),
));
$adset->create(array(
AdSet::STATUS_PARAM_NAME => AdSet::STATUS_ACTIVE,
));
from facebookads.adobjects.adset import AdSet
adset = AdSet(parent_id='act_<AD_ACCOUNT_ID>')
adset.update({
AdSet.Field.name: 'My AdSet',
AdSet.Field.optimization_goal: AdSet.OptimizationGoal.reach,
AdSet.Field.billing_event: AdSet.BillingEvent.impressions,
AdSet.Field.bid_amount: 150,
AdSet.Field.daily_budget: 2000,
AdSet.Field.campaign_id: <CAMPAIGN_ID>,
AdSet.Field.targeting: {
'geo_locations': {
'countries': ['US'],
},
'relationship_statuses': [2],
'user_adclusters': [
{
'id': 6002714886772,
'name': 'Food & Dining',
},
],
},
})
adset.remote_create(params={
'status': AdSet.Status.active,
})
AdSet adSet = new AdAccount(act_<AD_ACCOUNT_ID>, context).createAdSet()
.setName("My AdSet")
.setOptimizationGoal(AdSet.EnumOptimizationGoal.VALUE_REACH)
.setBillingEvent(AdSet.EnumBillingEvent.VALUE_IMPRESSIONS)
.setBidAmount(2L)
.setDailyBudget(1000L)
.setCampaignId(<CAMPAIGN_ID>)
.setTargeting(
new Targeting()
.setFieldGeoLocations(
new TargetingGeoLocation()
.setFieldCountries(Arrays.asList("US"))
)
.setFieldRelationshipStatuses(Arrays.asList(2L))
.setFieldUserAdclusters(Arrays.asList(
new IDName()
.setFieldId("6002714886772")
.setFieldName("Food & Dining")
))
)
.setStatus(AdSet.EnumStatus.VALUE_ACTIVE)
.execute();
String ad_set_id = adSet.getId();
curl \
-F 'name=My AdSet' \
-F 'optimization_goal=REACH' \
-F 'billing_event=IMPRESSIONS' \
-F 'bid_amount=2' \
-F 'daily_budget=1000' \
-F 'campaign_id=<CAMPAIGN_ID>' \
-F 'targeting={
"geo_locations": {"countries":["US"]},
"relationship_statuses": [2],
"user_adclusters": [{"id":6002714886772,"name":"Food & Dining"}]
}' \
-F 'status=ACTIVE' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v2.11/act_<AD_ACCOUNT_ID>/adsets
You have options:
Name | Description |
---|---|
type: array | Array of ID-name pairs for BCT clusters. See below for information on retrieving BCT's. Limit: 50 ID-name pairs. |
To query this targeting for Ad account, make an HTTP GET
:
https://graph.facebook.com/<API_VERSION>/act_<AD_ACCOUNT_ID>/broadtargetingcategories
The response is an array of JSON key-value pairs:
Name | Description |
---|---|
type: long | ID of broad category is used for ad targeting spec |
type: string | Name of broad category |
type: string | Parent category of broad category |
type: int | Audience size of broad category |
type: int | 6=BCT |
type: string | BCT |