> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.wynncraft.com/modules/item-recipe/search-items/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.wynncraft.com/_mcp/server.
# Search item database
POST https://api.wynncraft.com/v3/item/search
Content-Type: application/json
This endpoint is cached for 1 hour in the SHARED cache source. See [Caching](/welcome#caching). This endpoint belongs to the ITEMS rate-limit bucket. See [Throttling and Rate Limits](/welcome#throttling-and-rate-limits).
Filters can be empty and do not always need to be present in the payload. To understand the endpoint better, try the official Wynncraft item guide while monitoring the network tab in your browser devtools.
`fullResult` bypasses pagination and returns the `results` object for all objects at once.
This endpoint uses the generic pagination response format.
Enum values in these docs are based on the item metadata available on April 23, 2026. New item content can add or change values over time.
Reference: https://docs.wynncraft.com/modules/item-recipe/search-items
## Request
### Query parameters
- `page` (integer, optional)
- `fullResult` (enum, optional) — Presence-based flag that expands responses. Send it without a value as `?fullResult`. Using `?fullResult=true` or `?fullResult=false` is not accepted.
- Allowed values: ``
### Body (application/json)
This endpoint expects an ItemSearchRequest.
- `query` (string, optional, nullable)
- `type` (ItemSearchRequestType, optional)
- `tier` (ItemSearchRequestTier, optional)
- `attackSpeed` (ItemSearchRequestAttackSpeed, optional)
- `levelRange` (ItemSearchRequestLevelRange, optional)
- `professions` (ItemSearchRequestProfessions, optional)
- `identifications` (ItemSearchRequestIdentifications, optional)
- `majorIds` (ItemSearchRequestMajorIds, optional)
## Response
### 200
Paginated search results.
- `controller` (PaginationController, required)
- `results` (list of Item, required)
## Errors
### 400 Bad Request Error
Invalid request payload.
- `error` (string, required)
- `detail` (string, required)
- `code` (integer, required)
### 404 Not Found Error
No items matched the request.
- `error` (string, required)
- `detail` (string, required)
- `code` (integer, required)
## Types
### ItemSearchRequestType
### ItemSearchRequestTier
### ItemSearchRequestAttackSpeed
### ItemSearchRequestLevelRange
### ItemSearchRequestProfessions
### ItemSearchRequestIdentifications
### ItemSearchRequestMajorIds
### PaginationController
- `count` (integer, required)
- `current_count` (integer, required)
- `pages` (integer, required)
- `prev` (integer, required, nullable)
- `current` (integer, required)
- `next` (integer, required, nullable)
### Item
- `displayName` (string, required)
- `internalName` (string, required)
- `type` (enum, required)
- Allowed values: `weapon`, `armour`, `accessory`, `charm`, `tome`, `tool`, `material`, `ingredient`
- `subType` (enum, required)
- Allowed values: `bow`, `dagger`, `relik`, `spear`, `wand`, `boots`, `chestplate`, `helmet`, `leggings`, `bracelet`, `necklace`, `ring`, `guildTome`, `armourTome`, `expertiseTome`, `marathonTome`, `mysticismTome`, `lootrunTome`, `weaponTome`, `axe`, `rod`, `pickaxe`, `scythe`, `farming`, `fishing`, `mining`, `woodcutting`
- `icon` (ItemIcon, required)
- `emblem` (enum, required)
- Allowed values: `diamond5`, `diamond_5`, `diamond1`, `diamond_1`, `diamond4`, `diamond_4`, `diamond6`, `diamond_6`, `diamond3`, `diamond_3`, `diamond2`, `diamond_2`, `shield5`, `shield_5`, `shield1`, `shield_1`, `shield4`, `shield_4`, `shield6`, `shield_6`, `shield3`, `shield_3`, `shield2`, `shield_2`, `shield`, `sticker5`, `sticker_5`, `sticker1`, `sticker_1`, `sticker4`, `sticker_4`, `sticker6`, `sticker_6`, `sticker3`, `sticker_3`, `sticker2`, `sticker_2`, `square5`, `square_5`, `square4`, `square_4`, `square6`, `square_6`, `square`
- `tier` (enum, required)
- Allowed values: `rare`, `unique`, `normal`, `legendary`, `mythic`, `fabled`, `TIER3`, `TIER2`, `TIER1`, `TIER0`
- `attackSpeed` (enum, optional)
- Allowed values: `slow`, `fast`, `superSlow`, `normal`, `verySlow`, `veryFast`, `superFast`
- `averageDps` (double, optional)
- `restriction` (string, optional)
- `dropRestriction` (string, optional)
- `gathering` (enum, optional)
- Allowed values: `farming`, `fishing`, `mining`, `woodcutting`
- `set` (enum, optional)
- Allowed values: `boundless`, `corrupted`, `firemoss`, `bony`, `spore`, `petal`, `scrap`, `beachside`, `pigman`, `toxic`, `regal`, `vexing`, `voidglass`, `cosmicFoundations`, `snail`, `thanosLegionnaire`, `uth`, `cosmic`, `leaf`, `tribal`, `saint's`, `visceral`, `ascension`, `ultramarine`, `taigaElk`, `clock`, `nii`, `moirai`, `bleeding`, `liffmail`, `elf`, `slime`, `goblin`, `ghostly`, `horse`, `snow`, `skien's`, `thunderRelic`, `morph`, `black`, `earthRelic`, `waterRelic`, `relic`, `outlaw`, `silverfish`, `nether`, `fireRelic`, `airRelic`, `adventurer`, `darkened`, `bovine`, `bear`, `kaerynn`, `villager`, `spider`, `conqueredSkies`, `synchCore`, `flashfire`, `jester`, `forgottenChronicles`, `wynnterfest2016`, `bandit's`, `desert`, `blackCatalyst`, `constellation`, `hallowynn2016`
- `elements` (list of string, optional)
- `requirements` (ItemRequirements, optional)
- `majorIds` (map from string to string, optional)
- `powderSlots` (integer, optional)
- `lore` (string, optional)
- `identifications` (map from string to IdentificationValue, optional)
- `base` (map from string to IdentificationValue, optional)
### ItemIcon
- `value` (AbilityIconValue, required)
- `format` (string, required)
### ItemRequirements
- `level` (integer, optional)
- `classRequirement` (string, optional)
- `strength` (integer, optional)
- `dexterity` (integer, optional)
- `intelligence` (integer, optional)
- `defence` (integer, optional)
- `agility` (integer, optional)
### IdentificationValue
### AbilityIconValue
- `id` (string, required)
- `name` (string, required)
- `customModelData` (AbilityIconValueCustomModelData, required)
### IdentificationValue1
- `min` (integer, required)
- `raw` (integer, required)
- `max` (integer, required)
### AbilityIconValueCustomModelData
- `rangeDispatch` (list of integer, required)
## Examples
**Request**
```json
{}
```
**Response**
```json
{
"controller": {
"count": 3,
"current_count": 1,
"pages": 3,
"prev": 1,
"current": 2,
"next": 3
},
"results": [
{
"displayName": "Idol",
"internalName": "Idol",
"type": "weapon",
"subType": "spear",
"icon": {
"value": {
"id": "minecraft:potion",
"name": "spear.water3",
"customModelData": {
"rangeDispatch": [
3024
]
}
},
"format": "attribute"
},
"emblem": "diamond_5",
"tier": "mythic",
"attackSpeed": "normal",
"averageDps": 533,
"restriction": "none",
"dropRestriction": "normal",
"elements": [
"water"
],
"requirements": {
"level": 95,
"classRequirement": "warrior",
"intelligence": 120
},
"majorIds": {
"Tidal Drift": "Flying Kick will instead send you forwards. This effect is limited to once per Charge cast."
},
"powderSlots": 3,
"lore": "Intricate carvings and images, almost like that of a totem pole, cover the shaft of this marvelous trident, dredged up from the Seavale Reef. Foreign magics heighten the senses of its user in battle, but also instills a longing for the ocean. Many have succumbed to this urge and drowned themselves.",
"identifications": {
"manaRegen": {
"min": 3,
"raw": 10,
"max": 13
},
"reflection": {
"min": 9,
"raw": 30,
"max": 39
},
"waterDefence": {
"min": 5,
"raw": 15,
"max": 20
},
"rawIntelligence": 26,
"rawSpellDamage": {
"min": 79,
"raw": 264,
"max": 343
},
"raw2ndSpellCost": {
"min": -15,
"raw": -50,
"max": -65
}
},
"base": {
"baseWaterDamage": {
"min": 220,
"raw": 220,
"max": 300
}
}
}
]
}
```
**SDK Code**
```python Paginated item response with a single item
import requests
url = "https://api.wynncraft.com/v3/item/search"
payload = {}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
```
```javascript Paginated item response with a single item
const url = 'https://api.wynncraft.com/v3/item/search';
const options = {method: 'POST', headers: {'Content-Type': 'application/json'}, body: '{}'};
try {
const response = await fetch(url, options);
const data = await response.json();
console.log(data);
} catch (error) {
console.error(error);
}
```
```go Paginated item response with a single item
package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.wynncraft.com/v3/item/search"
payload := strings.NewReader("{}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
```
```ruby Paginated item response with a single item
require 'uri'
require 'net/http'
url = URI("https://api.wynncraft.com/v3/item/search")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{}"
response = http.request(request)
puts response.read_body
```
```java Paginated item response with a single item
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;
HttpResponse response = Unirest.post("https://api.wynncraft.com/v3/item/search")
.header("Content-Type", "application/json")
.body("{}")
.asString();
```
```php Paginated item response with a single item
request('POST', 'https://api.wynncraft.com/v3/item/search', [
'body' => '{}',
'headers' => [
'Content-Type' => 'application/json',
],
]);
echo $response->getBody();
```
```csharp Paginated item response with a single item
using RestSharp;
var client = new RestClient("https://api.wynncraft.com/v3/item/search");
var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```
```swift Paginated item response with a single item
import Foundation
let headers = ["Content-Type": "application/json"]
let parameters = [] as [String : Any]
let postData = JSONSerialization.data(withJSONObject: parameters, options: [])
let request = NSMutableURLRequest(url: NSURL(string: "https://api.wynncraft.com/v3/item/search")! as URL,
cachePolicy: .useProtocolCachePolicy,
timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data
let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
if (error != nil) {
print(error as Any)
} else {
let httpResponse = response as? HTTPURLResponse
print(httpResponse)
}
})
dataTask.resume()
```