# Fetch Metadata In-Game by Tags

In this How-to, we will fetch all metadata on a specific leaderboard by using tags.

## Prerequisites

* [A LootLocker account and a created game](https://lootlocker.com/sign-up)
* [A feature with at least one type of metadata](https://docs.lootlocker.com/shared-systems/metadata/how-to/add-metadata-in-console)
* [An active Game Session](https://docs.lootlocker.com/players/authentication)

## Fetching by tags

When fetching metadata by tags, you need to provide 3 things:

* **A `ulid`**: (can be retrieved through the [web console](https://console.lootlocker.com) or in the [SDK's](https://docs.lootlocker.com/the-basics/sdks) depending on the feature) of the item to fetch metadata for
  * For example: `01J96M0BX1GGTPP2QDRCBV3FW2`
* **The tags**: of the desired metadata
  * For example: `warrior, global`
* **A source type**
  * One of the following: [Progression](https://docs.lootlocker.com/game-systems/progressions), [leaderboard](https://docs.lootlocker.com/game-systems/leaderboards), [catalog\_item](https://docs.lootlocker.com/commerce/catalogs), [currency](https://github.com/lootlocker/gitbook-sync/blob/main/commerce/currencies.md)

## Calling the function

When fetching metadata by tags, a key **can be added**, but will supersede the tag, so if you want to search by tags it’s best to avoid using keys and vice versa. When fetching metadata by tags you will get all metadata on that object with the same corresponding tag(s).

{% tabs %}
{% tab title="Unity" %}

```csharp
// Available sources are: reward, leaderboard, catalog_item, progression, currency,
LootLockerMetadataSources sourceType = LootLockerMetadataSources.progression;

// The ulid of the source you are trying to fetch metadata for
string sourceID = "01J96M0BX1GGTPP2QDRCBV3FW2";

// The tags of the metadata that you want to fetch
string[] tags = {"warrior", "global" };

// Base64 can be set to content_type 'application/x-redacted', use this to avoid accidentally fetching large data files
bool ignoreFiles = true;

LootLockerSDKManager.ListMetadataWithTags(sourceType, sourceID, tags, (response) =>
{
    if (response.success)
    {
        // If it succeeded, display all fetched metadata in the console
        Debug.Log("Metadata result:");
        foreach (var entry in response.entries)
        {
            string value = "";
            Debug.Log(entry.key+": "+entry.TryGetValueAsString(out value));
        }
    }
    else
    {
        // If it failed, output the error to the console
        Debug.Log(response.errorData.message);
    }
}, ignoreFiles);
```

{% hint style="info" %}
Check out our [SDK](https://docs.lootlocker.com/the-basics/unity-quick-start) for more ways of handling the received metadata entries.
{% endhint %}
{% endtab %}

{% tab title="Unreal" %}

### Coming soon

{% endtab %}

{% tab title="REST" %}

```bash
curl -X GET 'https://api.lootlocker.io/game/metadata/source/catalog_item/id/{ulid}?tags={tags}&ignore_files={bool}' \
    -H 'x-session-token: your_token_here' \
```

{% endtab %}
{% endtabs %}

## Conclusion

In this How-to we’ve fetched multiple metadata entries that were created in the [web console](https://console.lootlocker.com) by using tags. Metadata also provides the possibility to fetch a [single metadata](https://docs.lootlocker.com/shared-systems/metadata/how-to/fetch-a-single-metadata-in-game) in game or Fetch metadata in game from [multiple sources](https://docs.lootlocker.com/shared-systems/metadata/how-to/fetch-metadata-in-game-from-multiple-sources).
