Skip to content

Build a Real Estate Audience

Updated: Jun 16, 2026

Beginning with the release of Marketing API v15.0, you will no longer be able to create Special Ad Audiences. See Special Ad Audiences for more information.

Create a real estate audience:

Step 1: Set up user signals for real estate events

These are predefined event names you can send from your website or app that allow you to both measure the performance of your campaigns and to capture intent from your audiences. See Facebook Pixel Setup.

Real estate ads require these standard events from your website pixel and mobile app:

Pixel EventApp EventRequirement LevelDescription
Searchfb_mobile_searchSomeone searched home listings
ViewContentfb_mobile_content_viewSomeone viewed a specific listing
InitiateCheckoutfb_mobile_initiated_checkoutSomeone saved, liked, or showed special interest in a listing
Purchasefb_mobile_purchaseSomeone contacted an agent about a listing
  • Required: Ads will not work without these parameters.
  • Recommended: Not strictly required but enables better recommendations and more targeting options for your ads. Provide as many as possible.
  • Not Required: Not required and may be ignored.

For example, to report a Search event for a listing using FB pixel or App events, place this code on your search-results page:

Select language

JavaScript SDKAndroid SDKObjective-C


<!-- Facebook Pixel Code -->  
<script>  
!function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod?  
n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n;  
n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0;  
t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window,  
document,'script','https://connect.facebook.net/en_US/fbevents.js');  
  
// Insert Your Facebook Pixel ID below.  
fbq('init', '<FB_PIXEL_ID>');  
  
fbq('track', 'Search', {  
  content_type: 'home_listing',  
  content_ids: ['1234', '2345', '3456', '4567'], // Top search results  
  city: 'New York City', //Required for Search event  
  region: 'New York', // region is the state for the US. Required for Search event  
  country: 'US', //Required for Search event  
} );  
</script>  
<!-- End Facebook Pixel Code -->

Once you determine which events should fire, you should provide each event's parameters.

Event parameters

The table below lists required and recommended parameters.

Pixel ParameterMobile ParameterRequirement Level
content_idsfb_content_id
content_typefb_content_type
lease_start_date
lease_end_date
preferred_baths_range
preferred_beds_range
preferred_price_range
currencyfb_currency
property_type
listing_type
availability
cityfb_city
neighborhood
regionfb_region
countryfb_country

Parameter details

Parameter NameData TypeDescription
availabilitystringValue must be available_soon, for_rent, for_sale, off_market, recently_sold or sale_pending.
citystringProvide the user's city of interest, such as 'Menlo Park'
content_idsstring or string[]Any IDs in your listing catalog. For example, for ViewContent event, send the ID of the item viewed, or for Search send an array of IDs for top results: ['1234', '2345', '3456', '4567']
content_typestring or string[]For example: * 'home_listing' * ['home_listing', 'product'] * ['home_listing', 'hotel']
countrystringTarget country of interest, such as 'United States'
currencystringSpecify the currency using ISO 4217 currency format: 'USD'
lease_start_datestringAllows us to recommend properties based on their date availability (using available_dates_price_config in the catalog), and improve the user landing experience (using template tags). Specified using ISO 8601 date format: 'YYYY-MM-DD' (for example, 2018-01-01).
lease_end_datestringSpecified using ISO 8601 date format: 'YYYY-MM-DD' (for example, '2018-02-01').
listing_typestringValue must be for_rent_by_agent, for_rent_by_owner, for_sale_by_agent, for_sale_by_owner, foreclosed, new_construction or new_listing.
neighborhoodstringNeighborhood of interest: 'Menlo Oaks'
preferred_baths_range[int(min), int(max)]Number of bathrooms chosen as range: [1, 2]
preferred_beds_range[int(min), int(max)]Number of bedrooms chosen as range: [1, 2]
preferred_price_range[float(min), float(max)]Price range: [1000.99, 2000.99]
property_typestringMust be apartment, condo, house, land, manufactured, other or townhouse.
regionstringState, district, or region of interest: 'California'

Step 2: Associate signals to listing catalog

Associate your event sources with each of your listing catalogs. See Business Manager's Catalog Page⁠ To select the pixel and app via API which send events, make an HTTP POST:

Select language

cURL


curl \  
  -F '0=<PIXEL_ID>' \  
  -F '1=<APP_ID>' \  
  -F 'access_token=<ACCESS_TOKEN>' \  
https://graph.facebook.com/<API_VERSION>/<PRODUCT_CATALOG_ID>/external_event_sources

Specify these parameters:

Field NameData TypeDescription
external_event_sources (required)int[]List of Pixel and App IDs to associate with the catalog.

Step 3: Create and share real estate event source groups

To build an audience, an admin for your business must create an event source group. This groups all of your sources that send listing interest signals. Make an HTTP POST:

Select language

cURL


curl \  
  -F 'name=My Real Estate Company Events' \  
  -F 'event_sources=['<PIXEL_ID>','<APP_ID>']' \  
  -F 'access_token=<ACCESS_TOKEN>' \  
https://graph.facebook.com/<API_VERSION>/<BUSINESS_ID>/event_source_groups

Then share this event source group to any ad accounts that will run ads to audiences generated by these event sources. Make an HTTP POST:

Select language

cURL


curl \  
  -F 'accounts=['<ACCOUNT_ID_WITHOUT_ACT>']' \  
  -F 'access_token=<ACCESS_TOKEN>' \  
https://graph.facebook.com/<API_VERSION>/<EVENT_SOURCE_GROUP_ID>/shared_accounts

Step 4: Create Audiences

At this point you have signals from pixels or app events set up and associated with an event source group and your real estate catalog. To target people interested in your listings, create a dynamic audience of people. Include or exclude people from the audience based on the intent signals. You can also apply additional rule-based filters to customize your audience as you do with Website Custom Audiences. See Custom Audiences.

To set up a new audience, make an HTTP POST to /act_<AD_ACCOUNT_ID>/customaudiences.

Required parameters

Field NameData TypeDescription
namestringAudience name.
subtypeenum {CLAIM}Type of custom audience. Must be set to CLAIM.
claim_objectiveenum {HOME_LISTING}Objective of audience. Must be set to HOME_LISTING.
event_source_groupidEvent source group to build audience.
inclusionsobject[]Array of JSON objects. Lists each intent signal that makes someone eligible for this audience.
inclusions: event (required)enum { Search, ViewContent, InitiateCheckout, Purchase }Event name of a signal. Used for inclusion in audience: {'event': 'Search', …}.
inclusions: retention (required)objectMinimum and maximum amount of time since Meta received the event. Determines whether to consider the event for inclusion. Example: {…, 'retention': {'min_seconds': 0, 'max_seconds': 259200}, …}. Retention must be at least 4 hours.
inclusions: countJSON operatorsNumber of times event fired. You can use both equality and numeric comparison operators such as {…'count': {'lte': 3}, …}.

Optional parameters

Field NameData TypeDescription
content_typeenum {HOME_LISTING}Type of signals used to build this audience.
descriptionstringDescription of audience.
exclusionsobject[]Array of JSON objects listing each intent signal that excludes someone from this audience.
exclusions: event (required)enum { Search, ViewContent, InitiateCheckout, Purchase }Event name of a signal used for exclusion: {'event': 'Search', …}.
exclusions: retention (required)objectMinimum and maximum amount of time since Meta received the event. Determines whether to consider the event for exclusion, for example, {…, 'retention': {'min_seconds': 0, 'max_seconds': 259200}, …}. Retention must be at least 4 hours.
ruleobjectAudience Rule from Website Custom Audiences. Filter event stream by these rules before any inclusions and exclusions processed. See a list of specific fields available. You can use these with any of standard JSON Operators for Audience Rules.
rule: home_listing_set_id (required)objectListing set ID: {'eq': '1234'}​}

For example, to create an audience that targets people who viewed or purchased in the last 14 days:

Select language

cURL


curl \  
  -F 'name=Viewed or Purchased Last 14 days' \  
  -F 'subtype=CLAIM' \  
  -F 'claim_objective=HOME_LISTING' \  
  -F 'content_type=HOME_LISTING' \  
  -F 'event_source_group=<EVENT_SOURCE_GROUP_ID>' \  
  -F 'rule={"home_listing_set_id":{"eq":"<HOME_LISTING_SET_ID>"}​}' \  
  -F 'inclusions=[  
    {  
      "event": "ViewContent",  
      "count": {"gt":0},  
      "retention": {"min_seconds":0,"max_seconds":1209600}  
    },  
    {  
      "event": "Purchase",  
      "count": {"gt":0},  
      "retention": {"min_seconds":0,"max_seconds":1209600}  
    }  
  ]' \  
  -F 'access_token=<ACCESS_TOKEN>' \  
https://graph.facebook.com/<API_VERSION>/act_<AD_ACCOUNT_ID>/customaudiences

Unofficial mirror for reference/search purposes. All content originates from developers.facebook.com — see the source link at the top of each page. Machine-readable indexes: llms.txt · llms-full.txt · About