Pasos para utilizar la API de búsqueda personalizada de Google en .NET

Estoy tratando de usar la API de búsqueda personalizada de Google en mi proyecto .NET. Tengo una clave API proporcionada por mi empresa. He creado un motor de búsqueda personalizado utilizando mi cuenta de Google y copié el valor 'cx'.

Estoy usando el siguiente código:

string apiKey = "My company Key";
string cx = "Cx";
string query = tbSearch.Text;

WebClient webClient = new WebClient();
webClient.Headers.Add("user-agent", "Only a test!");

string result = webClient.DownloadString(String.Format("https://www.googleapis.com/customsearch/v1?key={0}&cx={1}&q={2}&alt=json", apiKey, cx, query));

Recibo el siguiente error: "El servidor remoto devolvió un error: (403) Prohibido".

He probado el siguiente código también:

Google.Apis.Customsearch.v1.CustomsearchService svc = new Google.Apis.Customsearch.v1.CustomsearchService();
svc.Key = apiKey;

Google.Apis.Customsearch.v1.CseResource.ListRequest listRequest = svc.Cse.List(query);
listRequest.Cx = cx;
Google.Apis.Customsearch.v1.Data.Search search = listRequest.Fetch();

foreach (Google.Apis.Customsearch.v1.Data.Result result1 in search.Items)
{
   Console.WriteLine("Title: {0}", result1.Title);
   Console.WriteLine("Link: {0}", result1.Link);
}

Aquí obtengo la siguiente excepción en Fetch ():

Google.Apis.Requests.RequestError Access Not Configured [403] Errores [Mensaje [Access Not Configured] Ubicación [-] Razón [accessNotConfigured] Domain [useLimits]

¿Se requiere el parámetro CX? ¿Estoy obteniendo el error porque estoy usando la clave proporcionada por mi compañía y usando el parámetro CX de un motor de búsqueda personalizado usando mi cuenta de Google?

¿Hay alguna otra manera de obtener 'cx'? No queremos mostrar los anuncios de Google.

Muchas gracias de antemano por la ayuda.

Respuestas a la pregunta(2)

Su respuesta a la pregunta