Публичное API

Бесплатное REST API RMTHub для FunPay и G2G: игры, категории, фильтры поиска и статистика продавцов. Без ключа API.
v1

Соглашения

  • Базовый URL: https://rmthub.com

  • Все эндпоинты v1 живут под префиксом /api/v1/. Текущая мажорная версия — в URL.

  • Большинство эндпоинтов работают без авторизации. Чтобы получить более высокий лимит, передавайте API-ключ в `Authorization: Bearer rmthub_live_…`. Создать ключ можно в /profile/api-keys после входа.

  • Все ответы — JSON с Content-Type: application/json.

  • Каждый успешный ответ обёрнут в { data, meta }. В data лежит ресурс, в meta — версия API, которой собран ответ, и временная метка fetchedAt.

  • В ответах с ошибкой возвращается { error: "<сообщение>" }. 4xx — ошибки клиента, 5xx — сервера. В 5xx дополнительно может прийти поле details для отладки.

  • Числовые поля возвращаются как JSON-числа (без строкового обрамления).

Версионирование

Авторизация и лимиты

Эндпоинты v1 работают без авторизации и ограничены лимитами на IP (30 запросов в минуту и 500 в сутки). Если передать корректный заголовок `Authorization: Bearer rmthub_live_…`, применяются лимиты ключа — задаются для каждого ключа, по умолчанию 60/мин и 1 000/сут, изменяются администратором. В каждом ответе приходят заголовки `X-RateLimit-Limit`, `X-RateLimit-Remaining`, `X-RateLimit-Reset`, а в 429-ответах ещё и `Retry-After` (в секундах). Невалидный или отозванный ключ возвращает 401.

Анонимный (без API-ключа)

В минуту: 30 / IP

В сутки: 500 / IP

С авторизацией по ключу

В минуту: per-key (default 60)

В сутки: per-key (default 1 000)

Получить API-ключ

Эндпоинты

задокументировано: 10

FunPay

GET

/api/v1/funpay/users/{username}

Публичный профиль продавца FunPay и статистика по отзывам — выручка, разбивка по периодам и играм, агрегаты за всё время.


Параметры пути
username
string
Обязательный

Имя пользователя FunPay, URL-encoded. Должно быть от 1 до 100 символов.

Пример запроса
GET /api/v1/funpay/users/Roymi HTTP/1.1
Host: rmthub.com
Accept: application/json

curl 'https://rmthub.com/api/v1/funpay/users/Roymi'
Пример ответа
{
  "data": {
    "user": {
      "id": 7771234,
      "username": "Roymi",
      "url": "https://funpay.com/users/7771234/",
      "avatarUrl": "https://funpay.com/img/users/7771234/avatar.jpg",
      "reviewsCount": 482,
      "banned": false,
      "status": "active",
      "registrationDate": "15 Mar 2020"
    },
    "stats": {
      "totalAmount": 12450,
      "totalReviews": 482,
      "averagePerReview": 25.83,
      "gamesPlayed": 6,
      "byTimePeriod": {
        "thisMonth":  { "amount": 320, "count": 14 },
        "lastMonth":  { "amount": 410, "count": 18 }
      },
      "byGame": {
        "Valorant": { "amount": 4200, "count": 160 },
        "CS2":      { "amount": 3800, "count": 140 }
      },
      "byTimePeriodWithPercentage": [
        { "period": "thisMonth", "amount": 320, "count": 14, "percentage": 3 },
        { "period": "lastMonth", "amount": 410, "count": 18, "percentage": 3 }
      ],
      "byGameWithPercentage": [
        { "game": "Valorant", "amount": 4200, "count": 160, "percentage": 34 },
        { "game": "CS2",      "amount": 3800, "count": 140, "percentage": 30 }
      ]
    },
    "timeGroupedStats": [
      {
        "key": "thisMonth",
        "label": "This month",
        "amount": 320,
        "count": 14,
        "percentage": 3
      }
    ]
  },
  "meta": {
    "version": "1.0",
    "fetchedAt": "2026-06-07T19:09:00.000Z"
  }
}
Описание полей ответаdata.user
id
number

Числовой идентификатор FunPay, возвращается как JSON-число.

username
string

Отображаемое имя.

url
string

Каноничный URL профиля на FunPay.

avatarUrl
string | null

Абсолютный URL аватара пользователя на FunPay или null, если недоступен.

reviewsCount
number

Общее число отзывов, возвращается как JSON-число.

banned
boolean

Признак блокировки на FunPay.

status
string

Произвольный текстовый статус от FunPay.

registrationDate
string | null

Дата регистрации, указанная на профиле FunPay (например, "15 Mar 2020"), или null, если недоступна.

Описание полей ответаdata.stats
totalAmount
number

Выручка за всё время, в USD-эквиваленте (целые единицы).

totalReviews
number

Общее число отзывов.

averagePerReview
number

totalAmount / totalReviews, округлено до 2 знаков.

gamesPlayed
number

Количество разных игр, на которые у пользователя есть отзывы.

byTimePeriod
object

Словарь периодов (thisMonth, lastMonth, 2MonthsAgo, …) → { amount, count }.

byGame
object

Словарь игр → { amount, count }.

byTimePeriodWithPercentage
array

То же, что byTimePeriod, плюс percentage (целое 0–100, округлено).

byGameWithPercentage
array

То же, что byGame, плюс percentage (целое 0–100, округлено).

Описание полей ответаdata.timeGroupedStats[]
key
string

Стабильный машинный идентификатор (thisMonth, lastMonth, …).

label
string

Человекочитаемая подпись периода (на английском).

amount
number

Суммарная выручка в этом бакете.

count
number

Число отзывов в этом бакете.

percentage
number

Доля 0–100 от выручки за всё время.

Описание полей ответаmeta
version
string

Версия API, которой собран ответ (например, "1.0").

fetchedAt
string

ISO-8601 UTC — момент, когда сервер собрал ответ.

Ошибки
400
Тело
{"error":"Username parameter is required"}
Когда

Параметр username пустой.

400
Тело
{"error":"Username cannot be empty"}
Когда

Параметр username состоит только из пробелов.

400
Тело
{"error":"Username too long"}
Когда

Длина username превышает 100 символов.

404
Тело
{"error":"User \"<name>\" not found"}
Когда

Пользователь с таким username не найден в базе.

500
Тело
{"error":"Internal server error","details":"…"}
Когда

Любая другая ошибка — поле details добавляется, если базовое исключение — Error.

GET

/api/v1/funpay/users/{username}/top-positions

Позиции продавца FunPay в топах — глобальные и по играм, с разбивкой по периодам.


Параметры пути
username
string
Обязательный

Имя пользователя FunPay, URL-encoded. Должно быть от 1 до 100 символов.

Параметры запроса
locale
string
Необязательный
По умолчанию: en
Допустимые значения
en
ru

Значение ru — русские подписи периодов; по умолчанию английский.

Пример запроса
GET /api/v1/funpay/users/Russper/top-positions HTTP/1.1
Host: rmthub.com
Accept: application/json

curl 'https://rmthub.com/api/v1/funpay/users/Russper/top-positions'
Пример ответа
{
  "data": {
    "user": {
      "id": 9221663,
      "username": "Russper",
      "url": "https://funpay.com/users/9221663/"
    },
    "summary": {
      "bestGlobalRank": 5,
      "gameCount": 3,
      "positionCount": 12
    },
    "global": [
      {
        "period": "all_time",
        "periodLabel": "All time",
        "rank": 5,
        "totalAmount": 12450,
        "reviewsCount": 482,
        "rankChange": { "diff": 2, "previousRank": 7 },
        "revenueChange": { "diff": 320, "percent": 3 }
      }
    ],
    "byGame": [
      {
        "game": "Valorant",
        "period": "this_month",
        "periodLabel": "This month",
        "rank": 1,
        "totalAmount": 4200,
        "reviewsCount": 160,
        "rankChange": null,
        "revenueChange": null
      }
    ],
    "lastUpdated": "2026-07-14T10:00:00.000Z"
  },
  "meta": {
    "version": "1.0",
    "fetchedAt": "2026-07-14T12:00:00.000Z",
    "total": 12
  }
}
Описание полей ответаdata.user
id
number

Числовой идентификатор FunPay.

username
string

Отображаемое имя.

url
string

Каноничный URL профиля на FunPay.

Описание полей ответаdata.summary
bestGlobalRank
number | null

Лучшая (наименьшая) глобальная позиция в топе или null.

gameCount
number

Число разных игр с позицией в топе продавцов.

positionCount
number

Общее число записей (глобальные + по играм).

Описание полей ответаdata.global[]
period
string

Стабильный ключ (all_time, this_month, last_month, …).

periodLabel
string

Человекочитаемая подпись периода.

rank
number

Позиция в топе (1 — первое место).

totalAmount
number

Выручка в этом бакете топа (USD-эквивалент).

reviewsCount
number

Число отзывов в этом бакете.

rankChange
object | null

Изменение ранга: diff (положительное — улучшение) и previousRank; null, если нет данных.

revenueChange
object | null

Изменение выручки: diff и percent; null, если нет данных.

Описание полей ответаdata.byGame[]
period
string

Стабильный ключ (all_time, this_month, last_month, …).

periodLabel
string

Человекочитаемая подпись периода.

rank
number

Позиция в топе (1 — первое место).

totalAmount
number

Выручка в этом бакете топа (USD-эквивалент).

reviewsCount
number

Число отзывов в этом бакете.

rankChange
object | null

Изменение ранга: diff (положительное — улучшение) и previousRank; null, если нет данных.

revenueChange
object | null

Изменение выручки: diff и percent; null, если нет данных.

game
string

Название игры (только в byGame).

gameSlug
string

URL-slug игры (только в byGame). Опускается, если неизвестен.

Описание полей ответаdata
lastUpdated
string | null

ISO-8601 UTC — момент последней пересборки индекса.

Описание полей ответаmeta
version
string

Версия API, которой собран ответ (например, "1.0").

fetchedAt
string

ISO-8601 UTC — момент, когда сервер собрал ответ.

total
number

Равно data.summary.positionCount.

Ошибки
400
Тело
{"error":"Username parameter is required"}
Когда

Параметр username пустой.

400
Тело
{"error":"Username cannot be empty"}
Когда

Параметр username состоит только из пробелов.

400
Тело
{"error":"Username too long"}
Когда

Длина username превышает 100 символов.

404
Тело
{"error":"No top positions found for user \"<name>\""}
Когда

У продавца нет проиндексированных позиций в топах.

500
Тело
{"error":"Internal server error"}
Когда

Неожиданная ошибка сервера.

GET

/api/v1/funpay/leaderboards/sellers

Пагинированный топ продавцов FunPay — те же рейтинги, что на /funpay?category=top_sellers. Поддерживает all-time и скользящие периоды, фильтр по игре, забаненных и поиск. Cache-Control: public, max-age=3600.

Быстрые примеры:
За всё время
Этот месяц
Забаненные

Параметры запроса
locale
string
Необязательный
Допустимые значения
en
ru

Подписи и URL RMTHub. Без параметра — английский.

period
string
Необязательный
По умолчанию: all_time
Допустимые значения (23)
all_time, banned, this_month, month_ago, 2_months_ago, 3_months_ago, 4_months_ago, 5_months_ago, 6_months_ago, 7_months_ago, 8_months_ago, 9_months_ago, 10_months_ago, 11_months_ago, year_ago, 2_years_ago, 3_years_ago, 4_years_ago, 5_years_ago, 6_years_ago, 7_years_ago, 8_years_ago, 9_years_ago

Срез рейтинга. См. допустимые значения — те же ключи, что filter на /funpay.

gameSlug
string
Необязательный

Фильтр по игре (slug из GET /api/v1/funpay/games). Без параметра — все игры. Игнорируется при period=banned.

game
string
Необязательный

Как gameSlug, но по отображаемому имени. Не используйте вместе с gameSlug.

page
integer
Необязательный
По умолчанию: 1

Номер страницы, с 1.

limit
integer
Необязательный
По умолчанию: 20

Строк на странице. По умолчанию 20, максимум 100.

search
string
Необязательный

Поиск по username или числовому id FunPay.

Пример запроса
GET /api/v1/funpay/leaderboards/sellers HTTP/1.1
Host: rmthub.com
Accept: application/json

curl 'https://rmthub.com/api/v1/funpay/leaderboards/sellers?period=all_time&page=1&limit=20'
Пример ответа
{
  "data": {
    "period": "all_time",
    "periodLabel": "All time",
    "game": null,
    "sellers": [
      {
        "rank": 1,
        "id": 7771234,
        "username": "Roymi",
        "url": "https://funpay.com/users/7771234/",
        "profileUrl": "https://rmthub.com/en/funpay/7771234",
        "totalAmount": 12450,
        "reviewsCount": 482
      }
    ],
    "sourceUrl": "https://rmthub.com/en/funpay?category=top_sellers&filter=all_time&page=1"
  },
  "meta": {
    "version": "1.0",
    "fetchedAt": "2026-07-14T12:00:00.000Z",
    "total": 842,
    "page": 1,
    "limit": 20
  }
}
Описание полей ответаdata
period
string

Стабильный ключ выбранного периода.

periodLabel
string

Человекочитаемая подпись периода для locale.

game
object | null

Фильтр игры { name, slug } или null для всех игр.

sellers
array

Строки продавцов на этой странице.

sourceUrl
string

Каноническая страница RMTHub /funpay для этого рейтинга.

Описание полей ответаdata.game
name
string

Название игры.

slug
string

URL-safe slug игры.

Описание полей ответаdata.sellers[]
rank
number

Место в рейтинге (1 — первое).

id
number

Числовой id FunPay.

username
string

Отображаемое имя.

url
string

Канонический URL профиля FunPay.

profileUrl
string

Страница продавца на RMTHub для выбранного locale.

totalAmount
number

Доход в этом срезе (USD-экв.).

reviewsCount
number

Число отзывов в этом срезе.

Описание полей ответаmeta
version
string

Версия API (например "1.0").

fetchedAt
string

ISO-8601 UTC время формирования ответа.

total
number

Всего продавцов по всем страницам.

page
number

Текущая страница.

limit
number

Размер страницы в этом ответе.

Ошибки
400
Тело
{"error":"Invalid period \"<period>\""}
Когда

Неизвестный period.

400
Тело
{"error":"limit must be between 1 and 100"}
Когда

page или limit вне диапазона.

400
Тело
{"error":"search must be at most 100 characters"}
Когда

search длиннее 100 символов.

404
Тело
{"error":"Game \"<slug>\" not found"}
Когда

gameSlug не найден в каталоге.

404
Тело
{"error":"No leaderboard data for period \"<period>\""}
Когда

Нет предрасчитанного рейтинга для этой комбинации.

429
Тело
{"error":"Rate limit exceeded…"}
Когда

Превышен лимит запросов в минуту или в сутки.

500
Тело
{"error":"Internal server error"}
Когда

Внутренняя ошибка сервера.

GET

/api/v1/funpay/leaderboards/games

Пагинированный топ игр FunPay — те же рейтинги, что на /funpay?category=top_games. category=top_new_games — свежие хиты. Cache-Control: public, max-age=3600.

Быстрые примеры:
Топ игр
Этот месяц
Новые игры

Параметры запроса
locale
string
Необязательный
Допустимые значения
en
ru

Подписи и URL RMTHub. Без параметра — английский.

category
string
Необязательный
По умолчанию: top_games
Допустимые значения
top_games
top_new_games

Какой список игр вернуть. new_games — alias для top_new_games.

period
string
Необязательный
По умолчанию: all_time
Допустимые значения (22)
all_time, this_month, month_ago, 2_months_ago, 3_months_ago, 4_months_ago, 5_months_ago, 6_months_ago, 7_months_ago, 8_months_ago, 9_months_ago, 10_months_ago, 11_months_ago, year_ago, 2_years_ago, 3_years_ago, 4_years_ago, 5_years_ago, 6_years_ago, 7_years_ago, 8_years_ago, 9_years_ago

Период для top_games. При category=top_new_games всегда all_time.

page
integer
Необязательный
По умолчанию: 1

Номер страницы, с 1.

limit
integer
Необязательный
По умолчанию: 20

Строк на странице. По умолчанию 20, максимум 100.

search
string
Необязательный

Поиск по названию игры.

Пример запроса
GET /api/v1/funpay/leaderboards/games HTTP/1.1
Host: rmthub.com
Accept: application/json

curl 'https://rmthub.com/api/v1/funpay/leaderboards/games?period=all_time&page=1&limit=20'
Пример ответа
{
  "data": {
    "category": "top_games",
    "categoryLabel": "Top games",
    "period": "all_time",
    "periodLabel": "All time",
    "games": [
      {
        "rank": 1,
        "game": "Valorant",
        "gameSlug": "valorant",
        "totalAmount": 42000,
        "reviewsCount": 1600
      }
    ],
    "sourceUrl": "https://rmthub.com/en/funpay?category=top_games&filter=all_time&page=1"
  },
  "meta": {
    "version": "1.0",
    "fetchedAt": "2026-07-14T12:00:00.000Z",
    "total": 120,
    "page": 1,
    "limit": 20
  }
}
Описание полей ответаdata
category
string

Ключ категории: top_games или top_new_games.

categoryLabel
string

Человекочитаемая подпись категории.

period
string

Стабильный ключ периода.

periodLabel
string

Человекочитаемая подпись периода.

games
array

Строки игр на этой странице.

sourceUrl
string

Каноническая страница RMTHub /funpay для этого рейтинга.

Описание полей ответаdata.games[]
rank
number

Место в рейтинге (1 — первое).

game
string

Название игры.

gameSlug
string | null

URL-safe slug или null.

totalAmount
number

Сумма отзывов по игре в срезе (USD-экв.).

reviewsCount
number

Число отзывов в срезе.

Описание полей ответаmeta
version
string

Версия API (например "1.0").

fetchedAt
string

ISO-8601 UTC время формирования ответа.

total
number

Всего игр по всем страницам.

page
number

Текущая страница.

limit
number

Размер страницы в этом ответе.

Ошибки
400
Тело
{"error":"Invalid period \"<period>\""}
Когда

Неизвестный period для top_games.

400
Тело
{"error":"category top_new_games only supports period all_time"}
Когда

top_new_games с period отличным от all_time.

400
Тело
{"error":"limit must be between 1 and 100"}
Когда

page или limit вне диапазона.

404
Тело
{"error":"No leaderboard data for period \"<period>\""}
Когда

Нет предрасчитанного рейтинга для периода.

429
Тело
{"error":"Rate limit exceeded…"}
Когда

Превышен лимит запросов в минуту или в сутки.

500
Тело
{"error":"Internal server error"}
Когда

Внутренняя ошибка сервера.

GET

/api/v1/funpay/games

Список всех игр FunPay в каталоге RMTHub с категориями лотов (subfolders). Полный каталог отдаётся одним ответом — удобно для выбора игры, фильтров или офлайн-кэша. Ответы содержат Cache-Control: public, max-age=3600.


Пример запроса
GET /api/v1/funpay/games HTTP/1.1
Host: rmthub.com
Accept: application/json

curl 'https://rmthub.com/api/v1/funpay/games'
Пример ответа
{
  "data": {
    "games": [
      {
        "id": "https://funpay.com/en/lots/3486/",
        "slug": "abyss-of-dungeons",
        "name": "Abyss of Dungeons",
        "nameRu": "Бездна подземелий",
        "url": "https://funpay.com/en/lots/3486/",
        "lastUpdated": "2026-06-18",
        "subfolders": [
          { "name": "Accounts", "nameRu": "Аккаунты", "url": "https://funpay.com/en/lots/3486/" },
          { "name": "Top Up",   "nameRu": "Пополнение", "url": "https://funpay.com/en/lots/3487/" },
          { "name": "Other",    "url": "https://funpay.com/en/lots/3490/" }
        ]
      }
    ]
  },
  "meta": {
    "version": "1.0",
    "fetchedAt": "2026-06-18T14:00:00.000Z",
    "total": 855
  }
}
Описание полей ответаdata.games[]
id
string

Стабильный идентификатор — URL лотов FunPay (совпадает с url). Используйте при ссылке на игру в других API RMTHub.

slug
string

URL-безопасный slug из названия игры. Используйте в GET /api/v1/funpay/games/{gameSlug}/fees и /filters.

name
string

Отображаемое название на FunPay (английский каталог).

nameRu
string

Необязательное русское название из скрапленного RU-каталога FunPay. Пропускается, если недоступно или совпадает с name.

url
string

Каноничный URL лотов игры на FunPay.

lastUpdated
string | null

UTC-календарная дата (YYYY-MM-DD) последнего обновления скraper'ом, или null.

subfolders
array

Категории лотов внутри игры.

subfolders[].name
string

Название категории (например, Accounts, Top Up).

subfolders[].nameRu
string

Необязательное русское название категории. Пропускается, если недоступно или совпадает с subfolders[].name.

subfolders[].url
string

URL страницы лотов этой категории на FunPay.

Описание полей ответаmeta
version
string

Версия API, которой собран ответ (например, "1.0").

fetchedAt
string

ISO-8601 UTC — момент, когда сервер собрал ответ.

total
number

Число игр в data.games.

Ошибки
429
Тело
{"error":"Rate limit exceeded…"}
Когда

Превышен лимит запросов в минуту или в сутки.

500
Тело
{"error":"Internal server error"}
Когда

Неожиданная ошибка сервера.

GET

/api/v1/funpay/games/{gameSlug}/fees

Комиссии FunPay по категориям лотов внутри одной игры. Только по slug игры (~3–15 строк). Не массовая выгрузка всей коллекции fees. Cache-Control: public, max-age=3600.


Параметры пути
gameSlug
string
Обязательный

URL-безопасный slug (например, abyss-of-dungeons). От 1 до 200 символов.

Пример запроса
GET /api/v1/funpay/games/abyss-of-dungeons/fees HTTP/1.1
Host: rmthub.com
Accept: application/json

curl 'https://rmthub.com/api/v1/funpay/games/abyss-of-dungeons/fees'
Пример ответа
{
  "data": {
    "game": {
      "id": "https://funpay.com/en/lots/3486/",
      "slug": "abyss-of-dungeons",
      "name": "Abyss of Dungeons",
      "nameRu": "Бездна подземелий",
      "url": "https://funpay.com/en/lots/3486/",
      "lastUpdated": "2026-06-18",
      "subfolders": [
        { "name": "Accounts", "nameRu": "Аккаунты", "url": "https://funpay.com/en/lots/3486/" },
        { "name": "Top Up",   "nameRu": "Пополнение", "url": "https://funpay.com/en/lots/3487/" }
      ]
    },
    "fees": [
      {
        "subfolder": "Accounts",
        "subfolderRu": "Аккаунты",
        "subfolderUrl": "https://funpay.com/en/lots/3486/",
        "feePercent": 14.89,
        "lastUpdated": "2026-06-17"
      }
    ]
  },
  "meta": {
    "version": "1.0",
    "fetchedAt": "2026-06-18T14:00:00.000Z",
    "total": 3
  }
}
Описание полей ответаdata.game
id
string

Стабильный идентификатор — URL лотов FunPay (совпадает с url).

slug
string

URL-безопасный slug из названия игры.

name
string

Отображаемое название на FunPay (английский каталог).

nameRu
string

Необязательное русское название из скрапленного RU-каталога FunPay. Пропускается, если недоступно или совпадает с name.

url
string

Каноничный URL лотов игры на FunPay.

lastUpdated
string | null

UTC-календарная дата (YYYY-MM-DD) последнего обновления, или null.

subfolders
array

Категории лотов внутри игры.

subfolders[].name
string

Название категории (например, Accounts, Top Up).

subfolders[].nameRu
string

Необязательное русское название категории. Пропускается, если недоступно или совпадает с subfolders[].name.

subfolders[].url
string

URL страницы лотов этой категории на FunPay.

Описание полей ответаdata.fees[]
subfolder
string

Название категории (например, Accounts, Top Up).

subfolderRu
string

Необязательное русское название категории. Пропускается, если недоступно или совпадает с subfolder.

subfolderUrl
string | null

URL страницы лотов этой категории на FunPay или null.

feePercent
number | null

Комиссия FunPay в процентах (например, 14.89 = 14.89%), или null если ещё не собрано.

lastUpdated
string | null

UTC-календарная дата (YYYY-MM-DD) последнего сбора, или null.

Описание полей ответаmeta
version
string

Версия API, которой собран ответ (например, "1.0").

fetchedAt
string

ISO-8601 UTC — момент, когда сервер собрал ответ.

total
number

Число строк в data.fees.

Ошибки
404
Тело
{"error":"Game \"<slug>\" not found"}
Когда

Игра с таким slug не найдена в каталоге.

500
Тело
{"error":"Internal server error"}
Когда

Неожиданная ошибка сервера.

GET

/api/v1/funpay/games/{gameSlug}/filters

Собранные опции фильтров лотов FunPay — серверы, регионы, типы предметов и т.д. Без category возвращает data.categories по категориям лотов; с category — data.selects только для указанной категории. Cache-Control: public, max-age=86400.


Параметры пути
gameSlug
string
Обязательный

URL-безопасный slug (например, lineage-2-free). От 1 до 200 символов.

Параметры запроса
category
string
Необязательный

Необязательное название категории лотов (например, Adena). Должно совпадать с категорией из каталога игры.

Пример запроса
GET /api/v1/funpay/games/lineage-2-free/filters HTTP/1.1
Host: rmthub.com
Accept: application/json

curl 'https://rmthub.com/api/v1/funpay/games/lineage-2-free/filters'
Пример ответа
{
  "data": {
    "game": {
      "id": "https://funpay.com/en/chips/10/",
      "slug": "lineage-2-free",
      "name": "Lineage 2 Free",
      "nameRu": "Lineage 2 Бесплатный",
      "url": "https://funpay.com/en/chips/10/",
      "lastUpdated": "2026-07-03",
      "subfolders": [
        { "name": "Adena",    "nameRu": "Адена",    "url": "https://funpay.com/en/chips/10/" },
        { "name": "Accounts", "nameRu": "Аккаунты", "url": "https://funpay.com/en/lots/11/" },
        { "name": "Items",    "nameRu": "Предметы", "url": "https://funpay.com/en/lots/3/" }
      ]
    },
    "categories": {
      "Adena": {
        "Server": ["Aden.land x20", "Asterios.tm Prime x1"]
      },
      "Accounts": {
        "Server": ["Aden.land x20"],
        "Race": ["Human", "Elf"]
      },
      "Items": {
        "Item type": ["Armor Sets", "Weapon", "Armor"]
      }
    },
    "categoryNamesRu": {
      "Adena": "Адена",
      "Accounts": "Аккаунты",
      "Items": "Предметы"
    },
    "categoriesRu": {
      "Adena": {
        "Сервер": ["Aden.land x20", "Asterios.tm Prime x1"]
      },
      "Accounts": {
        "Сервер": ["Aden.land x20"],
        "Раса": ["Human", "Elf"]
      },
      "Items": {
        "Тип предмета": ["Armor Sets", "Weapon", "Armor"]
      }
    }
  },
  "meta": {
    "version": "1.0",
    "fetchedAt": "2026-07-03T14:00:00.000Z",
    "total": 3
  }
}
Описание полей ответаdata.game
id
string

Стабильный идентификатор — URL лотов FunPay (совпадает с url).

slug
string

URL-безопасный slug из названия игры.

name
string

Отображаемое название на FunPay (английский каталог).

nameRu
string

Необязательное русское название из скрапленного RU-каталога FunPay. Пропускается, если недоступно или совпадает с name.

url
string

Каноничный URL лотов игры на FunPay.

lastUpdated
string | null

UTC-календарная дата (YYYY-MM-DD) последнего обновления, или null.

subfolders
array

Категории лотов внутри игры.

subfolders[].name
string

Название категории (например, Accounts, Top Up).

subfolders[].nameRu
string

Необязательное русское название категории. Пропускается, если недоступно или совпадает с subfolders[].name.

subfolders[].url
string

URL страницы лотов этой категории на FunPay.

Описание полей ответаdata
categories
object

Если category не передан. Словарь «категория лота → фильтры» (английские ключи).

categoryNamesRu
object

Если category не передан и доступны русские названия категорий. Карта «английское название категории → русское».

categoriesRu
object

Если category не передан и есть скрапленные RU-фильтры. Та же структура, что categories, с русскими названиями измерений фильтров.

category
string

Если передан query-параметр category. Эхо запрошенной категории лота (английское название).

categoryRu
string

Если передан category и доступно русское название категории.

selects
object

Если передан query-параметр category. Английское имя фильтра → опции для этой категории.

selectsRu
object

Если передан category и есть скрапленные RU-фильтры. Русское имя фильтра → опции.

Описание полей ответаmeta
version
string

Версия API, которой собран ответ (например, "1.0").

fetchedAt
string

ISO-8601 UTC — момент, когда сервер собрал ответ.

total
number

Без category: число категорий в data.categories. С category: число опций в data.selects.

Ошибки
400
Тело
{"error":"Category \"<name>\" not found for this game"}
Когда

category не совпадает ни с одной категорией лотов этой игры.

404
Тело
{"error":"Game \"<slug>\" not found"}
Когда

Игра с таким slug не найдена в каталоге.

500
Тело
{"error":"Internal server error"}
Когда

Неожиданная ошибка сервера.

G2G

GET

/api/v1/g2g/games

Список всех игр на маркетплейсе G2G — от World of Warcraft и CS2 до мобильных проектов. У каждой игры есть slug для запросов категорий и фильтров. Порядок по популярности (число офферов), данные обновляются из индекса RMTHub. Бесплатно, без ключа API.


Пример запроса
GET /api/v1/g2g/games HTTP/1.1
Host: rmthub.com
Accept: application/json

curl 'https://rmthub.com/api/v1/g2g/games'
Пример ответа
{
  "data": {
    "games": [
      {
        "name": "World of Warcraft",
        "slug": "world-of-warcraft",
        "lastUpdated": "2026-06-18"
      }
    ]
  },
  "meta": {
    "version": "1.0",
    "fetchedAt": "2026-06-18T14:00:00.000Z",
    "total": 1200
  }
}
Описание полей ответаdata.games[]
name
string

Название игры, как на G2G и в маркет-индексе RMTHub.

slug
string

URL-безопасный slug. Используйте в GET /api/v1/g2g/games/{gameSlug}/categories и /filters.

lastUpdated
string | null

Дата последнего обновления индекса (YYYY-MM-DD, UTC) или null.

Описание полей ответаmeta
version
string

Версия API, которой собран ответ.

fetchedAt
string

ISO-8601 UTC — момент сборки ответа.

total
number

Число игр в data.games.

Ошибки
429
Тело
{"error":"Rate limit exceeded…"}
Когда

Превышен лимит запросов в минуту или сутки.

500
Тело
{"error":"Internal server error"}
Когда

Неожиданная ошибка сервера.

GET

/api/v1/g2g/games/{gameSlug}/categories

Что можно купить по игре на G2G: золото, аккаунты, предметы, буст и другие услуги. Для каждой категории — ссылка на страницу G2G и id для запроса фильтров.


Параметры пути
gameSlug
string
Обязательный

URL-безопасный slug игры (как в эндпоинте списка игр).

Пример запроса
GET /api/v1/g2g/games/world-of-warcraft/categories HTTP/1.1
Host: rmthub.com
Accept: application/json

curl 'https://rmthub.com/api/v1/g2g/games/world-of-warcraft/categories'
Пример ответа
{
  "data": {
    "game": {
      "slug": "world-of-warcraft",
      "name": "World of Warcraft",
      "lastUpdated": "2026-06-18"
    },
    "categories": [
      {
        "seoTerm": "wow-gold",
        "label": "Game coins",
        "marketingTitle": "WoW Gold",
        "url": "https://www.g2g.com/categories/wow-gold"
      }
    ]
  },
  "meta": {
    "version": "1.0",
    "fetchedAt": "2026-06-18T14:00:00.000Z",
    "total": 4
  }
}
Описание полей ответаdata.game
name
string

Название игры, как на G2G и в маркет-индексе RMTHub.

slug
string

URL-безопасный slug. Используйте в GET /api/v1/g2g/games/{gameSlug}/categories и /filters.

lastUpdated
string | null

Дата последнего обновления индекса (YYYY-MM-DD, UTC) или null.

Описание полей ответаdata.categories[]
seoTerm
string

Id категории для эндпоинта фильтров (например, wow-gold, wow-item).

label
string

Краткая метка (Game coins, Accounts и т. п.).

marketingTitle
string | null

Маркетинговое название на английском или null.

url
string

Канонический URL категории G2G.

Описание полей ответаmeta
version
string

Версия API.

fetchedAt
string

ISO-8601 UTC — момент сборки ответа.

total
number

Число категорий в data.categories.

Ошибки
404
Тело
{"error":"Game \"<slug>\" not found"}
Когда

Игра с таким slug не найдена.

500
Тело
{"error":"Internal server error"}
Когда

Неожиданная ошибка сервера.

GET

/api/v1/g2g/games/{gameSlug}/filters

Те же выпадающие фильтры, что видит покупатель на G2G: серверы, типы предметов, виды буста и вложенные варианты (например, тип оружия → класс персонажа). Один запрос возвращает все категории игры; региональные категории включают все рынки (EU, US и т. п.).


Параметры пути
gameSlug
string
Обязательный

URL-безопасный slug игры (как в эндпоинте списка игр).

Пример запроса
GET /api/v1/g2g/games/world-of-warcraft/filters HTTP/1.1
Host: rmthub.com
Accept: application/json

curl 'https://rmthub.com/api/v1/g2g/games/world-of-warcraft/filters'
Пример ответа
{
  "data": {
    "game": {
      "slug": "world-of-warcraft",
      "name": "World of Warcraft",
      "lastUpdated": "2026-06-18"
    },
    "categories": {
      "wow-gold": {
        "regions": [
          {
            "code": "EU",
            "name": "Europe",
            "relations": [
              {
                "label": "Server",
                "options": [{ "value": "Aegwynn [EU] - Alliance" }]
              }
            ]
          }
        ]
      },
      "wow-boosting-service": {
        "relations": [
          {
            "label": "Service Type",
            "options": [{ "value": "Powerleveling" }]
          }
        ]
      }
    }
  },
  "meta": {
    "version": "1.0",
    "fetchedAt": "2026-06-18T14:00:00.000Z",
    "total": 42
  }
}
Описание полей ответаdata.game
name
string

Название игры, как на G2G и в маркет-индексе RMTHub.

slug
string

URL-безопасный slug. Используйте в GET /api/v1/g2g/games/{gameSlug}/categories и /filters.

lastUpdated
string | null

Дата последнего обновления индекса (YYYY-MM-DD, UTC) или null.

Описание полей ответаdata
categories
object

Объект id категории (seoTerm) → фильтры. Ключи совпадают с эндпоинтом категорий.

Описание полей ответаdata.categories.*
regions
array

Для региональных категорий (голда, предметы, аккаунты). По записи на каждый рынок.

relations
array

Для категорий без регионального разделения (например буст).

Описание полей ответаdata.categories.*.regions[]
code
string

Код региона (EU, US и т. п.).

name
string

Отображаемое название (Europe, United States и т. п.).

relations
array

Измерения фильтров для этого региона.

Описание полей ответаdata.categories.*.relations[]
label
string

Название измерения (Item Type, Server и т. п.).

options
array

Доступные значения для этого измерения.

Описание полей ответаdata.categories.*.relations[].options[]
value
string

Отображаемая метка.

options
array

Вложенные подопции для групповых фильтров (например типы буста); для конечных значений опускается.

Описание полей ответаmeta
version
string

Версия API.

fetchedAt
string

ISO-8601 UTC — момент сборки ответа.

total
number

Общее число верхнеуровневых опций фильтров по всем категориям и регионам.

Ошибки
404
Тело
{"error":"Game \"<slug>\" not found"}
Когда

Игра с таким slug не найдена.

500
Тело
{"error":"Internal server error"}
Когда

Неожиданная ошибка сервера.