Quick start

Every endpoint is a plain GET under https://osrsindex.com.

curl "https://osrsindex.com/api/v1/search?q=abyssal+whip"

From a web page, too — any origin may call it:

const response = await fetch('https://osrsindex.com/api/v1/entities?type=item&name=abyssal+whip');
if (response.status === 429) {
  // Wait the seconds the API asks for, then try again.
  const seconds = Number(response.headers.get('retry-after') ?? 60);
}
const { items, next_cursor } = await response.json();

Access and limits

Key
None. Anonymous and free.
Rate limit
60 requests every 60 seconds per IP address, counted together with that address's visits to the site.
When you are over it
429 with Retry-After in seconds. Wait that long, then retry.
Caching
The edge keeps most answers for five minutes, and the status for one. An answer from the cache does not count against the limit. Browsers may keep an answer for up to four hours, so fetch from a server when you need the freshest copy.
Browsers
Any origin: Access-Control-Allow-Origin: *.
Please
Send a User-Agent that names your project and how to reach you.

Licence and attribution

The text is the Old School RuneScape Wiki's, under CC BY-NC-SA 3.0. Those terms pass to anything you build with it:

  • Credit the Old School RuneScape Wiki and link the page — every record carries its title and canonical_url.
  • Non-commercial use only.
  • Share what you make from it under the same licence.

Every answer with wiki content also sends Link: <…>; rel="license". Suggested credit: “Content from the Old School RuneScape Wiki (operated by Weird Gloop), licensed under CC BY-NC-SA 3.0.”

About and licensing

Endpoints

Lists page with limit (up to 100) and offset (up to 1000); past that, pass the previous page's next_cursor as cursor. Every key is always present; a value may be null. Picture fields such as sprite_url are paths on this site.

Entities

GET /api/v1/entity-types List entity types

Every kind of structured record — item, monster, NPC, quest, skill — with how many are published.

curl "https://osrsindex.com/api/v1/entity-types"

GET /api/v1/entities List entities

Structured records, ordered by name, filtered by any of the parameters. Redirects and removed pages are left out.

Parameter Type Meaning
type query · string An entity type key, such as item or quest.
name query · string Names containing this text, ignoring case.
name_from query · string Names from this one, alphabetically, inclusive.
name_to query · string Names before this one, alphabetically.
members query · boolean Only entities that are members-only (true) or are not (false).
tradeable query · boolean Only entities that are tradeable (true) or are not (false).
equipable query · boolean Only entities that are equipable (true) or are not (false).
stackable query · boolean Only entities that are stackable (true) or are not (false).
noteable query · boolean Only entities that are noteable (true) or are not (false).
quest_item query · boolean Only entities that are quest items (true) or are not (false).
two_handed query · boolean Only entities that are two-handed (true) or are not (false).
equipment_slot query · string Only items worn in this slot. One of Head, Cape, Neck, Ammunition, Weapon, Body, Shield, Legs, Hands, Feet, Ring.
quest_difficulty query · string Only quests of this difficulty. One of Novice, Intermediate, Experienced, Master, Grandmaster, Special.
page_id query · uuid Only entities from this page.
page_slug query · string Only entities from the page with this slug.
limit query · integer Results per page, 1 to 100. A larger value is treated as 100.
offset query · integer How many results to skip, at most 1000. Use cursor to go further.
cursor query · string The previous page's next_cursor, to continue a list past any offset. Keep the other parameters the same; limit may change. Cannot be combined with a non-zero offset.
curl "https://osrsindex.com/api/v1/entities?type=item&name=abyssal+whip"

GET /api/v1/entities/{entity_id} Get an entity

One structured record with its extracted data, its source page and revision, and its attribution.

Parameter Type Meaning
entity_idrequired path · uuid An entity's id.
curl "https://osrsindex.com/api/v1/entities/cb74d026-db83-45d2-9a21-adc255fd9ada"

Pages

GET /api/v1/pages/by-slug/{slug} Get a page by slug

One wiki page: identity, plain text, revision and categories. The slug is the last part of the page's osrsindex.com address. A page removed at the source answers 410 with what it was.

Parameter Type Meaning
slugrequired path · string The page's slug, such as abyssal-whip.
curl "https://osrsindex.com/api/v1/pages/by-slug/abyssal-whip"

GET /api/v1/pages/{page_id} Get a page by id

The same page detail, by id.

Parameter Type Meaning
page_idrequired path · uuid A page's id, from search, an entity's page, or a page detail.
curl "https://osrsindex.com/api/v1/pages/2b23c99c-d3f8-4716-8824-5931894f9066"

GET /api/v1/pages/{page_id}/sections List a page's sections

A page's sections in order, each as plain text with its heading and anchor.

Parameter Type Meaning
page_idrequired path · uuid A page's id, from search, an entity's page, or a page detail.
limit query · integer Results per page, 1 to 100. A larger value is treated as 100.
offset query · integer How many results to skip, at most 1000. Use cursor to go further.
curl "https://osrsindex.com/api/v1/pages/2b23c99c-d3f8-4716-8824-5931894f9066/sections"

GET /api/v1/pages/{page_id}/infoboxes List a page's infoboxes

A page's infoboxes: the wiki's labels and values, and the same fields normalised.

Parameter Type Meaning
page_idrequired path · uuid A page's id, from search, an entity's page, or a page detail.
limit query · integer Results per page, 1 to 100. A larger value is treated as 100.
offset query · integer How many results to skip, at most 1000. Use cursor to go further.
curl "https://osrsindex.com/api/v1/pages/2b23c99c-d3f8-4716-8824-5931894f9066/infoboxes"

Categories

GET /api/v1/categories List categories

Wiki categories, ordered by title.

Parameter Type Meaning
q query · string Titles containing this text, ignoring case.
include_hidden query · boolean Include the wiki's hidden maintenance categories.
limit query · integer Results per page, 1 to 100. A larger value is treated as 100.
offset query · integer How many results to skip, at most 1000. Use cursor to go further.
cursor query · string The previous page's next_cursor, to continue a list past any offset. Keep the other parameters the same; limit may change. Cannot be combined with a non-zero offset.
curl "https://osrsindex.com/api/v1/categories?q=items"

GET /api/v1/categories/{category_id} Get a category and its members

A category and one page of its members. An item member carries its game item id and sprite.

Parameter Type Meaning
category_idrequired path · integer A category's id.
limit query · integer Results per page, 1 to 100. A larger value is treated as 100.
offset query · integer How many results to skip, at most 1000. Use cursor to go further.
cursor query · string The previous page's next_cursor, to continue a list past any offset. Keep the other parameters the same; limit may change. Cannot be combined with a non-zero offset.
curl "https://osrsindex.com/api/v1/categories/1"

Map and media

GET /api/v1/map/pins List a page's map pins

Every map pin on one wiki page — points, areas and paths in game tile coordinates (#646).

Parameter Type Meaning
slugrequired query · string The page's slug.
curl "https://osrsindex.com/api/v1/map/pins?slug=sarah"

GET /api/v1/media/{media_asset_id} Get a picture

A sprite, artwork or thumbnail named by a sprite_url, artwork_url or thumbnail_url. Raster images only; SVG is never served.

Parameter Type Meaning
media_asset_idrequired path · uuid The id at the end of a media URL.
curl "https://osrsindex.com/api/v1/media/1c95e936-c6d8-429a-a4e6-172d1afd1c89"

Service

GET /api/v1/status Check the service

Whether the API can serve right now. The edge caches it for 60 seconds, so poll it at most once a minute, from a server: a browser may keep it for hours.

curl "https://osrsindex.com/api/v1/status"

GET /api/v1/openapi.json Get this OpenAPI document

The OpenAPI 3.1 description of every endpoint here, for code generators and validators.

curl "https://osrsindex.com/api/v1/openapi.json"

Errors

Every error has the same shape. Quote request_id when you report a fault.

{
  "error": {
    "code": "not_found",
    "message": "No such entity in this mirror.",
    "detail": null,
    "request_id": "5f1c2a9d0e7b4c3a"
  }
}
404 not_found
No such record, or no such route.
410 gone
The page was removed from the wiki. detail says what it was.
415
A media file that is not a raster image. SVG is never served.
422
A parameter failed validation. detail lists which ones.
429 rate_limited
Too many requests from your address. Wait Retry-After seconds.
502 upstream_unavailable
The data failed its own contract, so it was withheld rather than sent.
503
The service is unavailable. Retry later, honouring Retry-After when it is sent.

Prices

Grand Exchange prices are not part of this API. Use the OSRS Wiki's own real-time prices API.

Stability

v1 changes only by adding fields, parameters or endpoints. Ignore fields you do not know. A removal or a change of meaning would be /api/v2/.