# Old School RuneScape Wiki

> Track the Old School RuneScape Grand Exchange and look things up in the game's wiki. Check what an item is worth, price a whole watchlist, chart how a price has moved, see what rose and fell most across the market, find the best flips or the items worth high alching, and search or read any wiki article. Items are chosen by name rather than by id, prices come with how long ago they actually traded, and every profit already has the Grand Exchange's 2% tax taken off. No account or API key is required.

App · Gaming · 8 actions. Web page: https://docs.lodol.com/docs/integrations/osrs-wiki

## Actions

### Find high alchemy profits

The items worth more cast to coins than they cost to buy. High Level Alchemy turns one item plus one nature rune into a fixed number of coins, so it profits whenever that payout beats the item's price plus the rune's, and the current rune price is worked in. Nothing is sold on the Grand Exchange, so no tax applies.

**Inputs**

- How many (`limit`, number): How many items to return, most notable first. From 1 to 50. Default: `10`.
- Most to pay per item (`max_price`, number): Only items you could buy for this many coins or fewer. Leave it empty for items at any price. At least 0.
- Include (`availability`, text): Which items to consider. Free-to-play accounts cannot trade members' items at all. One of: `any` (Any item), `free` (Free-to-play items only), `members` (Members' items only). Default: `any`.

**Outputs**

- `item_count` (number)
- `items` (list): Biggest profit per cast first.
- `items_considered` (number): How many items were profitable before the list was trimmed.
- `method_note` (text)
- `nature_rune_price` (number): What one nature rune costs right now.

**Example output**

```json
{
  "item_count": 1,
  "items": [
    {
      "buy_limit": 70,
      "buy_price": 57542,
      "buy_price_age_minutes": 3,
      "buy_price_text": "57.5k",
      "daily_volume": 20875,
      "high_alch_value": 59000,
      "high_alch_value_text": "59k",
      "icon_url": "https://oldschool.runescape.wiki/images/Dragon_med_helm.png",
      "item_id": 1149,
      "item_name": "Dragon med helm",
      "max_profit_per_limit": 92400,
      "members": true,
      "profit_per_cast": 1320,
      "profit_per_cast_text": "1.3k",
      "wiki_url": "https://oldschool.runescape.wiki/w/Dragon_med_helm"
    }
  ],
  "items_considered": 158,
  "method_note": "Profit is the item's High Level Alchemy value less what it costs to buy and less one nature rune at 138 gp. Alching is not a Grand Exchange sale, so no tax applies. Only items trading at least 100 a day, whose price traded in the last 60 minutes, are listed -- so the ones shown can actually be bought at the price shown.",
  "nature_rune_price": 138
}
```

### Find items worth flipping

The items whose buy and sell prices are furthest apart right now, with the 2% tax already taken off and the busiest markets first. Set a budget and only items you could afford come back. Both prices have to have traded within the hour and the item has to trade in real volume, which is what keeps an impossible margin between a fresh price and a three-week-old one out of the list.

**Inputs**

- How many (`limit`, number): How many items to return, most notable first. From 1 to 50. Default: `10`.
- Most to pay per item (`max_price`, number): Only items you could buy for this many coins or fewer. Leave it empty for items at any price. At least 0.
- Include (`availability`, text): Which items to consider. Free-to-play accounts cannot trade members' items at all. One of: `any` (Any item), `free` (Free-to-play items only), `members` (Members' items only). Default: `any`.

**Outputs**

- `item_count` (number)
- `items` (list): Biggest profit per item first.
- `items_considered` (number): How many items had a real margin before the list was trimmed.
- `measured_at` (text): When the volume figures were taken.
- `method_note` (text)
- `tax_note` (text)

**Example output**

```json
{
  "item_count": 1,
  "items": [
    {
      "buy_limit": 8,
      "buy_price": 1316681,
      "buy_price_age_minutes": 5,
      "buy_price_text": "1.3m",
      "buy_price_traded_at": "2025-06-02T09:38:12Z",
      "daily_volume": 1065,
      "icon_url": "https://oldschool.runescape.wiki/images/Seers_ring.png",
      "item_id": 6731,
      "item_name": "Seers ring",
      "margin": 384198,
      "max_profit_per_limit": 2862920,
      "members": true,
      "price_age_note": "",
      "profit_per_item": 357865,
      "profit_per_item_text": "357.9k",
      "rank": 1,
      "sell_price": 932483,
      "sell_price_age_minutes": 2,
      "sell_price_text": "932.5k",
      "sell_price_traded_at": "2025-06-02T09:40:44Z",
      "tax": 26333,
      "tax_exempt": false,
      "wiki_url": "https://oldschool.runescape.wiki/w/Seers_ring"
    }
  ],
  "items_considered": 665,
  "measured_at": "2025-06-01T10:49:56Z",
  "method_note": "Buy at the sell price, sell at the buy price, and the profit is what is left after the Grand Exchange's 2% cut. Only items whose prices both traded in the last 60 minutes and that trade at least 1,000 a day are listed, because a margin between a fresh price and a three-week-old one cannot be traded at any price.",
  "tax_note": "The Grand Exchange takes 2% of every sale, rounded down and capped at 5,000,000 gp per item. Some items are exempt. Every profit figure here already has it deducted."
}
```

### Get a wiki page

Read one wiki article as plain text: the opening summary, or the whole thing to hand to an AI step. Redirects are followed, so 'Whip' finds the right page. A title with no article comes back marked not found rather than failing, so a lookup workflow can answer instead of breaking.

**Inputs**

- Page (`title`, text, required): The article's title, as the wiki spells it. Search the wiki first if you are not sure.
- How much (`length`, text): How much of the article to return. One of: `summary`, `full` (Full article). Default: `summary`.

**Outputs**

- `attribution` (object): Credit to show wherever this wiki text is republished.
- `found` (true/false): False when the wiki has no such article.
- `last_edited` (text)
- `length` (text)
- `not_found_note` (text): Set only when there is no such article, saying so. Empty otherwise.
- `page_id` (number)
- `redirected_from` (text): The title asked for, when the wiki forwarded it elsewhere. Empty otherwise.
- `requested_title` (text)
- `text` (text): The article, as plain text.
- `title` (text): The article's actual title, after any redirect.
- `url` (text)
- `word_count` (number)

**Example output**

```json
{
  "attribution": {
    "license": "CC BY-NC-SA 3.0",
    "license_url": "https://creativecommons.org/licenses/by-nc-sa/3.0/",
    "text": "Data from the Old School RuneScape Wiki",
    "url": "https://oldschool.runescape.wiki"
  },
  "found": true,
  "last_edited": "2025-06-01T10:56:05Z",
  "length": "summary",
  "not_found_note": "",
  "page_id": 10123,
  "redirected_from": null,
  "requested_title": "Abyssal whip",
  "text": "The abyssal whip is a one-handed melee weapon which requires an Attack level of 70 to wield. It can be obtained as a drop from abyssal demons or from sacrificing an unsired.",
  "title": "Abyssal whip",
  "url": "https://oldschool.runescape.wiki/w/Abyssal_whip",
  "word_count": 38
}
```

### Get item price

What one item is worth on the Grand Exchange right now: what it costs to buy, what it fetches to sell, and what flipping it would leave after the 2% tax. Comes with the buy limit, how many traded over the last day, the high alchemy value and when each price last actually traded, so a price nobody has paid in days is never mistaken for a live one.

**Inputs**

- Item (`item`, text, required): The item to look up. Pick it from the list, or use the name exactly as it appears in game when it comes from an earlier step.

**Outputs**

- `buy_limit` (number): How many of this item one account can buy every 4 hours.
- `buy_price` (number): What one costs to buy right now, in coins. Empty when nobody has bought one since the wiki started watching.
- `buy_price_age_minutes` (number): How many minutes ago that was.
- `buy_price_text` (text): The same price the way a player reads it, such as '1.4b'.
- `buy_price_traded_at` (text): When one last sold at the buy price (ISO 8601, UTC).
- `daily_volume` (number): How many of this item changed hands over the last day.
- `examine` (text): The item's in-game examine text.
- `high_alch_value` (number): The coins High Level Alchemy turns one into.
- `icon_url` (text): Link to the item's in-game icon, ready to use in a message.
- `item_id` (number): The item's id in game.
- `item_name` (text)
- `low_alch_value` (number)
- `margin` (number): The gap between the two prices, before tax.
- `max_profit_per_limit` (number): Profit if a whole buy limit were bought and sold. Check the daily volume too: an item that trades a few hundred a day will not fill a limit of 18,000.
- `members` (true/false): True when the item can only be traded on a members' world.
- `price_age_note` (text): Set only when the price is too old to trust, saying so. Empty otherwise.
- `profit_per_item` (number): What buying at the sell price and selling at the buy price leaves after tax. Negative when the two prices are too close together.
- `sell_price` (number): What one fetches if you sell it right now, in coins.
- `sell_price_age_minutes` (number)
- `sell_price_text` (text)
- `sell_price_traded_at` (text)
- `tax` (number): The Grand Exchange's cut of a sale at the buy price: 2% rounded down, capped at 5,000,000 coins.
- `tax_exempt` (true/false): True for the 48 items the Grand Exchange charges no fee on.
- `tax_note` (text)
- `wiki_url` (text): Link to the item's page on the wiki.

**Example output**

```json
{
  "buy_limit": 70,
  "buy_price": 1798411,
  "buy_price_age_minutes": 2,
  "buy_price_text": "1.8m",
  "buy_price_traded_at": "2025-06-02T09:41:05Z",
  "daily_volume": 6039,
  "examine": "A weapon from the Abyss.",
  "high_alch_value": 72000,
  "icon_url": "https://oldschool.runescape.wiki/images/Abyssal_whip.png",
  "item_id": 4151,
  "item_name": "Abyssal whip",
  "low_alch_value": 48000,
  "margin": 17409,
  "max_profit_per_limit": -1299130,
  "members": true,
  "price_age_note": "",
  "profit_per_item": -18559,
  "sell_price": 1781002,
  "sell_price_age_minutes": 0,
  "sell_price_text": "1.8m",
  "sell_price_traded_at": "2025-06-02T09:43:18Z",
  "tax": 35968,
  "tax_exempt": false,
  "tax_note": "The Grand Exchange takes 2% of every sale, rounded down and capped at 5,000,000 gp per item. Some items are exempt. Every profit figure here already has it deducted.",
  "wiki_url": "https://oldschool.runescape.wiki/w/Abyssal_whip"
}
```

### Get price history

How an item's price has moved over a chosen period, as a series of points ready to chart plus the summary a reader actually wants: where it started, where it is now, how far it moved in coins and percent, its high and low and when each happened, and how many traded.

**Inputs**

- Item (`item`, text, required): The item to look up. Pick it from the list, or use the name exactly as it appears in game when it comes from an earlier step.
- Period (`period`, text): How far back to look. One of: `6h` (Last 6 hours), `24h` (Last 24 hours), `7d` (Last 7 days), `30d` (Last 30 days), `6m` (Last 6 months), `1y` (Last year). Default: `24h`.

**Outputs**

- `average_price` (number)
- `change` (number): Coins gained or lost over the period.
- `change_percent` (number)
- `direction` (text): One of 'up', 'down', 'flat' or 'unknown'.
- `highest_price` (number)
- `highest_price_at` (text)
- `icon_url` (text): Link to the item's in-game icon, ready to use in a message.
- `interval_minutes` (number): How much time each point covers.
- `item_id` (number): The item's id in game.
- `item_name` (text)
- `latest_price` (number)
- `lowest_price` (number)
- `lowest_price_at` (text)
- `members` (true/false): True when the item can only be traded on a members' world.
- `period` (text)
- `period_description` (text)
- `period_end` (text)
- `period_start` (text)
- `point_count` (number)
- `points` (list): Every interval that had trades, oldest first.
- `starting_price` (number)
- `summary_note` (text): Set only when the item had no trades at all. Empty otherwise.
- `total_trades` (number)
- `wiki_url` (text): Link to the item's page on the wiki.

**Example output**

```json
{
  "average_price": 1395709528,
  "change": 5921475,
  "change_percent": 0.42,
  "direction": "up",
  "highest_price": 1404988120,
  "highest_price_at": "2025-05-30T04:00:00Z",
  "icon_url": "https://oldschool.runescape.wiki/images/Twisted_bow.png",
  "interval_minutes": 60,
  "item_id": 20997,
  "item_name": "Twisted bow",
  "latest_price": 1402054309,
  "lowest_price": 1391396259,
  "lowest_price_at": "2025-05-28T05:00:00Z",
  "members": true,
  "period": "7d",
  "period_description": "the last 7 days",
  "period_end": "2025-06-02T09:00:00Z",
  "period_start": "2025-05-26T09:00:00Z",
  "point_count": 168,
  "points": [
    {
      "buy_price": 1399545000,
      "price": 1396132834,
      "price_text": "1.4b",
      "sell_price": 1392720667,
      "time": "2025-05-26T09:00:00Z",
      "trades": 5
    },
    {
      "buy_price": 1405120000,
      "price": 1402054309,
      "price_text": "1.4b",
      "sell_price": 1398988618,
      "time": "2025-06-02T08:00:00Z",
      "trades": 7
    }
  ],
  "starting_price": 1396132834,
  "summary_note": "",
  "total_trades": 1326,
  "wiki_url": "https://oldschool.runescape.wiki/w/Twisted_bow"
}
```

### Get prices for several items

Price a whole watchlist at once and see what it adds up to: what buying one of each would cost, what selling one of each would bring in after tax, and which is the most and least valuable. Use this rather than one step per item: the whole list is priced in a single request, so fifty items cost exactly what one does.

**Inputs**

- Items (`items`, list, required): The items to price. Pick as many as you like; they are all priced in one request, up to 100.

**Outputs**

- `item_count` (number)
- `items` (list): Every item, in the order chosen.
- `items_without_prices` (number): How many items have never been traded.
- `least_valuable` (object)
- `most_valuable` (object)
- `tax_note` (text)
- `total_if_sold` (number): What selling one of every item would bring in right now, after tax.
- `total_if_sold_text` (text)
- `total_to_buy` (number): What buying one of every item would cost right now.
- `total_to_buy_text` (text)

**Example output**

```json
{
  "item_count": 2,
  "items": [
    {
      "buy_limit": 8,
      "buy_price": 1398888888,
      "buy_price_age_minutes": 22,
      "buy_price_text": "1.4b",
      "buy_price_traded_at": "2025-06-02T09:20:59Z",
      "icon_url": "https://oldschool.runescape.wiki/images/Twisted_bow.png",
      "item_id": 20997,
      "item_name": "Twisted bow",
      "margin": 7382888,
      "max_profit_per_limit": 19063104,
      "members": true,
      "price_age_note": "",
      "profit_per_item": 2382888,
      "sell_price": 1391506000,
      "sell_price_age_minutes": 2,
      "sell_price_text": "1.4b",
      "sell_price_traded_at": "2025-06-02T09:40:50Z",
      "tax": 5000000,
      "tax_exempt": false,
      "wiki_url": "https://oldschool.runescape.wiki/w/Twisted_bow"
    },
    {
      "buy_limit": 100,
      "buy_price": 10991371,
      "buy_price_age_minutes": 1,
      "buy_price_text": "11m",
      "buy_price_traded_at": "2025-06-02T09:42:35Z",
      "icon_url": "https://oldschool.runescape.wiki/images/Old_school_bond.png",
      "item_id": 13190,
      "item_name": "Old school bond",
      "margin": 51371,
      "max_profit_per_limit": 5137100,
      "members": false,
      "price_age_note": "",
      "profit_per_item": 51371,
      "sell_price": 10940000,
      "sell_price_age_minutes": 5,
      "sell_price_text": "10.9m",
      "sell_price_traded_at": "2025-06-02T09:38:25Z",
      "tax": 0,
      "tax_exempt": true,
      "wiki_url": "https://oldschool.runescape.wiki/w/Old_school_bond"
    }
  ],
  "items_without_prices": 0,
  "least_valuable": {
    "buy_limit": 100,
    "buy_price": 10991371,
    "buy_price_age_minutes": 1,
    "buy_price_text": "11m",
    "buy_price_traded_at": "2025-06-02T09:42:35Z",
    "icon_url": "https://oldschool.runescape.wiki/images/Old_school_bond.png",
    "item_id": 13190,
    "item_name": "Old school bond",
    "margin": 51371,
    "max_profit_per_limit": 5137100,
    "members": false,
    "price_age_note": "",
    "profit_per_item": 51371,
    "sell_price": 10940000,
    "sell_price_age_minutes": 5,
    "sell_price_text": "10.9m",
    "sell_price_traded_at": "2025-06-02T09:38:25Z",
    "tax": 0,
    "tax_exempt": true,
    "wiki_url": "https://oldschool.runescape.wiki/w/Old_school_bond"
  },
  "most_valuable": {
    "buy_limit": 8,
    "buy_price": 1398888888,
    "buy_price_age_minutes": 22,
    "buy_price_text": "1.4b",
    "buy_price_traded_at": "2025-06-02T09:20:59Z",
    "icon_url": "https://oldschool.runescape.wiki/images/Twisted_bow.png",
    "item_id": 20997,
    "item_name": "Twisted bow",
    "margin": 7382888,
    "max_profit_per_limit": 19063104,
    "members": true,
    "price_age_note": "",
    "profit_per_item": 2382888,
    "sell_price": 1391506000,
    "sell_price_age_minutes": 2,
    "sell_price_text": "1.4b",
    "sell_price_traded_at": "2025-06-02T09:40:50Z",
    "tax": 5000000,
    "tax_exempt": false,
    "wiki_url": "https://oldschool.runescape.wiki/w/Twisted_bow"
  },
  "tax_note": "The Grand Exchange takes 2% of every sale, rounded down and capped at 5,000,000 gp per item. Some items are exempt. Every profit figure here already has it deducted.",
  "total_if_sold": 1374616120,
  "total_if_sold_text": "1.4b",
  "total_to_buy": 1409880259,
  "total_to_buy_text": "1.4b"
}
```

### Get the biggest price changes

What rose and fell most across the whole Grand Exchange over a chosen period: the market news, in one step. Both lists come back every time. Only items with real trading on both sides of the comparison are counted, so a 2 gp fish rounding up to 7 gp never outranks a genuine move.

**Inputs**

- Period (`period`, text): How far back to compare against. One of: `1h` (Last hour), `6h` (Last 6 hours), `24h` (Last 24 hours), `7d` (Last 7 days), `30d` (Last 30 days). Default: `24h`.
- How many of each (`limit`, number): How many risers and how many fallers to return. From 1 to 50. Default: `10`.
- Include (`availability`, text): Which items to consider. Free-to-play accounts cannot trade members' items at all. One of: `any` (Any item), `free` (Free-to-play items only), `members` (Members' items only). Default: `any`.

**Outputs**

- `activity_note` (text)
- `compared_from` (text): Start of the earlier hour compared (ISO 8601).
- `compared_to` (text)
- `fallers` (list): Biggest falls first.
- `items_compared` (number): How many items were active enough to compare.
- `period` (text)
- `period_description` (text)
- `risers` (list): Biggest gains first.

**Example output**

```json
{
  "activity_note": "Only items that traded at least 20 times, and turned over at least 10m gp, in both of the hours compared are included. Without that, a 2 gp fish rounding up to 7 gp would outrank every real move on the board.",
  "compared_from": "2025-06-01T09:00:00Z",
  "compared_to": "2025-06-02T09:00:00Z",
  "fallers": [
    {
      "buy_limit": 13000,
      "change": -3503,
      "change_percent": -6.7,
      "change_text": "-3.5k",
      "icon_url": "https://oldschool.runescape.wiki/images/Aldarium.png",
      "item_id": 29993,
      "item_name": "Aldarium",
      "members": true,
      "price_now": 48791,
      "price_now_text": "48.8k",
      "price_then": 52294,
      "price_then_text": "52.3k",
      "trades": 2969,
      "wiki_url": "https://oldschool.runescape.wiki/w/Aldarium"
    }
  ],
  "items_compared": 278,
  "period": "24h",
  "period_description": "the last 24 hours",
  "risers": [
    {
      "buy_limit": 8,
      "change": 78615,
      "change_percent": 9.2,
      "change_text": "78.6k",
      "icon_url": "https://oldschool.runescape.wiki/images/Seers_ring.png",
      "item_id": 6731,
      "item_name": "Seers ring",
      "members": true,
      "price_now": 933528,
      "price_now_text": "933.5k",
      "price_then": 854913,
      "price_then_text": "854.9k",
      "trades": 39,
      "wiki_url": "https://oldschool.runescape.wiki/w/Seers_ring"
    }
  ]
}
```

### Search the wiki

Search every Old School RuneScape Wiki article (items, monsters, quests, skills, minigames) and get back the matching passage as plain text with a link, ready to paste into a message. Use it to find the exact page title before reading a page.

**Inputs**

- Search (`query`, text, required): What to search the wiki for.
- How many (`limit`, number): How many articles to return, best match first. From 1 to 50. Default: `10`.

**Outputs**

- `attribution` (object): Credit to show wherever this wiki text is republished.
- `query` (text)
- `result_count` (number)
- `results` (list): Best match first.
- `total_matches` (number): How many articles match in total.

**Example output**

```json
{
  "attribution": {
    "license": "CC BY-NC-SA 3.0",
    "license_url": "https://creativecommons.org/licenses/by-nc-sa/3.0/",
    "text": "Data from the Old School RuneScape Wiki",
    "url": "https://oldschool.runescape.wiki"
  },
  "query": "abyssal whip",
  "result_count": 1,
  "results": [
    {
      "last_edited": "2025-05-31T11:37:28Z",
      "page_id": 10123,
      "summary": "The abyssal whip is a one-handed melee weapon which requires an Attack level of 70 to wield. It can be obtained as a drop from abyssal demons or from sacrificing an unsired.",
      "title": "Abyssal whip",
      "url": "https://oldschool.runescape.wiki/w/Abyssal_whip",
      "word_count": 658
    }
  ],
  "total_matches": 1143
}
```
