# SearchRequest

> Represents an asynchronous request to find a package.

## Definition

* **Type:** Class
* **Namespace:** [UnityEditor.PackageManager.Requests](/engine/6000.5/script-reference/unityeditor/packagemanager/requests.md)
* **Assembly:** UnityEditor.CoreModule
* **Inherits from:** [Request\<PackageInfo\[\]>](/engine/6000.5/script-reference/unityeditor/packagemanager/requests/request1.md)
* **Implements:** [ISerializationCallbackReceiver](/engine/6000.5/script-reference/unityengine/iserializationcallbackreceiver.md)

```csharp
public sealed class SearchRequest : Request<PackageInfo[]>, ISerializationCallbackReceiver
```

## Remarks

The PackageManager [Client](/engine/6000.5/script-reference/unityeditor/packagemanager/client.md) class returns a SearchRequest instance when you call the [Client.Search](/engine/6000.5/script-reference/unityeditor/packagemanager/client/search.md) method to find a package or the [Client.SearchAll](/engine/6000.5/script-reference/unityeditor/packagemanager/client/searchall.md) method to find all discoverable packages. Use this object to determine when the request is complete and to access the result.

After the request completes, you can retrieve the array of [PackageInfo](/engine/6000.5/script-reference/unityeditor/packagemanager/packageinfo.md) instances from the Result property.

```csharp
using UnityEngine;
using UnityEditor.PackageManager;
using UnityEditor.PackageManager.Requests;
[ExecuteInEditMode]
public class PackageManagerSearchExample : MonoBehaviour
{
    SearchRequest m_SearchRequest;

    void Start()
    {
        Debug.Log("SearchRequest example...");
        m_SearchRequest = Client.Search("com.unity.textmeshpro");
    }

    void Update()
    {
        if (m_SearchRequest != null && m_SearchRequest.IsCompleted)
        {
            if (m_SearchRequest.Status == StatusCode.Success)
            {
                var packages = m_SearchRequest.Result;

                if (packages.Length > 0)
                {
                    var package = packages[0];
                    Debug.Log($"Found package: {package.name}" +
                        $"\nVersion: {package.version}" +
                        $"\nDescription: {package.description}");
                }
                else
                {
                    Debug.Log("No packages found");
                }
            }
            else
            {
                Debug.LogError($"Search failed: {m_SearchRequest.Error.message}");
            }
            m_SearchRequest = null;
        }
    }
}
```

**Related information**

* [Client.Search](/engine/6000.5/script-reference/unityeditor/packagemanager/client/search.md)
* [PackageCollection](/engine/6000.5/script-reference/unityeditor/packagemanager/packagecollection.md)
* [Request\<T>](/engine/6000.5/script-reference/unityeditor/packagemanager/requests/request1.md)
* [PackageInfo](/engine/6000.5/script-reference/unityeditor/packagemanager/packageinfo.md)

## Properties

| Property                                                                                                                | Description                                           |
| ----------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------- |
| [PackageIdOrName](/engine/6000.5/script-reference/unityeditor/packagemanager/requests/searchrequest/packageidorname.md) | The package id or name used in this search operation. |

## Inheritance

**Inherited Members:**

* [Request\<PackageInfo\[\]>.Result()](/engine/6000.5/script-reference/unityeditor/packagemanager/requests/request1/result.md)
* [Request.Status()](/engine/6000.5/script-reference/unityeditor/packagemanager/requests/request/status.md)
* [Request.IsCompleted()](/engine/6000.5/script-reference/unityeditor/packagemanager/requests/request/iscompleted.md)
* [Request.Error()](/engine/6000.5/script-reference/unityeditor/packagemanager/requests/request/error.md)
