Export (0) Print
Expand All

Getting the Age and Gender of Users Who Searched for a Keyword

This page has been deprecated and the content will not be refreshed as of February 2013.

Instead please see Ad Intelligence Service Reference, Researching and Pricing Keywords, or Bing Ads API Overview.

To get the age and gender of users who have searched for specific keywords, call the GetKeywordDemographics operation. The operation returns the demographics information broken out by device type. You can use the information to target your ads to device types with the most reach and to boost your bid for users of a specific gender and age group.

The following example shows how to call the GetKeywordDemographics operation.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;

// BingAds.AdIntelligence is the application-defined namespace that 
// this example uses for the Ad Intelligence service reference. 

using GetDemographics.BingAds.AdIntelligence;


namespace GetDemographics
{
    class Program
    {
        private static AdIntelligenceServiceClient service = null;

        // Specify your credentials.

        private static string m_password = "<passwordgoeshere>";
        private static string m_username = "<usernamegoeshere>";
        private static string m_token = "<devtokengoeshere>";

        // Specify the advertiser's account ID.

        private static long m_accountId = <accountidgoeshere>;


        static void Main()
        {
            KeywordDemographicResult[] demographics = null;

            try
            {
                service = new AdIntelligenceServiceClient();

                demographics = GetDemographics(m_accountId);

                if (demographics != null)
                {
                    foreach (KeywordDemographicResult keyword in demographics)
                    {
                        Console.WriteLine(keyword.Keyword);

                        if (null == keyword.Device)
                        {
                            Console.WriteLine("  There is no demographics data available for the keyword.\n");
                        }
                        else
                        {
                            Console.WriteLine("  " + keyword.Device);
                            Console.WriteLine("    Female: {0:n0}", keyword.KeywordDemographics.Female);
                            Console.WriteLine("    Male: {0:n0}", keyword.KeywordDemographics.Male);
                            Console.WriteLine("    Ages 18 to 24: {0:n0}", keyword.KeywordDemographics.Age18_24);
                            Console.WriteLine("    Ages 25 to 34: {0:n0}", keyword.KeywordDemographics.Age25_34);
                            Console.WriteLine("    Ages 35 to 49: {0:n0}", keyword.KeywordDemographics.Age35_49);
                            Console.WriteLine("    Ages 50 to 64: {0:n0}", keyword.KeywordDemographics.Age50_64);
                            Console.WriteLine("    Over 64: {0:n0}", keyword.KeywordDemographics.Age65Plus);
                        }
                    }
                }

                service.Close();
            }
            catch (CommunicationException e)
            {
                Console.WriteLine(e.Message);

                if (null != e.InnerException)
                {
                    Console.WriteLine("\n" + e.InnerException.Message);
                }

                if (service != null)
                {
                    service.Abort();
                }
            }
            catch (TimeoutException e)
            {
                Console.WriteLine(e.Message);

                if (service != null)
                {
                    service.Abort();
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);

                if (service != null)
                {
                    service.Abort();
                }
            }
        }


        // Get the age and gender of users who have searched for the specified keywords. 
        // The demographics information is broken out by device type.

        static KeywordDemographicResult[] GetDemographics(long accountId)
        {
            GetKeywordDemographicsRequest request = new GetKeywordDemographicsRequest();
            GetKeywordDemographicsResponse response = null;

            // Set the header information.

            request.CustomerAccountId = accountId.ToString();
            request.DeveloperToken = m_token;
            request.UserName = m_username;
            request.Password = m_password;

            // Set the request information.

            request.Device = new string[] { "Smartphones", "Computers", "NonSmartphones" };
            request.Keywords = new[] { "flower delivery" };
            request.Language = "English"; 
            request.PublisherCountry = "US"; 

            try
            {
                response = service.GetKeywordDemographics(request);
            }
            catch (FaultException<AdApiFaultDetail> fault)
            {
                // Log this fault.

                Console.WriteLine("GetKeywordDemographics failed with the following faults:\n");

                foreach (AdApiError error in fault.Detail.Errors)
                {
                    if (105 == error.Code) //  InvalidCredentials
                    {
                        Console.WriteLine("The specified credentials are not valid or the account is inactive.");
                    }
                    else
                    {
                        Console.WriteLine("Error code: {0} ({1})\nMessage: {2}\nDetail: {3}\n",
                            error.ErrorCode, error.Code, error.Message, error.Detail);
                    }
                }

            }
            catch (FaultException<ApiFaultDetail> fault)
            {
                // Log this fault.

                Console.WriteLine("GetKeywordDemographics failed with the following faults:\n");

                foreach (OperationError error in fault.Detail.OperationErrors)
                {
                    switch (error.Code)
                    {
                        case 106: // UserIsNotAuthorized
                            Console.WriteLine("The user is not authorized to call this operation.");
                            break;

                        case 1257: // CampaignServiceMissingLanguage
                            Console.WriteLine("The language cannot be null or empty.");
                            break;

                        case 1505: // CampaignServiceKeywordsArrayShouldNotBeNullOrEmpty
                            Console.WriteLine("The list of keywords cannot be null or empty.");
                            break;

                        case 3408: // CampaignServiceLanguageAndCountryNotSupported
                            Console.WriteLine("The specified publisher country is not allowed for the specified language.");
                            break;

                        case 3412: // CampaignServiceInvalidLanguage
                            Console.WriteLine("The specified language is not valid.");
                            break;

                        case 3413: // CampaignServiceInvalidPublisherCountry
                            Console.WriteLine("The specified publisher country is not valid.");
                            break;

                        case 3417: //CampaignServiceInvalidDevice
                            Console.WriteLine("One or more of the specified devices is not a valid device type.");
                            break;

                        default:
                            Console.WriteLine("Error code: {0} ({1})\nMessage: {2}\nDetail: {3}\n",
                                error.ErrorCode, error.Code, error.Message, error.Details);
                            break;
                    }
                }

                foreach (BatchError error in fault.Detail.BatchErrors)
                {
                    Console.WriteLine("Error code: {0} ({1})\nIndex: {2}\nMessage: {3}\nDetail: {4}\n",
                        error.ErrorCode, error.Code, error.Index, error.Message, error.Details);
                }

            }

            return (null == response) ? null : response.KeywordDemographicResult;
        }
    }
}

Show:
© 2014 Microsoft