OSRS Price Data API

Observed Grand Exchange prices for apps, research, and AI assistants.

The production API is public, read-only, and needs no account or API key. Search for an item, then request its latest available price observations in in-game gold pieces (GP).

OpenAPI specification

Look up a price

  1. Find the item.

    GET /api/public/items?q=abyssal%20whip&limit=10

    q accepts an item name or exact ID, with 2–80 characters total and at least two after trimming surrounding whitespace. limit accepts 1–20 results and defaults to 10. The response contains an items list with item_id, name, and the canonical item-page url. No match returns an empty list.

  2. Read its price observations.

    GET /api/public/prices/4151

    The item ID selects the exact item variant. This example looks up the Abyssal whip; the response reports each price side independently.

Use https://runescapetrader.com as the production base URL. All responses are JSON. These endpoints expose public market observations, without account data or trading actions.

Read the response

item_id, name, url
The exact item identity and canonical human-readable page to cite.
unit and buy_limit
unit is always GP, an in-game unit rather than a real-world currency. buy_limit is the Grand Exchange buy limit, or null when unknown.
prices.instant_buy
The Wiki high side: a reported completed instant-buy trade.
prices.instant_sell
The Wiki low side: a reported completed instant-sell trade, before Grand Exchange tax.
gp, observed_at, age_seconds, status
Each price side contains its GP value, that trade's UTC timestamp, its age in seconds when the response was generated, and a freshness state. Missing values are null, never a zero-GP price.
market_data_updated_at
UTC publication time of the site's market snapshot, or null. A snapshot refresh does not mean a new trade occurred for every item.
source.name and source.url
Attribution to the OSRS Wiki real-time prices project, the source of these observations.

Freshness is per price side

These are reported trades, not a live order book or guaranteed fill prices. They are also separate from the modeled trade recommendations, margins, and ROI elsewhere on the site.

Sample JSON response

Illustrative sample only, showing unavailable observations. This is not a live quote.

{
  "item_id": 4151,
  "name": "Abyssal whip",
  "url": "https://runescapetrader.com/item/4151",
  "unit": "GP",
  "buy_limit": null,
  "prices": {
    "instant_buy": {
      "gp": null,
      "observed_at": null,
      "age_seconds": null,
      "status": "unavailable"
    },
    "instant_sell": {
      "gp": null,
      "observed_at": null,
      "age_seconds": null,
      "status": "unavailable"
    }
  },
  "market_data_updated_at": null,
  "source": {
    "name": "OSRS Wiki real-time prices",
    "url": "https://oldschool.runescape.wiki/w/RuneScape:Real-time_Prices"
  }
}

Use it with an AI assistant

The OpenAPI specification describes the public endpoints for clients and tool integrations. When building a pricing answer, fetch the quote at answer time, name the buy or sell side, give the observation's exact time, and preserve any stale or unavailable state. Cite the returned url and acknowledge the Wiki source.

A useful citation reads: “Abyssal whip, instant-buy observation: [GP value], reported at [UTC observation time], via RuneScape Trader using OSRS Wiki data.” Do not substitute the snapshot publication time for a missing observation time.

We do not currently provide an MCP connector. An API or specification also does not automatically make ChatGPT, Claude, or another assistant choose this site; direct tools must be configured in the client that will use them.

Limits and errors

Requests share the browser API's allowance of 100 requests per minute per IP address. Reuse recent responses where suitable and avoid repeated polling.

A known item with a missing price returns a normal quote with null values and unavailable status for the affected side. It is different from an unknown item or a snapshot that is not ready.