# Search

> Searches for packages in the Unity Package Registry. Returns a SearchRequest object that provides access to matching packages.

## Definition

* **Type:** Method
* **Namespace:** [UnityEditor.PackageManager](/engine/6000.6/script-reference/unityeditor/packagemanager.md)
* **Assembly:** UnityEditor.CoreModule

## Search(string, bool)

Searches for packages in the Unity Package Registry. Returns a [SearchRequest](/engine/6000.6/script-reference/unityeditor/packagemanager/requests/searchrequest.md) object that provides access to matching packages.

```csharp
public static SearchRequest Search(string packageIdOrName, bool offlineMode)
```

### Parameters

**** (\[string]\(https\://learn.microsoft.com/dotnet/api/system.string)): The name or ID of the package. `ArgumentException` is thrown if `packageIdOrName` is `null` or empty.**** (\[bool]\(https\://learn.microsoft.com/dotnet/api/system.boolean)): Specifies whether or not the Package Manager requests the latest information about the project's packages from the remote Unity package registry. When `offlineMode` is `true`, the [PackageInfo](/engine/6000.6/script-reference/unityeditor/packagemanager/packageinfo.md) object returned by the Package Manager contains information obtained from the local package cache, which could be out of date.

### Returns

| Type                                                                                                  | Description                                                                                                                                                                                                                                                                                                                                               |
| ----------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [SearchRequest](/engine/6000.6/script-reference/unityeditor/packagemanager/requests/searchrequest.md) | A [SearchRequest](/engine/6000.6/script-reference/unityeditor/packagemanager/requests/searchrequest.md) instance, which you can use to get the array of [PackageInfo](/engine/6000.6/script-reference/unityeditor/packagemanager/packageinfo.md) objects representing the packages matching the search criteria from the `SearchRequest.Result` property. |

### Remarks

This operation issues a request to the main Unity package registry.

`Search()` is an asynchronous operation. Before the operation is complete, you can use the `SearchRequest` instance to monitor the asynchronous operation.

**Note:** Make sure any other Client operations complete before calling this method. For more information, refer to the note on the [Client](/engine/6000.6/script-reference/unityeditor/packagemanager/client.md) class reference page.

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

    void Start()
    {
        Debug.Log("Client.Search 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**

* [SearchRequest](/engine/6000.6/script-reference/unityeditor/packagemanager/requests/searchrequest.md)
* [PackageInfo](/engine/6000.6/script-reference/unityeditor/packagemanager/packageinfo.md)
* [Client](/engine/6000.6/script-reference/unityeditor/packagemanager/client.md)

## Search(string)

Searches for packages in the Unity Package Registry. Returns a [SearchRequest](/engine/6000.6/script-reference/unityeditor/packagemanager/requests/searchrequest.md) object that provides access to matching packages.

```csharp
public static SearchRequest Search(string packageIdOrName)
```

### Parameters

**** (\[string]\(https\://learn.microsoft.com/dotnet/api/system.string)): The name or ID of the package. `ArgumentException` is thrown if `packageIdOrName` is `null` or empty.

### Returns

| Type                                                                                                  | Description                                                                                                                                                                                                                                                                                                                                               |
| ----------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [SearchRequest](/engine/6000.6/script-reference/unityeditor/packagemanager/requests/searchrequest.md) | A [SearchRequest](/engine/6000.6/script-reference/unityeditor/packagemanager/requests/searchrequest.md) instance, which you can use to get the array of [PackageInfo](/engine/6000.6/script-reference/unityeditor/packagemanager/packageinfo.md) objects representing the packages matching the search criteria from the `SearchRequest.Result` property. |

### Remarks

This operation issues a request to the main Unity package registry.

`Search()` is an asynchronous operation. Before the operation is complete, you can use the `SearchRequest` instance to monitor the asynchronous operation.

**Note:** Make sure any other Client operations complete before calling this method. For more information, refer to the note on the [Client](/engine/6000.6/script-reference/unityeditor/packagemanager/client.md) class reference page.

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

    void Start()
    {
        Debug.Log("Client.Search 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**

* [SearchRequest](/engine/6000.6/script-reference/unityeditor/packagemanager/requests/searchrequest.md)
* [PackageInfo](/engine/6000.6/script-reference/unityeditor/packagemanager/packageinfo.md)
* [Client](/engine/6000.6/script-reference/unityeditor/packagemanager/client.md)
